虽然调用摄像头很方便,但并不是每次我们都需要当初拍照,我们可以从相册中去选择一张即可,所以这里我们来看一下如何从手机相册中来获得一张照片。
这里我们通过一个实例来看一下如何从相册中选择照片:
1)打开相册:
1>这种方式是将选择的照片又存到了一个地址中,真是多此一举,可以直接采用第2中方式
Intent intent = new Intent("android.intent.action.GET_CONTENT");
file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg");
if (!file.exists()) {//判断是否存在文件
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
intent.setType("image/*");//设置类型为图片格式
intent.putExtra("crop", true);//设置图片运行缩放
intent.putExtra("scale",true);//设置图片运行裁剪
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));//设置图片保存的位置
startActivityForResult(intent, 0x31);//利用有返回信息的方式启动intent,需要传入一个请求码
2>方式2:
三行代码即可:
Intent intent = new Intent("android.intent.action.GET_CONTENT");
intent.setType("image/*");//设置类型为图片格式
startActivityForResult(intent, 0x35);//利用有返回信息的方式启动intent,需要传入一个请求码
intent中的action:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
或者
Intent intent = new Intent("android.intent.action.GET_CONTENT");
这样就可以打开相册,挑选照片,其他的操作和上一篇摄像机中一样,通过在回调函数中设置。
2)result函数中:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 0x35:
if (resultCode == RESULT_OK) {//将图片显示到imageview控件上
Uri uri= data.getData();
mImageviewCamera.setImageURI(uri);//将file全局
}
break;
defalt:
}
}
将图片显示在imageview中,需要从返回的data数据中获得Uri
效果演示:
初始界面
选择照片后