Android Studio 模拟器相机无法保存照片
Android Studio emulator camera cannot save photos
无论我使用模拟相机还是将我的网络摄像头用作模拟设备的相机,我都无法保存照片。我的代码设置了一个新文件来保存照片,相机 activity 弹出,但在我拍照后,点击 'save' 或 'accept picture' 按钮没有任何反应。我可以通过点击取消 return 到我的应用 activity 的唯一方法。当我 运行 在我的 Galaxy S3 上使用此代码时,此代码有效,但在模拟的 Nexus 设备上无效。当我在 AVD 管理器中设置设备时,我总是确保启用将两个摄像头设置为模拟或网络摄像头 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.");
}
}
}
找到解决办法了!模拟相机没有返回,因为我使用了一个错误的目录(在上面的 createImageFile
中选择)来保存文件。我开始使用 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
返回的目录并解决了问题。
无论我使用模拟相机还是将我的网络摄像头用作模拟设备的相机,我都无法保存照片。我的代码设置了一个新文件来保存照片,相机 activity 弹出,但在我拍照后,点击 'save' 或 'accept picture' 按钮没有任何反应。我可以通过点击取消 return 到我的应用 activity 的唯一方法。当我 运行 在我的 Galaxy S3 上使用此代码时,此代码有效,但在模拟的 Nexus 设备上无效。当我在 AVD 管理器中设置设备时,我总是确保启用将两个摄像头设置为模拟或网络摄像头 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.");
}
}
}
找到解决办法了!模拟相机没有返回,因为我使用了一个错误的目录(在上面的 createImageFile
中选择)来保存文件。我开始使用 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
返回的目录并解决了问题。