Android调用相机
2016-08-23 23:01
399 查看
安卓把相机做成了公共的控件,我们可以通过意图来使用它。使用起来也是非常简单。
五个步骤:
1.申请权限
2.[b]创建意图[/b]
3.[b]设置图片的属性[/b]
4.启动相机Activity,附带请求码
5.判断请求码,是否是调用相机,完成后续操作
一:申请权限
如果,出现异常,例如报链接硬件错误,可加上以下代码
二:创建意图
三、设置图片属性
四、启动相机,附带请求码
五、判断请求码,完成后续操作
----------完全代码-----------
五个步骤:
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");
}
}
}
}
相关文章推荐
- Android适配器之定义PagerAdapter万能适配器
- 谷歌推荐的图片加载库Glide(谷歌亲儿子..)有图有真相
- Shape,Selector
- Android项目重构之路:实现篇
- Android中使用SDcard进行文件的读取
- android的View的大小写字母问题
- android内存优化之图片压缩和缓存
- Android系统ROM定制(待完善)
- Android02--Android之Shape的使用
- Android-自己动手写ButterKnife与原理解析
- Android获取设备隐私 忽略6.0权限管理
- Android自定义控件
- Android存储访问及目录
- android 6.0权限全面详细分析和解决方案
- TextView SpannableString方法 ,EditText 及监听事件,ImageView
- Android--数据存储(数据持久化)
- Android事件处理
- Android自定义ViewGroup(一)之CustomGridLayout
- 介绍 Android DropBoxManager Service
- 红米3 TWRP-3.0.2(android_6.0.1_r72分支)中文版Recovery更新于20161018