android菜瓜笔记之手机照片选取与拍摄

来源:互联网 发布:电脑炒股软件 知乎 编辑:程序博客网 时间:2024/04/27 13:25

开发项目过程中经常需要在手机中选择图片或者临时拍摄照片使用,我们一般会直接调用系统提供的功能来实现。

1、选取照片或视频(手机中存储好的),参见代码

localIntent=new Intent();localIntent.setAction("android.intent.action.GET_CONTENT");if(this.type==TakeMediaDialogType.IMAGE){localIntent.setType("image/*");this.activity.startActivityForResult(localIntent, 5);}else{localIntent.setType("video/*");this.activity.startActivityForResult(localIntent, 6);}

此功能的关键是调用了红色部分的android.intent.action.GET_CONTENT作为action.

2、使用拍照功能获取照片或视频,参见代码

if(this.type==TakeMediaDialogType.IMAGE){localIntent = new Intent("android.media.action.IMAGE_CAPTURE");localIntent.putExtra("output", this.outputFileUri);this.activity.startActivityForResult(localIntent, 3);}elseif(this.type==TakeMediaDialogType.VIDEO){localIntent = new Intent("android.media.action.VIDEO_CAPTURE");localIntent.putExtra("output", this.outputFileUri);this.activity.startActivityForResult(localIntent, 4);}

此部分代码的关键部分为拍照使用android.media.action.IMAGE_CAPTURE,视频使用android.media.action.VIDEO_CAPTURE
3、结果获取可以参考我上篇文章

基本代码为:

protected void onActivityResult(int requestCode, int resultCode, Intent data){// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);try{ContentResolver resolver=getContentResolver();if( resultCode !=RESULT_OK){return;// for issues handle}else{switch(requestCode){case 3: //take imageBundle bundle = data.getExtras();  if (bundle != null) {  userAvatarBitmap = (Bitmap) bundle.get("data");userAvatarImageView.setImageBitmap(userAvatarBitmap);}break;case 4:  //take videobreak;case 5: //content imageUri originalUri = data.getData();  if (originalUri != null) { userAvatarBitmap = MediaStore.Images.Media.getBitmap(resolver,originalUri);  userAvatarImageView.setImageBitmap(userAvatarBitmap);}break;case 6: //content videobreak;}}}catch(Exception e){}}


 

0 0
原创粉丝点击