我试图创建一个临时文件来存储来自摄像头意图的图像,遵循Android Photo Basics指南,但每次我尝试从我的Android模拟器创建一个时,它都是崩溃。我的物理Nexus 7工作正常,所以我知道它不是权限问题。
我设置了一个断点然后跟着它,然后它进入了BlockGuardO,经过一些研究后听起来像是一种确保你能够正确控制线程的方法,所以我试图将我的代码移到Person
,但它仍然会因同样的错误而崩溃。
我使用的原始方法:
obj
之后我将其移至AsyncTask
private File createImageFile() throws IOException {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName,
".jpg",
storageDir
);
return image;
}
但我仍然遇到同样的问题。我知道我可以通过更改StrictThread设置来禁用它,但我想了解如何处理主UI线程中的文件IO。
由于
答案 0 :(得分:0)
To access the device camera, you must declare the CAMERA permission in your Android Manifest. Also be sure to include the <uses-feature> manifest element to declare camera features used by your application. For example, if you use the camera and auto-focus feature, your Manifest should include the following:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
答案 1 :(得分:0)
我认为你没有为你的模拟器定义相机。 如果你正在使用android studio,请执行以下操作:
1.开启 AVD经理
2.在“操作”列下,选择编辑AVD (钢笔图标)
3.单击显示高级设置
4.在相机中选择后退和前相机
5.Finish