我这几天一直在努力解决这个问题。在我的应用程序中,用户点击地图上的点(谷歌地图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时会弹出一个窗口,弹出一个图标,表示无法显示此图像。 (喜欢和图像破碎)
有人可以帮忙吗?
答案 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
。