【发布时间】:2013-04-23 15:30:50
【问题描述】:
您好,我正在将相机中的图像(拍照)插入 MediaStore.Images.Media 数据存储区。
有谁知道我如何才能显示最后一张拍摄的照片?
我使用了 Uri image = ContentUris.withAppendedId(externalContentUri, 45);显示来自数据存储的图像,但显然 45 不是正确的图像。
我尝试将来自前一个活动(相机)的信息传递给显示活动,但我假设由于照片回调是它自己的线程,所以该值永远不会被设置。图片代码如下
Camera.PictureCallback photoCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
// TODO Auto-generated method stub
FileOutputStream fos;
try
{
Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);
fileUrl = MediaStore.Images.Media.insertImage(getContentResolver(), bm, "LastTaken", "Picture");
if(fileUrl == null)
{
Log.d("Still", "Image Insert Failed");
return;
} else
{
picUri = Uri.parse(fileUrl);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, picUri));
}
}
catch(Exception e)
{
Log.d("Picture", "Error Picture: ", e);
}
camera.startPreview();
}
};
【问题讨论】:
-
你肯定还会有你用来保存数据的文件流吗?
-
fileURL 指向文件 - 但是这个方法在它自己的线程中被调用 camera.takePicture(shutterBack, null, photoCallback);所以 fileURL 似乎永远不会返回一个值(始终为空)我已经让主线程进入睡眠状态并将其保持在一个 while 循环中,希望它有一个值 - 但它似乎从未发生在主线程中。跨度>