相机意图返回缩略图,但想要点击缩略图以显示原始图像

时间:2014-12-10 14:11:12

标签: android image android-intent

我这几天一直在努力解决这个问题。在我的应用程序中,用户点击地图上的点(谷歌地图v2),然后用户可以拍照并返回缩略图。一切正常,但现在想点击缩略图并全屏返回原始图像或在图像视图中。有人可以帮帮我吗?

这是我的相机意图:

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent, CAPTURE_IMAGE_THUMBNAIL_ACTIVITY_REQUEST_CODE);

OnActivityResult:

 File imageStorageFolder = new File(Environment.getExternalStorageDirectory()+File.separator+"Folder");
        if (!imageStorageFolder.exists())
        {
            imageStorageFolder.mkdirs();
            Log.d(TAG , "Folder created at: "+imageStorageFolder.toString());
        }
        if (data != null)
        {
            String filename = "image";
            String fileNameExtension = ".jpg";
            File sdCard = Environment.getExternalStorageDirectory();
            String imageStorageFolder1 = File.separator+"Folder"+File.separator;
            File destinationFile = new File(sdCard, imageStorageFolder1 + filename + fileNameExtension);
            Log.d(TAG, "the destination for image file is: " + destinationFile );
            if (data.getExtras() != null)
            {
                bitmap = (Bitmap)data.getExtras().get("data");
                try
                {
                    FileOutputStream out = new FileOutputStream(destinationFile);
                    bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
                    out.flush();
                    out.close();
                }
                catch (Exception e)
                {
                    Log.e(TAG, "ERROR:" + e.toString());
                }

然后在onMarkerClick上:

@Override
        public boolean onMarkerClick (Marker arg0){
         Intent intent = new Intent();
         intent.setAction(Intent.ACTION_VIEW);
         Uri imgUri = Uri.parse("bitmap" + "data");
         intent.setDataAndType(imgUri, "image/*");
         startActivity(intent);
          return false;

点击onMarker时会弹出一个窗口,弹出一个图标,表示无法显示此图像。 (喜欢和图像破碎)

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

onMarkerClick方法中,您可以通过Uri.parse("bitmap" + "data")方式创建Uri。所以最后你试图用Uri bitmapdata来展示图片。您应该将图片的正确Uri传递给Uri.parse方法。您在destinationFile下保存了自己的照片,因此请创建一个File destinationFile类成员字段,然后通过Uri.parse(destinationFile.toString())获取Uri。

如果要正确显示给定Marker的每张图片,则必须存储已保存图片的所有文件的Uri个。例如,您可以拥有一个Map<Integer, Uri>,其中的键将是Marker个ID,值将是图片Uri s。然后在onMarkerClick中通过Marker.getId()获取点击标记的ID,并使用它来获取来自Uri的图片的相应Map