我正在做一个Android项目,允许用户用相机拍照。
我的方法如下所示:
private void takePicture(){
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camera, 1337);
}在我的onActivityResult中,我拍摄了这张照片,并将它存储在我的SdCard中。我试图修改我的takePicture()函数以返回图片的路径(字符串而不是空)。
我已经知道,来自java.io.File的java.io.File()允许我这样做。
因此,我的问题是:如何修改我的函数以返回图片的路径?
发布于 2013-03-21 14:33:39
takePicture将无法返回路径,因为它会在您的意图完成之前返回。您需要使用onActivityResult内部的路径来做一些事情
发布于 2013-03-21 14:35:46
这里是在pictureCallback中获取捕获和存储图像的路径的代码
在这个代码中,mFilePath是保存图像路径的字符串.
PictureCallback mPicture = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile();
if (pictureFile == null) {
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
String mFilePath = pictureFile.getAbsolutePath();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
};
private static File getOutputMediaFile() {
File mediaStorageDir = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyCameraApp");
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("MyCameraApp", "failed to create directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");
return mediaFile;
}
}https://stackoverflow.com/questions/15550357
复制相似问题