API 22相机通过意向问题
我目前正在开发Android应用程序与分SDK是19,并试图以支持一路攀升至26这周我已经添加了摄像头功能,活动和我”我觉得调试这个很荒唐。API 22相机通过意向问题
基本上,用户点击相机图标,它通过一个意图开始Android相机,用户拍摄照片,它被保存,然后添加到他们启动相机的意图之前所查看的滑块画廊。
所以,我终于得到它的API 19,21,23,24,25和26的工作......这是给我一个问题,唯一的API为22,我真的想不通这是为什么。当我点击相机图标时,它会启动意图,相机加载到白色屏幕,并且应用程序崩溃。踢球者是这样的,我只是试了一下,它的工作,这两次,现在应用程序成功地拍了照片,保存它,并没有崩溃。
它的工作后,我又尝试过了,我得到这个:
09-09 17:19:22.381 6163-6163/com.android.camera E /摄像头:100错误 09-09 17:19:22.381 6163-6163/com.android.camera E/CameraErrorCallback:GOT>相机错误回调。误差= 100 09-09 17:19:22.381 6163-6163/com.android.camera E/AndroidRuntime:致命>例外:主 工艺:> com.android.camera,PID:6163
的java .lang.RuntimeException:媒体服务器死亡。 (Camera.java:1148) at> android.os.Handler.dispatchMessage(Handler .java:102) at> android.os.Looper.loop(Looper.java:135) at> android.app.ActivityThread.main(ActivityThread.java:5254) at> java.lang.reflect.Method。 invoke(Native Method) at> java.lang.reflect.Method.invoke(Method.java:372) at> com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903) at> com.android.internal.os.ZygoteInit.main(ZY goteInit.java:698)
,并试图有点后,我接到再次,不同的错误以后。
09-09 17:32:22.185 1530年至1611年/ system_process E/AudioService:媒体服务器死亡。 09-09 17:32:22.191 4072-4072/com.android.camera E/AndroidRuntime:致命>例外:主 工艺:> com.android.camera,PID:4072
java.lang中。 RuntimeException:getParameters失败(空参数) at> android.hardware.Camera.native_getParameters(Native Method) at> android.hardware.Camera.getParameters(Camera.java:1888) at> com.android.camera.Camera。 initializeZoom(Camera.java:489) 在> com.android.camera.Camera.initializeFirstTime(Camera.java:392) 在> com.android.camera.Camera.access $ 600 (Camera.java:87) 在> com.android.camera.Camera $ MainHandler.handleMessage(Camera.java:290) 在> android.os.Handler。dispatchMessage(Handler.java:102) at> android.os.Looper.loop(Looper.java:135) at> android.app.ActivityThread.main(ActivityThread.java:5254) at> java.lang.reflect .Method.invoke(Native Method) at> java.lang.reflect.Method.invoke(Method.java:372) at> com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903) 在> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
这里是我的代码周围循环调用相机功能/ ACTI VITY:
设置相机图标的onclick监听器:
public boolean onCreateOptionsMenu(Menu menu) {
item.getActionView().setOnClickListener(new View.OnClickListener() >
@Override
public void onClick(View v) {
startActivityForResult(CameraUtility.dispatchTakePictureIntent(getApplicationContext(), mushroomFolder), 1);
return;
}
});
return super.onCreateOptionsMenu(menu);
}
的对结果的活动只是增加了最后拍摄的照片的画廊,而不是甚至达到了所以我不会理会它包括。
而且继承人我CameraUtility代码:
class CameraUtility extends AppCompatActivity {
private static String CURRENT_PHOTO_PATH;
public static String PHOTO_DIRECTORY;
public static void setPhotoDirectory(Context c) {
PHOTO_DIRECTORY = c.getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/MyTrackerPhotos/";
}
public static Intent dispatchTakePictureIntent(Context c, String name) {
String timeStamp = new SimpleDateFormat("dd-MM-yyyy_HHmmss").format(new Date());
String path = c.getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/MyTrackerPhotos/" + name + "/" + name + timeStamp + ".jpg";
File file = new File(path);
Uri outputFileUri;
if (Build.VERSION.SDK_INT >= 23)
outputFileUri=FileProvider.getUriForFile(c,
"com.tracker.mushroom.fileprovider", file);
else
outputFileUri = Uri.fromFile(file);
CURRENT_PHOTO_PATH = file.getPath();
Intent intent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
return intent;
}
public static String getCurrentPhotoPath() {
return CURRENT_PHOTO_PATH;
}
public static File[] getImageFiles(Context c, String mushroomFolder) throws IOException {
String filePath = c.getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/MyTrackerPhotos/" + mushroomFolder;
File file = new File(filePath);
file.mkdirs();
file.setReadable(true);
file.setWritable(true);
return file.listFiles();
}
}
所以,我真的不知道如果我的代码的问题,或者如果它的模拟器或如果别的东西我甚至不知道关于,因为如果每个其他API都在工作,我不能帮助,但只是抓我的头。我知道getParameters()误差是与相机有关的类,但我甚至不使用它,所以我不知道为什么它甚至触发错误。所有和任何输入是受欢迎的,非常感谢。
好吧,我做了一些进一步的测试,我想我在哪里,我要责怪这个仿真器/ Android的工作室点。我跑了3场firebase robo测试,全部在api 22和不同的手机型号上。
其中每一个不断打开和关闭相机的活动就好了,不幸的是测试从来没有真正拍过照片,但是在这之前发生了故障。
如果我有机会测试了这一点,我有22 API在物理设备上的自我,它的作品,我肯定知道它的仿真器/ Android的问题。在这一点上,我甚至不觉得值得投入时间去尝试和调试,特别是在机器人测试之后。希望有人认为这有用,并节省一些时间后追逐一些变异的幽灵错误,哈哈。
编辑: 想添加为最后的笔记..我下载了api 22 x86,安装它,并做了一个新的模拟器。没有更多的问题。我使用的是api 22 x86_64,出于某种原因,它只是不喜欢在该版本上工作。给那些评论的人欢呼,你们很棒。
这不是一个API相关的问题,这是你打电话到崩溃的摄像头应用程序。你在API 22模拟器上试试这个吗? – ianhanniballake
如果你有一个真实的设备工作,它可能仅仅是一个特定于设备的问题。我遇到了不少设备,这些设备都有奇怪的相机问题。此外,它也可能是该设备上的默认相机应用程序的问题。所有者可以设置任何支持相机意图处理它们的应用程序,而不是系统相机应用程序。甚至系统相机应用程序可能是在一个抛光不足的设备上的越野车。 –
@ianhanniballake是,API 22模拟器,不同的手机。您是否试图说他们是模拟器上提供的默认相机应用程序的问题?因为这会很有意义。 – Philtron