Android调用相机

       安卓把相机做成了公共的控件,我们可以通过意图来使用它。使用起来也是非常简单。

五个步骤:

        1.申请权限

        2.创建意图

        3.设置图片的属性

        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");
			}
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值