#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 вверху есть комментарий об управлении объектами камеры и поверхности на разных этапах жизненного цикла приложения. (Это может быть сложно сделать правильно.)