开发者社区> 文艺小青年> 正文

Android硬件入门-照相机

简介:
+关注继续查看

学习Android不能不学习照相机,现在各种美容相机,微信朋友圈发图,现在升级之后直接下拉就可以照相了,各种艳照的的源头也是照相机,扯远了,有点邪恶了,还是简单学习一下Android中照相机的使用,Android中照相机的使用一般分为两种使用已有的照相App(可以理解为系统内置的照相机)和单独创建一个照相App,第一种方式简单易懂,第二种方式如果做的好的话可以养活一个公司~今天就简单的描述一下第一种的调用~

基础工作

调用照相机需要照相,照相就需要存储,存在外部存储中需要设置权限,本次设置的三个权限:一个是调用Camera权限,第二个是要求设备有照相机,第三个是在外部设备写的权限:

1
2
3
4
5
<uses-permission android:name="android.permission.CAMERA" />
 
 <uses-feature android:name="android.hardware.camera" />
 
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  简单的页面,一个Buttom,一个ImageView:

Demo实现

简单的三部曲,首先创建Intent,然后启动Intent,最后接收结果,没有前置摄像头,就用的是模拟的:

拍照事件:

1
2
3
4
5
6
7
public void cameraEvent(View view) {
    intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 创建一个意图去获取图片
    file= getOutputMediaFile(); // 获取路径
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); // 设置文件名
    // 启动Intent
    startActivityForResult(intent, IMAGE_REQUEST_CODE);
}

获取文件路径的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 图片路径
private static File getOutputMediaFile() {
    File mediaStorageDir = new File(
            Environment
                    .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
            tag);
 
    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            Log.d(tag, "存储目录创建失败");
            return null;
        }
    }
    // 创建文件名
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
            .format(new Date());
    File mediaFile = null;
        mediaFile = new File(mediaStorageDir.getPath() + File.separator
                "IMG_" + timeStamp + ".jpg");
    Log.d(tag, "存储目录:" + mediaFile);
    return mediaFile;
}

 完成之后的接收事件需要重写Activity中的onActivityResult方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        if(requestCode == IMAGE_REQUEST_CODE&&resultCode==RESULT_OK) {
            imageView=(ImageView) findViewById(R.id.camera_img);
            //两种设置方式
            //图片较大的时候可以使用这种
            Bitmap  bitmap=BitmapFactory.decodeFile(file.toString());
            imageView.setImageBitmap(bitmap);
//          imageView.setImageURI(Uri.fromFile(file));
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

  效果如下:

 本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4086004.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android OpenGL入门
Android OpenGL入门
45 0
Android自定义View-入门(明白自定义View和自定义ViewGroup)
为什么要自定义View? 主要是Andorid系统内置的View 无法实现我们的 需求,我们需要针对我们的业务需求定制我们想要的 View.
36 0
【Android开发】小白入门必看的”四框“使用教程,你学废了嘛?
【Android开发】小白入门必看的”四框“使用教程,你学废了嘛?
73 0
Android studio入门安装配置教程(中文版)
Android studio入门安装配置教程(中文版)
323 0
Android测试工具 UIAutomator入门与介绍(下)
  UI Automator 测试工具定义以及用途
101 0
Android测试工具 UIAutomator入门与介绍(上)
  UI Automator 测试工具定义以及用途
111 0
Android MVVM模式入门 - DataBinding的使用
Android MVVM模式入门 - DataBinding的使用
175 0
《Android自定义控件开发入门与实战》| 每日读本书
从动画、绘图、视图三方面介绍Android自定义控件相关知识,配以详实的案例讲解每个知识点,既适合系统学习,又可以用于查漏补缺。每日搜罗最具权威专业书籍,更多图书请关注“每日读本书”。
1445 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android开发之多进程架构
立即下载