Android相机:从相机保存图像时的奇怪行为
问题描述:
我在我的应用程序中使用Android的相机......我的要求是,我捕捉活动图像并将其保存在由我决定的位置,而不是相机来自Gallery的文件夹。 然后在Uri的帮助下获取照片并将其显示在我的应用程序中。Android相机:从相机保存图像时的奇怪行为
但是我实现的是在某些设备上和某些设备上正常运行,我的代码无法创建文件夹和捕获的图像....因此,当我的应用程序想要显示照片时,我什么也得不到。
我已经尝试过我的应用程序在银河S和银河SII ....在星系S它不能正常工作,和奇怪的事情是在一些SII设备其正常工作,但一些未能在指定的位置创建图像和文件夹。但在Galaxy Tab上一切正常。
此外,我已经在Nexus S上测试过....这里的问题是不同的,在Nexus S上启动相机并捕获图像后,我可以看到图像预览,然后我有2个选项可以保存,取消或重拍......但是当我要求保存没有任何事情发生时,当我取消它可以释放相机,并重新设计它的工作。
我不明白为什么会出现在不同的设备不同的结果....甚至设备都来自同一制造商(如GALAXY SII)
我张贴我的代码......如果有人提示请分享我...谢谢。
public static String EXTERNAL_STORAGE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath().toString()+"/DCIM/";
private String imagePath = ImageDecoder.EXTERNAL_STORAGE_PATH;
imagePath = imagePath + projectdata.getProjectName().toString().trim() + "/"
+ System.currentTimeMillis() + ".jpg";
File imageFile = new File(imagePath);
Uri imageFileUri = Uri.fromFile(imageFile);
Intent captureImage = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
captureImage.putExtra(MediaStore.EXTRA_OUTPUT, imageFileUri);
startActivityForResult(captureImage, CAMERA_PIC_REQUEST);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String imgDescription = null;
switch (requestCode) {
case CAMERA_PIC_REQUEST:
if (resultCode == RESULT_OK) {
cam = new Controller_Camera(context, sessiondata, projectdata);
imgDescription = getString(R.string.DEFAULT_IMAGE_TITLE) + DateTimeUtility.GetSystemDate();
String response = cam.savePhotoWithIssue(imagePath, app, imgDescription,
getString(R.string.DEFAULT_ISSUE_NAME), getString(R.string.DEFAULT_IMAGE_TITLE));
if (response == "Successfull") {
Intent issueeditor = new Intent(context, IssueEditor.class);
issueeditor.putExtra("TODO", "editissue");
issueeditor.putExtra("TAB", "Photos");
issueeditor.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(issueeditor);
} else {
Toast.makeText(context, getResources().getString(R.string.FAILURE_SAVING), Toast.LENGTH_SHORT)
.show();
}
}
break;
答
只是检查SD卡是否被安装不
private boolean isSDCARDMounted() {
String status = Environment.getExternalStorageState();
if (status.equals(Environment.MEDIA_MOUNTED))
return true;
return false;
}
if (isSDCARDMounted()) {
File f = new File(Environment.getExternalStorageDirectory(),
TEMP_PHOTO_FILE);
try {
f.createNewFile();
} catch (IOException e) {
}
return f;
}