【安卓开发】调用系统相机并指定存储位置

作者:Young.Liu 分类: 技术 发布于:2013-10-15 18:13 ė2148次浏览 60条评论

说起调用安卓的系统相机,代码很简单,在这篇文章里面已经详细记录了代码实现,http://iting.in/post/176,但是按照那个方法实现,照片是默认存在系统自定义的目录文件中的,也就是存储卡的 DCIM-> Camera文件夹中。


使用如下代码可以定义照片存储位置:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment
                    .getExternalStorageDirectory(),"temp.jpg")));
startActivityForResult(intent, PHOTO_GRAPH);
其中
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment
                    .getExternalStorageDirectory(),"temp.jpg")));

定义的是照片的存储位置为存储卡的根目下,保存为temp.jpg文件。 MediaStore.EXTRA_OUTPUT,指定的就是自定义存储位置,官方源码里面对它的说明是“The name of the Intent-extra used to indicate a content resolver Uri to be used to store the requested image or video.” ,也就是该变量接受一个Uri类型变量来指定存储位置,值得说明该Uri变量必须使用Uri.fromFile(File)函数获得,如果想简单的使用Uril.parse("sdcard/temp.jpg")来替换的话,可能你要失望了,这样的字符串parse出来的Uri对象是无法实现指定存储位置的,也就是在你希望的指定位置并没有图片存储,但是程序并不报错并返回Activity.RESULT_OK以示程序调用成功。


 再有就是指定存储位置后,在onActivityResult中不会返回缩略图等数据,也就是Intent data==null,注意此处,按照之前的获取data的一切尝试都将抛出空指针异常。

本文出自 我的技术积累,转载时请注明出处及相应链接。


Ɣ回顶部