参照了网上的一些代码,写了一个安卓的拍照和上传的APP
源代码放在底部
有几个需要注意的问题:
一、拍照所得的照片是缩略图
如果直接用
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);
得到的照片会是缩略图。需要设置
picFile = new File(dir, name);
Uri u = Uri.fromFile(picFile);
intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
intent.putExtra(MediaStore.EXTRA_OUTPUT, u);
注意:
Samsung的系统相机,版式是横板的,如果你的activity恰巧是竖版的,那么获取这个回调uri的时候,很可能为空
设置方法:
1、在Manfest.xml中,给activity添加一个属性:android:configChanges="orientation|keyboardHidden"
2、在activity中添加:
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
}
二、安卓4.4以上版本,在选择图片时有一个“最近使用”的文件夹选项,从该选项里选择图片时,返回的uri为null
也就是cursor.getString(columnIndex)为null
这个问题在代码里并没有得到解决,我直接在选择图片时使用了自带的相册或者第三方相册来进行选择。
解决方法详见http://blog.csdn.net/tempersitu/article/details/20557383
因为我只是需要写一个很简单的样例,所以并没有参照博文里的方法对代码进行改进。有需要的朋友可以看一下。
三、安卓4.0以后不允许在主线程进行网络连接,否则会出现 android.os.NetworkOnMainThreadException。因此,必须另起一个线程进行网络连接方面的操作。
四、服务器端存储照片的文件夹不会自动创建,需要提前创建好
几点疑问:
1、Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED
该语句判断是否存在SD卡。当无外置SD卡时,该判断是否成立?
2、拍照完成之后到返回主界面显示缩略图之间的延迟时间很长,是什么原因?
3. Cursor cursor = managedQuery(uri, pojo, null, null,null); 已经不推荐使用,照着很多代码改都不成功,虽然能够运行,但还是想知道正确的改法是什么?
源代码下载地址:
http://download.csdn.net/detail/q118008984/8638163
虽然能够运行,但是可能会有很多低级错误,烦请大家指正交流