Android——获得本地相册(返回拍照照片)
这里要实现类似微信选取相册的功能,其中呢,有两个功能:
1、拍照获得照片。 2、从相册中选取。
这里主界面就一个ImageView,通过获得照片来显示图片。
1、点击拍照后将调用本地摄像头拍照,并且将拍照结果返回。
由于是模拟器,所以会出现一个动态画面进行拍照,点击保存后显示拍照结果。
2、接着是获得本地相册,从中选取图片。
选中后返回显示图片。
提示:如果手机中模拟器中没照片可以从电脑导入,(需要重启模拟器)或者直接百度
下载。
代码部分:
无论是拍照选取还是本地相册选取,都需要两步:
1、拍照或者打开本地相册
2、获取图片
先来说调用本地摄像头拍照:
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, 1);
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);
获取图片:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if(data==null){}else{try {//高版本使用 android >19Uri uri=data.getData();Bitmap bit=Media.getBitmap(getContentResolver(), uri);iv.setImageBitmap(bit);} catch (Exception e) {// TODO Auto-generated catch block//低版本使用 android <=19Bundle bundle=data.getExtras();Bitmap bit1=(Bitmap) bundle.get("data");iv.setImageBitmap(bit1);e.printStackTrace();}}}
android版本>19使用:
Uri uri=data.getData();
Bitmap bit=Media.getBitmap(getContentResolver(), uri);
iv.setImageBitmap(bit);
android版本<=19使用:
Bundle bundle=data.getExtras();
Bitmap bit1=(Bitmap) bundle.get(“data”);
iv.setImageBitmap(bit1);
2、本地相册获取
同样分版本号`
Intent intent1=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 获得当前手机版本if(Build.VERSION.SDK_INT<=19){intent1.setAction(Intent.ACTION_PICK);intent1.setData(Media.EXTERNAL_CONTENT_URI);}else{intent1.setAction(Intent.ACTION_OPEN_DOCUMENT);intent1.addCategory(Intent.CATEGORY_OPENABLE);intent1.setType("image/*");}startActivityForResult(intent1, 2);
获取方法onActivityResult和上面是同一个方法,只写一次即可。
源码:
package com.example.capturetest;import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Images.Media;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;public class MainActivity extends Activity {private ImageView iv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv=(ImageView) findViewById(R.id.main_iv);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.menu.add(1, 1, 1, "拍照");menu.add(1, 2, 2, "来自相册");return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();switch (id) {case 1:Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, 1);break;case 2:Intent intent1=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);if(Build.VERSION.SDK_INT<=19){intent1.setAction(Intent.ACTION_PICK);intent1.setData(Media.EXTERNAL_CONTENT_URI);}else{intent1.setAction(Intent.ACTION_OPEN_DOCUMENT);intent1.addCategory(Intent.CATEGORY_OPENABLE);intent1.setType("image/*");}startActivityForResult(intent1, 2);break;}return true;}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if(data==null){}else{try {Uri uri=data.getData();Bitmap bit=Media.getBitmap(getContentResolver(), uri);iv.setImageBitmap(bit);} catch (Exception e) {// TODO Auto-generated catch blockBundle bundle=data.getExtras();Bitmap bit1=(Bitmap) bundle.get("data");iv.setImageBitmap(bit1);e.printStackTrace();}}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
