我的意图是使用相机拍摄图像并将其发送到服务器,但不将该图像存储在设备的默认图库中.
**:当我捕获图像时,它在onActivityResult方法中返回一些其他图库图像,而不是在一些最新的Android设备中捕获图像.
我正在使用下面的代码来捕获和存储图像.
public void launchCamera(View v) { Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(camera,CAMERA_PIC_REQUEST ); }
在onActivityResult方法中,
String[] projection = { MediaStore.Images.ImageColumns.SIZE,MediaStore.Images.ImageColumns.disPLAY_NAME,MediaStore.Images.ImageColumns.DATA,BaseColumns._ID,}; Cursor c = null; Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; try { if (u != null) { c = managedQuery(u,projection,null,null); } if ((c != null) && (c.movetoLast())) { Bitmap thumbnail = getBitMapFromLocalPath(c.getString(2),3); idsImagesgot.add(thumbnail); ContentResolver cr = getContentResolver(); cr.delete( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,BaseColumns._ID + "=" + c.getString(3),null); } } finally { if (c != null) { c.close(); } }
任何人都可以在这方面帮助我.
提前致谢.
Sathish所在
解决方法
官方Android指南给出了这个例子:
http://developer.android.com/guide/topics/media/camera.html#intent-receive
但是在所有设备上都不起作用.
我所知道的唯一可靠的方法是保存一个局部变量中的图片路径.请注意,您的应用程序可能会在后台遭到杀死(相机应用程序正在运行时),因此您必须在onSaveInstanceState期间保存路径.
评论后编辑:
File tempFile = File.createTempFile("my_app",".jpg"); fileName = tempFile.getAbsolutePath(); Uri uri = Uri.fromFile(tempFile); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT,uri); startActivityForResult(intent,PICTURE_REQUEST_CODE);
fileName是一个字符串,是您的活动的一个字段.你必须这样保存:
@Override public void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); bundle.putString("fileName",fileName); }
并在onCreate()中恢复它:
public void onCreate(Bundle savedInstanceState) { if (savedInstanceState != null) fileName = savedInstanceState.getString("fileName"); // ... }
现在,在onActivityResult的时候,你知道存储照片的文件的名称(fileName).你可以做任何你想要的,然后删除它.
2013-09-19编辑:似乎有些相机应用程序忽略了putExtra uri,并将图像存储在不同的地方.因此,在使用fileName的值之前,应该检查intent是否为null.如果你得到一个非空的意图,那么你应该更喜欢intent.getData()超过fileName.只有在需要时才使用fileName作为备份解决方案.
原文地址:https://www.jb51.cc/android/311087.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。