сбой приложения surface view onResume

#android #android-camera #surfaceview #onactivityresult #surfaceholder

#Android #android-камера #surfaceview #onactivityresult #поверхностный держатель

Вопрос:

Я работаю с распознаванием голоса и просмотром поверхности в своем приложении, и мое приложение выходит из строя, когда я нажимаю кнопку «Домой», и когда я снова запускаю приложение в фоновом режиме, оно выходит из строя…

Вот моя проблема… 1) если я открываю камеру в onCreate() методе и закрываю камеру в onPause() методе, и когда я запускаю приложение сзади, оно выходит из строя

2) если я введу только код открытия камеры onResume() , то камера не запустится после onActivityResult() этого, потому что у нее конфликтующий код.

3) если я помещаю открытие камеры в код как в, так onCreate() и onResume() в сбой приложения, потому что объект камеры уже занят, а затем снова запрашиваю ресурс камеры onResume() , что приводит к ошибке нулевого указателя.

как я могу решить эту проблему? любая помощь будет очень признательна.

логкэт:

 06-20 14:54:17.452: E/AndroidRuntime(24570): FATAL EXCEPTION: main
06-20 14:54:17.452: E/AndroidRuntime(24570): java.lang.NullPointerException
06-20 14:54:17.452: E/AndroidRuntime(24570):    at com.client.mirrorapp.CameraPreview.surfaceCreated(CameraPreview.java:43)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at android.view.SurfaceView.updateWindow(SurfaceView.java:554)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at android.view.SurfaceView.access$000(SurfaceView.java:81)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:169)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:693)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1762)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2642)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at android.os.Looper.loop(Looper.java:154)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at android.app.ActivityThread.main(ActivityThread.java:4624)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at java.lang.reflect.Method.invokeNative(Native Method)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at java.lang.reflect.Method.invoke(Method.java:511)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
06-20 14:54:17.452: E/AndroidRuntime(24570):    at dalvik.system.NativeStart.main(Native Method)
 

Комментарии:

1. «сбой приложения» указывает на то, что вы должны взглянуть на Stacktrace и опубликовать его в своем вопросе.

2. @keyboardsurfer обновил ошибку logcat для 2 (второго) условия..

3. Поместите свой код oncreate в метод onresume я думаю, что вы создали surfaceview в oncreate, поэтому он выдает ошибку в методе onresume. создайте вид поверхности в методе onresume.

4. @user1632209 пожалуйста, обратитесь ко второму кодированию, в котором у меня есть конфликтный код в onActivityResult и в onResume, кроме того, что-либо еще…

5. В Grafika есть различные примеры camera SurfaceView ( github.com/google/grafika ). В частности, в классе TextureFromCameraActivity вверху есть комментарий об управлении объектами камеры и поверхности на разных этапах жизненного цикла приложения. (Это может быть сложно сделать правильно.)