最初に、私はこの問題を広範囲に調査したことを言いたいと思います。このサイト (および他のサイト) にはかなりの数の解決策が提示されていますが、どれもうまくいきませんでした。
写真を撮ると、ユーザーはアプリケーションで Exif タグを写真に追加できます。データを追加した後、ユーザーがカメラに戻って写真を撮り続けられるようにしたいと考えています。ただし、カメラ アクティビティに戻ってjava.lang.RunTimeException: Method called after release()
別の写真を撮ろうとすると、前述のエラーが発生します。
これは、カメラをリリースした後にカメラを使用しようとしていることが原因であり、Android API に従って、メソッドopen()
でカメラを再設定する必要があることが原因であることがわかりました。onResume()
ただし、これを行うとFailed to connect to camera service
エラーが発生します。多くの人がメソッドに配置mCamera.setPreviewCallback(null)
することも提案していonResume()
ますが、これもエラーを引き起こしMethod called after release()
ます。
これが私のlogCatです:
01-04 10:03:08.187: E/AndroidRuntime(1876): FATAL EXCEPTION: main
01-04 10:03:08.187: E/AndroidRuntime(1876): java.lang.RuntimeException: Method called
after release()
01-04 10:03:08.187: E/AndroidRuntime(1876): at android.hardware.Camera.native_takePicture(Native Method)
01-04 10:03:08.187: E/AndroidRuntime(1876): at android.hardware.Camera.takePicture(Camera.java:789)
01-04 10:03:08.187: E/AndroidRuntime(1876): at android.hardware.Camera.takePicture(Camera.java:753)
01-04 10:03:08.187: E/AndroidRuntime(1876): at com.example.unititest.CameraActivity$6.onClick(CameraActivity.java:180)
01-04 10:03:08.187: E/AndroidRuntime(1876): at android.view.View.performClick(View.java:2485)
01-04 10:03:08.187: E/AndroidRuntime(1876): at android.view.View$PerformClick.run(View.java:9080)
01-04 10:03:08.187: E/AndroidRuntime(1876): at android.os.Handler.handleCallback(Handler.java:587)
01-04 10:03:08.187: E/AndroidRuntime(1876): at android.os.Handler.dispatchMessage(Handler.java:92)
01-04 10:03:08.187: E/AndroidRuntime(1876): at android.os.Looper.loop(Looper.java:123)
01-04 10:03:08.187: E/AndroidRuntime(1876): at android.app.ActivityThread.main(ActivityThread.java:3687)
01-04 10:03:08.187: E/AndroidRuntime(1876): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 10:03:08.187: E/AndroidRuntime(1876): at java.lang.reflect.Method.invoke(Method.java:507)
01-04 10:03:08.187: E/AndroidRuntime(1876): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
01-04 10:03:08.187: E/AndroidRuntime(1876): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-04 10:03:08.187: E/AndroidRuntime(1876): at dalvik.system.NativeStart.main(Native Method)
エラーがスローされる場所:
// Add a listener to the Capture button
Button captureButton = (Button) findViewById(R.id.button_capture);
captureButton.setOnClickListener(
new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//Picture is taken and saved to file
//ERROR IS THROWN HERE
mCamera.takePicture(null, null, mPicture);
}
}
);