我正在开发一款Android应用程序,可以从相机或设备照片库上传图像到远程站点。后者我已经成功实现了选择和上传操作。然而,我在处理全尺寸图像并进行上传方面遇到了困难。以下是我的代码:
// From onCreate
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
我有一个处理Activity结果的方法。这个方法可以同时处理从相册和相机选择的情况:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
String filepath = "";
Uri selectedImageUri;
if (resultCode == RESULT_OK) {
if (requestCode == CAMERA_PIC_REQUEST) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
// Gets real path of image so it can be uploaded
selectedImageUri = getImageUri(getApplicationContext(), photo);
}
else {
selectedImageUri = data.getData();
}
// Handle the upload ...
}
}
public Uri getImageUri(Context inContext, Bitmap inImage) {
String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
这样做是有效的,但图片很小,并且不符合存储图像的命名约定。我了解到要保存全尺寸,需要在cameraIntent上使用putExtra并传递MediaStore.EXTRA_OUTPUT,并声明一个临时文件,因此我已经修改了我的意图代码如下:
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss");
camImgFilename = sdf.format(new Date())+".jpg";
File photo = new File Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), camImgFilename);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
然而,这会导致出现错误,提示“找不到源代码”。
不确定怎么继续下去?
更新
看起来我的照片已经被创建了。一旦应用程序关闭,我可以使用文件浏览器导航到目录并查看图像。我不确定是什么导致应用程序崩溃。