调用系统相机首先在android项目中需要在AndroidManifest.xml中申明,即就是注册相机功能,因为在android的规定中调用硬件中的API需要先声明对这个API的调用当然也需要相关权限的获取。

 //AndroidManifest.xml文件内容
<uses-permission android:name="android.permission.CAMERA" />
<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- 注册相机功能,在别的程序Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);进行启动相机时也会选择是否启动该应用 -->
<intent-filter><action android:name="android.media.action.IMAGE_CAPTURE" /><category android:name="android.intent.category.DEFAULT" />
</intent-filter>

声明注册相机功能后,需要在你需要调用相机功能的activity中启用动态权限申请,也就是一般手机调用申请权限的步骤

//以下为onCreate方法下内容
//REQUEST_GPS为自定义int型静态常量;private final int REQUEST_GPS = 1;
//申请动态权限,这里的权限申请绑定在了全局控件ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.CAMERA,Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS}, REQUEST_GPS);
// 以下为自定义方法
// 拍照并显示图片
private void openCamera_1() {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 启动系统相机startActivityForResult(intent, REQUEST_CAMERA_1);
}
//以下为onactivity内的内容
if (requestCode == REQUEST_CAMERA_1) { // 判断请求码是否为REQUEST_CAMERA,如果是代表是这个页面传过去的,需要进行获取Bundle bundle = data.getExtras(); // 从data中取出传递回来缩略图的信息,图片质量差,适合传递小图片Bitmap bitmap = (Bitmap) bundle.get("data"); // 将data中的信息流解析为Bitmap类型saveImageToGallery(bitmap);ivShowPicture.setImageBitmap(bitmap);// 显示图片StartView.setVisibility(View.GONE);OperateView.setVisibility(View.VISIBLE);
}

上部分代码分解来看:

//以下为onCreate方法下内容
//REQUEST_GPS为自定义int型静态常量;private final int REQUEST_GPS = 1;
//申请动态权限,这里的权限申请绑定在了全局控件ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.CAMERA,Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS}, REQUEST_GPS);

在Oncreate方法里写入上述代码,Oncreate代码会在该activity运行时直接执行这里的动态权限申请,上述代码分别申请了:读写外部存储,相机调用,文件操作的权限

这里需要解释一下(REQUEST_GPS)设置逻辑,这里相当于该项目的权限申请唯一标识,也就是说在其他activity需要调用权限申请的时候仅需要更改这个唯一标识的值即可

// 拍照并显示图片
private void openCamera_1() {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 启动系统相机startActivityForResult(intent, REQUEST_CAMERA_1);
}

此为自定义函数,声明一个intent并启动硬件设备(Android设备)的系统相机,并开启回写

//以下为onactivity内的内容
if (requestCode == REQUEST_CAMERA_1) { // 判断请求码是否为REQUEST_CAMERA,如果是代表是这个页面传过去的,需要进行获取Bundle bundle = data.getExtras(); // 从data中取出传递回来缩略图的信息,图片质量差,适合传递小图片Bitmap bitmap = (Bitmap) bundle.get("data"); // 将data中的信息流解析为Bitmap类型saveImageToGallery(bitmap);ivShowPicture.setImageBitmap(bitmap);// 显示图片StartView.setVisibility(View.GONE);OperateView.setVisibility(View.VISIBLE);
}

对应上边的自定义函数的requestCode值,在完成相机操作后,会进入这个判断框,可以看到这里使用Bundle来接受数据,这里的ivShowPicture.setImageBitmap(bitmap);// 显示图片

就是对刚刚处理过后的数据进行展示,而ivShowPicture是一个Imageview用来接受图片信息的变量

关于Android项目相机使用(一)-------相机调用相关推荐

  1. 关于Android项目相机使用(二)-------相册调用

    结合代码展示如何从Android移动设备中调取相册中图片并获取 下面的代码同上一篇文章关于Android项目相机使用(一)--------相机调用_Hersiman的博客-CSDN博客 //Andro ...

  2. 安卓系统android使用C# .NET Xamarin框架调用相机拍照

    安卓系统android使用C# .NET Xamarin框架调用相机拍照 引言 一.用到的软件.包 二.创建Android应用(Xamarin), 三.增加Nuget中库Xam.Plugin.Medi ...

  3. Android官方开发文档Training系列课程中文版:调用相机之控制相机

    原文地址:http://android.xsoftlab.net/training/camera/cameradirect.html 在这节课,我们会讨论如何使用Android框架API来直接控制相机 ...

  4. android 崩溃捕获_Android从相机和图库捕获图像

    android 崩溃捕获 In this tutorial we'll develop an application that picks an image from camera or galler ...

  5. 自定义相机Camera,相机/视频实时滤镜 - android

    使用相机或自定义相机,借助Android SDK Camera类的,或Camera2的类.全新的设计的Camera2是从 SDK 5.0(API Level 21)开始才被引入的,取代原来Camera ...

  6. AndroidQ(八)Android Q隐私:更改相机和连接

    Android Q隐私:更改相机和连接 本文档描述了访问摄像机和连接信息的几个限制.这些更改有助于保护用户的隐私. 其中一些更改会影响在Android Q上运行的所有应用,而其他更改仅会影响针对And ...

  7. 相机SDK开法调用工作流程

    网上找的一些资料,整理了一下,留着仔细看一看. 内容纲要: 1.工业相机编程模型和流程 2.工业相机SDK接口使用总结 3.Basler Pylon工业相机SDK的使用 4.Pylon 以实时图像采集 ...

  8. 穿山甲android对接错误码40029,空Android项目集成Cocos、穿山甲。Lua调用网络接口。...

    1. 搭建安卓空项目.集成cocos.穿山甲广告新建安卓项目start new android projectEmpty Activity包名这里要和穿山甲上面已创建的应用的包... 1. 搭建安卓空 ...

  9. Android驱动面阵相机,了解线阵相机与面阵相机的基本区别

    先来了解线阵相机与面阵相机的基本区别 工业相机按照传感器的结构特性可分为面阵相机和线阵相机,面阵.线阵相机都有各自的优点和缺点,在用途不同的情况下选择合适的传感器的结构工业相机,至关重要. 1.类型区 ...

最新文章

  1. 语音合成模块 文本转TTS 真人发音 SYN6288
  2. Vivado中用于时钟操作的几个Tcl命令
  3. Applese 的取石子游戏
  4. 宏观 量子计算一句话
  5. chrome用type=file获取图片路径并转base64字符串
  6. 用Markup Validation Service进行网页的W3C标准语法验证(c#)
  7. 将C#中DateTime类型转化为JavaScript中的Date类型
  8. 【maven】The forked VM terminated without saying properly
  9. Centos 6.9 编译安装gcc 4.8.5
  10. 【资料整理】squid安装和配置代理上网
  11. Erlang 之父两点忠告:不要在疲惫时写代码、先思考再编程
  12. Android 使用Fragment,ViewPagerIndicator 制作csdn app主要框架
  13. 正则表达式应用(以手机号为例)
  14. 将World中的向下箭头替换为回车符
  15. 通过JS检测360浏览器
  16. 通过云打码实现验证码识别
  17. 哪些业务需要使用CDN加速服务?
  18. 【博文笔记】Attentive Reader\Impatient Reader:机器阅读理解之开山之作Teaching Machines to Read and Comprehend
  19. 洛谷P2178 [NOI2015]品酒大会 后缀数组+单调栈
  20. 怎么将几张pdf合并成一张_怎么把多个PDF文件合并成一个

热门文章

  1. 有限理性建模的方法和计算机平台,一类有限理性的建模和决策分析方法是的研究.docx...
  2. linux 解压7z的压缩包,解压多个拆分的压缩包
  3. 【目标检测】|MicroNet
  4. 速卖通怎么传html文件,速卖通怎么设置模板
  5. ActiveMQ的安装和启动 安装JAVA配置JAVA环境 下载ActiveMQ 解压压缩包 tar zxvf activemq-x.x.x-bin.tar.gz 至此,linux下Activ
  6. C++/C试题+答案
  7. 被国产芯片支配的恐惧——MAX3232 ESE+
  8. IDEAweb项目文件夹没有蓝色小点
  9. 2020年的第1周 | 关于南邮研究生意外死亡、《亲爱的安德烈》、再谈点菜
  10. 2017 github 上android 源码(适合工作中开发)