我正在创建自定义Android相机布局。
我使用了来自http://developer.android.com/guide/topics/media/camera.html#basics的信息。除了一件事,Everithing工作正常。
照片未显示在手机图库中。该方法是:
private Camera.PictureCallback cameraCallback = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile();
if (pictureFile == null){
Log.d(Values.APPLICATION_TAG + ACTIVITY_TAG, "Error creating media file, check storage permissions: ");
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.flush();
fos.close();
createPhotoAndShowPreview(Uri.fromFile(pictureFile));
} catch (FileNotFoundException e) {
Log.d(Values.APPLICATION_TAG + ACTIVITY_TAG, "File not found: " + e.getMessage());
} catch (IOException e) {
Log.d(Values.APPLICATION_TAG + ACTIVITY_TAG, "Error accessing file: " + e.getMessage());
}
}
};
private static File getOutputMediaFile(){
File galleryDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MyCameraApp");
if (!galleryDir.exists()) {
if (!galleryDir.mkdir())
{
Log.d(Values.APPLICATION_TAG, "failed to create directory");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
mediaFile = new File(galleryDir.getPath() + File.separator +
"gfranq_"+ timeStamp + ".jpg");
return mediaFile;
}
方法createPhotoAndShowPreview(Uri.fromFile(pictureFile));工作正常,文件在运行时存在,我可以使用它,但当我退出应用程序时,库中没有文件。我使用文件管理器检查文件是否已删除,但未删除,退出应用程序后存在,但系统无法识别出是图像。
更新:将手机连接到电脑后,照片中出现了照片。但是新的照片仍然没有出现在画廊中,直到我连接并断开我的手机与电脑。重启手机也有同样的效果。
答案 0 :(得分:4)
您需要发送广播:
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(imageFile)));
答案 1 :(得分:0)
MediaScannerConnection.scanFile(this, new String[]{file.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});