无论我使用模拟相机还是使用网络摄像头作为模拟设备的相机,我都无法保存照片。我的代码设置了一个新文件来保存照片,相机活动会弹出,但是在我拍完照片后,点击“保存”#39;或者'接受图片'按钮没有做任何事情。我可以通过点击取消返回我的应用程序活动的唯一方法。当我在Galaxy S3上运行它时,此代码可以工作,但不是模拟的Nexus设备。当我在AVD Manager中设置设备时,我总是确保启用将两个摄像头设置为模拟或摄像头0,无论我使用哪个,我确保有SD卡(即使我保存到内部存储器)和内部存储足以拍照。在我的清单中,我声明了android.permission.INTERNET,android.permission.WRITE_EXTERNAL_STORAGE和android.permission.CAMERA。有什么想法吗?
这是我启动相机意图的代码:
private void dispatchTakePictureIntent(int position) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile(position);
} catch (IOException ex) {
Log.v("photo", "photoFile failed.");
}
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
} else {
Log.v("tag", "photoFile was equal to null.");
}
}
}
答案 0 :(得分:1)
找到解决方案!模拟的摄像机没有返回,因为我使用了一个错误的目录(在上面的createImageFile
中选择)来保存文件。我开始使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
返回的目录,这解决了问题。