Как обработать предварительный просмотр камеры из другого действия на методе onPause ()? - PullRequest
0 голосов
/ 03 ноября 2011

mPreview является объектом CameraActivity.и я запускаю вид из камеры из моей основной деятельности.Теперь в MainActivity есть метод onPause ().

RightNow это так:

protected void onPause() {
   super.onPause();
   if (counter>=2) {
        System.exit(0);
   }
}

Но с этим кодом.Мое приложение получит выход, если оно перейдет в состояние паузы.Я хочу снова запустить Моё приложение, если пользователь вернется из паузы устройства.

Так что для этого у меня есть Реализация этого кода:

    protected void onPause() {
        super.onPause();
        if (counter>=2) {
            //System.exit(0);
            try {
                if (mPreview.mCamera!=null) {
                    mPreview.mCamera.stopPreview();  
                    mPreview.isPreviewRunning=false;
                    mPreview.mCamera.release();
                }
            } catch (Exception e) {
                Log.e("Camera", e.getMessage());
            }
            //mPreview.mCamera.stopPreview();
        }
        else{
//          mPreview.mCamera.startPreview();
            mPreview.isPreviewRunning=false;
        }
    }
}

Но с этим кодом, иногда я получаю свойсбой приложения.Так где я ошибаюсь, чтобы реализовать это ??

Трассировка стека:

11-03 12:26:21.748: ERROR/AndroidRuntime(4295): FATAL EXCEPTION: main
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): java.lang.RuntimeException: Method called after release()
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at android.hardware.Camera.setHasPreviewCallback(Native Method)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at android.hardware.Camera.access$600(Camera.java:114)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at android.hardware.Camera$EventHandler.handleMessage(Camera.java:472)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at android.os.Looper.loop(Looper.java:123)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at android.app.ActivityThread.main(ActivityThread.java:4633)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at java.lang.reflect.Method.invokeNative(Native Method)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at java.lang.reflect.Method.invoke(Method.java:521)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295):     at dalvik.system.NativeStart.main(Native Method)
11-03 12:26:21.758: WARN/ActivityManager(171):   Force finishing activity de.offis.magic.core/.GLCamTest

Спасибо.

Ответы [ 2 ]

1 голос
/ 26 декабря 2012

@ Переопределить общедоступный void surfaceDestroyed (SurfaceHolder surfaceHolder) {

    this.getHolder().removeCallback(this);
    mCamera.stopPreview();
    mCamera.release();
    mCamera = null;
  Log.e("surfaceDestroyed", "surfaceDestroyed");
}

И повторно инициализировать камеру при включенной функции возобновления.

0 голосов
/ 03 ноября 2011

Попробуйте вызвать super.onPause ();после остановки предварительного просмотра и отпускания ручки.Это работает для меня.

...