安卓拍照和选择照片上传功能代码

参照了网上的一些代码,写了一个安卓的拍照和上传的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); 
    } 


另外,这个activity不能添加单例模式,即:android:launchMode="singleInstance"


二、安卓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


虽然能够运行,但是可能会有很多低级错误,烦请大家指正交流

你可能感兴趣的:(安卓开发)