显示最后一张图片

时间:2010-03-31 09:31:10

标签: android camera

您好我正在将相机中的图像(拍照)插入MediaStore.Images.Media数据存储区。

有谁知道如何显示最后拍摄的照片?

我使用了Uri image = ContentUris.withAppendedId(externalContentUri,45);从数据存储区显示图像,但显然45不是正确的图像。

我尝试将上一个活动(Camera)中的信息传递给显示活动,但我假设由于照片回调是自己的线程,因此值永远不会被设置。照片代码如下

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();

    }
};

1 个答案:

答案 0 :(得分:1)

你可以使用这样的东西来获取最后拍摄的图像

    final ContentResolver cr = getContentResolver();
    final String[] p1 = new String[] {
            MediaStore.Images.ImageColumns._ID,
            MediaStore.Images.ImageColumns.DATE_TAKEN
    };
    Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null,
            p1[1] + " DESC");

    if ( c1.moveToFirst() ) {
        Log.d(TAG, "last picture (" + c1.getInt(0) + ") taken on: " +
                          new Date(c1.getLong(1));
    }

    c1.close();