您的位置:首页 > 移动开发 > Android开发

Android调用相机

2016-08-23 23:01 399 查看
安卓把相机做成了公共的控件,我们可以通过意图来使用它。使用起来也是非常简单。

五个步骤:

1.申请权限

2.[b]创建意图[/b]

3.[b]设置图片的属性[/b]

4.启动相机Activity,附带请求码

5.判断请求码,是否是调用相机,完成后续操作

一:申请权限

<uses-permission android:name="android.permission.CAMERA"/>


如果,出现异常,例如报链接硬件错误,可加上以下代码

<uses-permission android:name="android.hardware.camera"/>
<uses-permission android:name="android.hardware.autofocus"/>


二:创建意图

//创建意图
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");


三、设置图片属性

//创建路径,这里是保存到SDCard
String out_file_path = Environment.getExternalStorageDirectory()+
"/PHOTO_Test/";
//创建当前路径的文件夹
File dir = new File(out_file_path);
//如果文件夹不存在,就创建
if(!dir.exists())
dir.mkdirs();
//图片的文件路径=存放路径+文件名   使用当前时间作为文件名
capturePath = out_file_path + System.currentTimeMillis()+".jpg";
//指定摄像头拍照后图片的存盘路径!!!必须Uri类型,因为安卓用的Linux内核,文件管理也是Linux的
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(
new File(capturePath)));
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);//设置图像质量


四、启动相机,附带请求码

startActivityForResult(intent,1);//这里的请求码是1,请求码是任意的,相当一个协议


五、判断请求码,完成后续操作

if(requestCode == 1)//判断是否是从相机返回的
{
//操作成功
if(resultCode == Activity.RESULT_OK){
File file = new File(capturePath);
//判断文件是否存在
if(file.exists()){
System.out.println("ok");
}
}
}


----------完全代码-----------

//拍照地址
private String capturePath = null;

private void getImageFromCamera(){
String state = Environment.getExternalStorageState();
if(state.equals(Environment.MEDIA_MOUNTED)){
//创建意图 Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
//创建路径,这里是保存到SDCard
String out_file_path = Environment.getExternalStorageDirectory()+
"/PHOTO_Test/";
//创建当前路径的文件夹
File dir = new File(out_file_path);
//如果文件夹不存在,就创建
if(!dir.exists())
dir.mkdirs();
//图片的文件路径=存放路径+文件名
capturePath = out_file_path + System.currentTimeMillis()+".jpg";
//指定摄像头拍照后图片的存盘路径!!!必须Uri类型
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(
new File(capturePath)));
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent,1);
}
else{
System.out.println("请确认已经插入SD卡");
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1)//用户选择从摄像头拍照后返回处理
{
//判断是否成功
if(resultCode == Activity.RESULT_OK){
File file = new File(capturePath);
if(file.exists()){
System.out.println("ok");
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: