Мое приложение для фонарика продолжает сбой при включении света и переходе на рабочий экран, или с помощью кнопки «Назад», или даже когда я включаю экран, он не сработает сразу ; когда я вернусь в приложение, я нажимаю кнопку, чтобы выключить/включить свет, и он падает с этими лог-котами;Приложение для фонарика продолжает сбой при работе на домашнем экране
01-31 09:26:07.094: E/AndroidRuntime(16941): FATAL EXCEPTION: main
01-31 09:26:07.094: E/AndroidRuntime(16941): java.lang.RuntimeException: Method called after release()
01-31 09:26:07.094: E/AndroidRuntime(16941): at android.hardware.Camera.native_setParameters(Native Method)
01-31 09:26:07.094: E/AndroidRuntime(16941): at android.hardware.Camera.setParameters(Camera.java:1492)
01-31 09:26:07.094: E/AndroidRuntime(16941): at de.vogella.android.notificationmanager.NotificationReceiverActivity.onClick(NotificationReceiverActivity.java:67)
01-31 09:26:07.094: E/AndroidRuntime(16941): at android.view.View.performClick(View.java:4192)
01-31 09:26:07.094: E/AndroidRuntime(16941): at android.view.View$PerformClick.run(View.java:17254)
01-31 09:26:07.094: E/AndroidRuntime(16941): at android.os.Handler.handleCallback(Handler.java:615)
01-31 09:26:07.094: E/AndroidRuntime(16941): at android.os.Handler.dispatchMessage(Handler.java:92)
01-31 09:26:07.094: E/AndroidRuntime(16941): at android.os.Looper.loop(Looper.java:137)
01-31 09:26:07.094: E/AndroidRuntime(16941): at android.app.ActivityThread.main(ActivityThread.java:4950)
01-31 09:26:07.094: E/AndroidRuntime(16941): at java.lang.reflect.Method.invokeNative(Native Method)
01-31 09:26:07.094: E/AndroidRuntime(16941): at java.lang.reflect.Method.invoke(Method.java:511)
01-31 09:26:07.094: E/AndroidRuntime(16941): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
01-31 09:26:07.094: E/AndroidRuntime(16941): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
01-31 09:26:07.094: E/AndroidRuntime(16941): at dalvik.system.NativeStart.main(Native Method)
И это мои методы;
public void onClick(View v) {
// TODO Auto-generated method stub
if (camOn == false) {
cam = Camera.open();
para = cam.getParameters();
para.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(para);
Log.i(CLASSNAME, "AA1 "+camOn);
camOn = true;
Log.i(CLASSNAME, "AA2 "+camOn);
}
else {
para.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(para);
cam.release();
//cam = null;
Log.i(CLASSNAME, "BB1 "+camOn);
camOn = false;
Log.i(CLASSNAME, "BB2 "+camOn);
}
}
@Override
protected void onPause() {
super.onPause();
// TODO Auto-generated method stub
cam.release();
// cam=cam;
// finish();*/
}
@Override
protected void onStop() {
super.onStop();
cam.release();
}
@Override
protected void onDestroy() {
super.onDestroy();
cam.release();
}
protected void onResume() {
super.onResume();
}
}
На самом деле, когда у меня был свет, и я закрыл приложение, он разбился, и все было в порядке, так что я сделал, реализую open() внутри onResume(), но внутри на клике, если (camOn == false) {я сначала закрыть его, а затем открыть его снова, где он только что открыл; if (camOn == false) { \t cam.release(); cam = Camera.open(); –