Android 安卓:当活动进入后台时,如何使用摄像头?

Android 安卓:当活动进入后台时,如何使用摄像头?,android,camera,Android,Camera,当我的活动进入背景时,我如何释放相机?(例如,按手机上的待机按钮) 日志: 02-20 11:46:40.040: E/AndroidRuntime(26439): FATAL EXCEPTION: main 02-20 11:46:40.040: E/AndroidRuntime(26439): java.lang.RuntimeException: Unable to resume activity {spicysoftware.spicytaschenlampe/spicysoftware

当我的活动进入背景时,我如何释放相机?(例如,按手机上的待机按钮)

日志:

02-20 11:46:40.040: E/AndroidRuntime(26439): FATAL EXCEPTION: main
02-20 11:46:40.040: E/AndroidRuntime(26439): java.lang.RuntimeException: Unable to resume activity {spicysoftware.spicytaschenlampe/spicysoftware.spicytaschenlampe.FlashLight}: java.lang.RuntimeException: Fail to connect to camera service
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2616)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2644)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2130)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.app.ActivityThread.access$600(ActivityThread.java:140)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.os.Looper.loop(Looper.java:137)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.app.ActivityThread.main(ActivityThread.java:4898)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at java.lang.reflect.Method.invokeNative(Native Method)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at java.lang.reflect.Method.invoke(Method.java:511)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at dalvik.system.NativeStart.main(Native Method)
02-20 11:46:40.040: E/AndroidRuntime(26439): Caused by: java.lang.RuntimeException: Fail to connect to camera service
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.hardware.Camera.native_setup(Native Method)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.hardware.Camera.<init>(Camera.java:353)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.hardware.Camera.open(Camera.java:330)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at spicysoftware.spicytaschenlampe.FlashLight.onResume(FlashLight.java:182)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.app.Activity.performResume(Activity.java:5280)
02-20 11:46:40.040: E/AndroidRuntime(26439):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2606)
02-20 11:46:40.040: E/AndroidRuntime(26439):    ... 12 more
在onResume中打开相机会使应用程序崩溃

致意
MSeiz5

在onResume中重新打开并重置相机

@Override
protected void onResume(){
 super.onResume();
 camera = Camera.open();

 // We resumed so lock the camera
 Camera.Parameters params = camera.getParameters();

 params.setFlashMode(Parameters.FLASH_MODE_ON);
 //params.setFocusMode(Parameters.FOCUS_MODE_AUTO);
 //params.setWhiteBalance(Parameters.WHITE_BALANCE_AUTO);
 params.setJpegQuality(100);

 camera.setParameters(params);
 ImageView overlay = (ImageView) findViewById(R.id.ImageView01);
 overlay.bringToFront();
}

在onResume中重新打开并重置相机

@Override
protected void onResume(){
 super.onResume();
 camera = Camera.open();

 // We resumed so lock the camera
 Camera.Parameters params = camera.getParameters();

 params.setFlashMode(Parameters.FLASH_MODE_ON);
 //params.setFocusMode(Parameters.FOCUS_MODE_AUTO);
 //params.setWhiteBalance(Parameters.WHITE_BALANCE_AUTO);
 params.setJpegQuality(100);

 camera.setParameters(params);
 ImageView overlay = (ImageView) findViewById(R.id.ImageView01);
 overlay.bringToFront();
}

您可以释放它,但在恢复时它必须抛出空指针,因为摄影机对象为空。请在使用它之前重新初始化它,它将与您在创建时一样。

您可以释放它,但在恢复时它必须抛出空指针,因为摄影机对象为空。请在使用它之前重新初始化它,它将为空就像onCreate一样。

谢谢您的快速回答。请检查我的简历和我添加的日志。它在cam=Camera.open()处崩溃;我不知道为什么…你在别的地方打开相机了吗?如果没有,请尝试重新启动设备。native_设置中的连接错误通常是由未发布的摄像头引起的。你能多放一点日志吗,包括那些由CameraService等编写的日志。我找到了一种处理方法!我在问题处发布了工作代码。所以实际上你添加了一个if-else来检查cam是否为null?谢谢你的快速回答。请检查我的简历和我添加的日志。它在cam=Camera.open()处崩溃;我不知道为什么…你在别的地方打开相机了吗?如果没有,请尝试重新启动设备。native_设置中的连接错误通常是由未发布的摄像头引起的。你能多放一点日志吗,包括那些由CameraService等编写的日志。我找到了一种处理方法!我在问题处发布了工作代码。所以实际上你添加了一个if-else来检查cam是否为null?
@Override
protected void onResume(){
 super.onResume();
 camera = Camera.open();

 // We resumed so lock the camera
 Camera.Parameters params = camera.getParameters();

 params.setFlashMode(Parameters.FLASH_MODE_ON);
 //params.setFocusMode(Parameters.FOCUS_MODE_AUTO);
 //params.setWhiteBalance(Parameters.WHITE_BALANCE_AUTO);
 params.setJpegQuality(100);

 camera.setParameters(params);
 ImageView overlay = (ImageView) findViewById(R.id.ImageView01);
 overlay.bringToFront();
}