【问题标题】:Display last picture显示最后一张图片
【发布时间】: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 循环中,希望它有一个值 - 但它似乎从未发生在主线程中。跨度>

标签: android camera


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多