我想lockCanvas(),因爲我想在預覽前修改相機圖片。我在onPreviewFrame上執行。onPreviewFrame和異常鎖定表面
代碼是在這裏:
public class MyPreview implements Camera.PreviewCallback {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Log.d("Camera", "Got a camera frame");
Canvas c = null;
try {
c = mCamSH.lockCanvas(null);
Log.d("SOMETHING", "Got Bitmap");
} finally {
if (c != null) {
mCamSH.unlockCanvasAndPost(c);
}
}
}
} //public class MyPreview implements Camera.PreviewCallback
不幸的是我總是得到一個循環這個錯誤,問題是與C = mCamSH.lockCanvas(NULL); :
E/SurfaceHolder﹕ Exception locking surface
java.lang.IllegalArgumentException
at android.view.Surface.lockCanvasNative(Native Method)
at android.view.Surface.lockCanvas(Surface.java:76)
at android.view.SurfaceView$4.internalLockCanvas(SurfaceView.java:831)
at android.view.SurfaceView$4.lockCanvas(SurfaceView.java:811)
at cz.mrp.camera.CamActivity$MyPreview.onPreviewFrame(CamActivity.java:100)
at android.hardware.Camera$EventHandler.handleMessage(Camera.java:773)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4517)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
at dalvik.system.NativeStart.main(Native Method)
整個代碼是在這裏:http://pastebin.com/WJs1kyfq
使用GT-S7562設備上的Android 4.0.4。
我已經嘗試過在StackOverflow上搜索並使用谷歌,但沒有找到任何可以幫助我的東西。感謝您的時間!
我面臨同樣的問題,但它只發生在S8 /你是如何解決這個問題的? – 2017-08-07 11:17:58