介绍
介绍
福哥要在tfhomeapp里面增加用户头像上传的功能。本来是想直接通过H5实现,后来发现H5在不同的手机的浏览器上兼容性还有问题,这个真的是无法忍受。最后决定直接通过APP来实现访问手机相册或者调用相机来实现了。
访问相册
使用Android访问系统相册很简单,通过Intent的动作调用系统相册。再通过startActivityForResult捕获用户选择图片的结果进行处理。
代码
public void openAlbum(Activity activity){ Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); intent.setType("image/*"); activity.startActivityForResult(intent, RESULT_OPEN_ALBUM); }
调用相机
使用Android访问系统相机的方法类似,通过Intent的动作调用系统相机。再通过startActivityForResult捕获用户拍摄照片的结果进行处理。
代码
public void openCamera(Activity activity){ Intent intent; intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); activity.startActivityForResult(intent, RESULT_OPEN_CAMERA); }
相册选择照片回调
在用户选择了一张照片后会触发onActivityResult事件,然后我们就可以在这个方法里面进行照片选择操作的结果处理了。
回调方法传入onActivityResult返回的Intent,返回的是一个Bitmap图片对象。
代码
public Bitmap onOpenAlbum(Intent data){ Bitmap bitmap = null; if (data != null) { // 照片的原始资源地址 Uri uri = data.getData(); String path = uri.getPath(); ContentResolver cr = context.getContentResolver(); try { bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri)); return bitmap; } catch (FileNotFoundException e) { } } return null; }
相机拍摄照片回调
在用户使用相机拍摄一张照片并且选择确定后会触发onActivityResult事件,然后我们就可以在这个方法里面进行照片拍摄操作的结果处理了。
回调方法传入onActivityResult返回的Intent,返回的是一个Bitmap图片对象。
代码
public Bitmap onOpenCamera(Intent data){ Bitmap bitmap = null; if(data != null){ Bundle extras = data.getExtras(); if (extras != null) { bitmap = extras.getParcelable("data"); return bitmap; } } return null; }
总结
Android开发是真的太容易了,原本很臃肿很繁琐的Java编程在Android这里变得太简单了,开发起来太舒服了。访问相册、调用相机这些系统级别的操作,简简单单20多行代码就搞定了,不要太爽哦~~