在camera.release()之后本机相机崩溃

时间:2016-03-11 17:01:40

标签: android android-intent camera

在打开相机意图时,我遇到了奇怪的手机冻结/崩溃/灰色相机屏幕。我无法定期重现此错误,但是我的一个测试设备(华为Ascend P6 )每天都会发生几次,但是没有确定的步骤导致崩溃。

同样在极少数情况下,在我的应用程序意图中在此设备上制作照片会导致手机重新启动。在使用相机意图的其他应用程序中,此行为不是问题,所以我认为我的代码有问题。

我打开相机意图的代码:

public void openCameraForPhoto(OpenCameraForPhotoEvent event) {
        photoUri = null;
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            File photoFile = null;
            try {
                photoFile = createImageFile();
            } catch (IOException ex) {
                showErrorToastAndFinish(errorMessage);
            }

            if (photoFile != null) {
                photoUri = Uri.fromFile(photoFile);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                        photoUri);
                startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
            }
        }
    }

我认为有几个嫌疑人可能会导致这种不可预测的行为。

首先,我使用 TextureView 在我启动相机意图的屏幕上显示相机预览。虽然我在onPause方法中执行camera.release(),但我认为偶尔也不会调​​用它。

辅助,我使用另一个 TextureView 在同一屏幕上显示一些视频。由于我使用 MediaPlayer 来做这件事,也许它与相机冲突,导致它行为怪异? MediaPlayer 是否与相机启动有关?也许在背景中有来自画廊的图片或类似的东西?

第三次,我做的最不可疑的事情:从新创建的活动中打开相机意图。我真的不认为这是这种行为的原因,但也许设备无法处理CPU或内存峰值。

所以,问题是:我该怎么做才能防止这种行为,这不会被任何错误或异常所表示,但会使应用使用情况不理想?

0 个答案:

没有答案