在Android中完成后再次调用Camera Intent?

时间:2015-04-17 07:12:56

标签: android android-intent android-fragments camera

我在Android 4.2或更高版本上测试过,它没有bug。但是当我在android 4.1上测试时,在保存图像后再次调用Camera Intent。我在应用程序中的流程包括: MainActivity - 片段 - ActivityInfo - 相机 当我点击片段上的相机按钮时,它会启动意图(ActivityInfo)并添加额外的(当我选择相机或图库时,意图名称和名称)。之后,ActivityInfo启动,并在onCreate函数中我得到额外值并检查它是否是相机的名称,我将启动相机意图。当我完成拍摄照片并保存照片时,它会完成()相机意图并再次调用相机意图。当我用cabe断开设备时会出现这个错误,当设备与cabe连接时它会消失。

我无法进行调试,因为当我的设备插入电源时没有出现任何问题。当我拔掉电源插头时,它就会出现问题。我在ImageActivity的onCreate中添加了行代码日志消息,当bug出现时,我插件设备并捕获并保存图像,onCreate中的相机完成和日志消息出现在屏幕调试上,Camera再次出现。

1 个答案:

答案 0 :(得分:1)

我敢打赌这个问题与特定的Android版本无关,但由于其他原因:你的活动可能会在图像捕获后返回到前景时被破坏并重新创建。因为你从onCreate()调用startActivity() - 它只是再次运行。

这是一个常见的错误:没有处理和考虑saveInstanceState参数,以指示当系统在前台处于内存压力之下而不在前台时杀死它时,当前是否重新创建了活动/片段。

有关 - http://developer.android.com/training/basics/activity-lifecycle/recreating.html#RestoreState

的更多信息

检查savedInstanceState

的代码
if (savedInstanceState == null) {
            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_REQUEST);
        }