Grafika の ContinuousCaptureActivity を参考に、MediaCodec で動画を録画するデモを実装しました。ほとんどの場合、デモは正常に動作しましたが、戻るキーを押すと GT-I9500 デバイスでクラッシュしました(アクティビティが破棄されたと仮定したため、このクラッシュは検出できませんでした。「adb shell ps」を使用してデモ プロセスの存在を確認しました)。その後、ソース コードを繰り返しチェックしたところ、コードが grafika の ContinuousCaptureActivity とほぼ同じであることがわかりました。そこで、次のことを行いました。
GT-I9500 デバイスに grafika の apk をインストールし、ContinuousCaptureActivity を起動してから、携帯電話の戻るキーを押しましたが、アプリケーションはクラッシュせず、grafika が正常に動作することがわかりました。
コードをもう一度確認しましたが、疑わしいものは何も見つかりませんでした。
新しい Android プロジェクトを作成し、Grafika から ContinuousCaptureActivity.java と AndroidManifest.xml、activity_continuous_capture.xml などのその他の必要なファイルを新しいプロジェクトにコピーしました。AndroidManifest.xml を変更して、ContinuousCaptureActivity をメイン アクティビティにしました。コードをコンパイルし、APK を GT-I9500 デバイスにインストールしました。同じことが起こりました。戻るキーを押した後、アプリケーションがクラッシュしました!!!
私はこの問題に本当に困惑しています。なぜ grafika は正常に動作したのに、新しいプロジェクトの同じコードがクラッシュしたのですか? とにかく、grafika が正常に動作したため、デモのクラッシュに対する解決策があると思います。誰かアドバイスをくれませんか?
私が提供できる情報は次のとおりです。
アプリケーションをデバッグし、クラッシュの原因となった正確なコードを見つけました。コードはhttps://github.com/google/grafika/blob/master/src/com/android/grafika/gles/EglCore.java#L191です
クラッシュは非常にひどいもので、tombstone ファイルは生成されず、adb ログは制限されていました。
06-15 14:39:33.853 I/ActivityManager( 771): プロセス com.example.grafikaaa (pid 13138) (adj 1) が停止しました。
06-15 14:39:33.853 W/ActivityManager( 771): 強制的に ActivityRecord を削除します{42a876c8 u0 com.example.grafikaaa/.ContinuousCaptureActivity}: アプリが停止し、状態が保存されていません .... ....
06-15 14:39:33.903 D/Zygote (209): プロセス 13138 がシグナルによって終了しました (11)
- grafika の GlesInfoActivity で表示される自分のデバイスの情報は次のとおりです。
===== GL Information ===== vendor : Qualcomm version : OpenGL ES 3.0 V@45.0 AU@ (CL@4169980) renderer : Adreno (TM) 320 extensions: GL_AMD_compressed_ATC_texture GL_AMD_performance_monitor GL_AMD_program_binary_Z400 GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_robustness GL_EXT_sRGB GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_type_2_10_10_10_REV GL_NV_fence GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object GL_OES_vertex_half_float GL_OES_vertex_type_10_10_10_2 GL_QCOM_alpha_test GL_QCOM_binning_control GL_QCOM_driver_control GL_QCOM_extended_get GL_QCOM_extended_get2 GL_QCOM_perfmon_global_mode GL_QCOM_tiled_rendering GL_QCOM_writeonly_rendering ===== EGL Information ===== vendor : Android version : 1.4 Android META-EGL client API: OpenGL_ES extensions: EGL_ANDROID_image_native_buffer EGL_EXT_create_context_robustness EGL_KHR_create_context EGL_KHR_fence_sync EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_lock_surface EGL_KHR_wait_sync ===== System Information ===== mfgr : samsung brand : samsung model : GT-I9500 release : 4.3 build : JSS15J.I9500ZSUEMJ6