当前课程知识点:Android应用开发基础 > 第八章 多媒体 > 8.1 相机服务 > 8.1.1实践案例-拍照服务
本节我们介绍如何使用相机权限实现拍照服务
下面是一个拍照实例
点击拍摄按钮
拍摄照片
并将照片显示出来
首先创建一个应用程序
右击项目名
依次选择 “New” |“Module”
设置应用程序的名字
在视图设置中
选择“Empty Activity”空白视图
视图的名字和布局的名字选择默认
进入res\layout\activity_main布局文件
修改布局类型为LineLayout线性布局
排列方向为垂直
新建Button组件
设置宽度为充满
高度为适配
ID为btn_take_photo
文本为“拍摄”
复制Button组件
设置ID为btn_choose_album
文本为“从相册中选择”
新建ImageView组件
设置宽度和高度为适配
ID为img_photo
设置水平居中
选中activity_main布局文件
点击右键选择Generate LayoutCreator
组件变量命名采用mAaBbCc的方式
自动生成组件初始化的代码
新建私有变量mImageUri代表图片的路径
新建常量
TAKE_PHOTO为1
新建常量
CHOOSE_PHOTO=2
在Button响应函数onClick中新建takePhoto()方法
在takePhoto()方法中创建File对象
用于存储拍摄的照片
把图片命名为output.jpg
调用getExternalCacheDir()方法获取
SD卡的应用关联缓存目录
将图片存在该目录下
使用错误处理语句try-catch
如果图片已经存在
则删除图片
否则创建该图片文件
当Android版本小于7.0时
调用Uri的fromFile()方法将File对象转换成Uri对象
否则
就调用FileProvider的getUriForFile()方法
将File对象转换成一个封装过的Uri对象
构建Intnet对象
并将action指定为
android.meta.action.IMAGE_CAPTURE
再调用Intent的putExtra()方法
指定图片的输出地址为获取的uri对象
使用startActivityForResult()来启动活动
使用Ctrl+O快捷键重写
onActivityResult()方法
如果拍照成功
则调用BitmapFactory的decodeStream()方法
将output.jpg这张照片解析成Bitmap对象
并把它设置到ImageView中显示出来
进入AndroidManifest.xml文件
声明访问SD卡的权限
注册内容提供器
其中
authorities属性的值必须要和
getUriForFile()方法的authority参数的值一致
android:name属性的值是固定的
android:exproted的值为“false"
android:grantUriPermissions的值为true
创建并引用一个@xml/file_paths资源文件
编写file_paths文件
其中
external-path用来指定Uri共享
path属性的值表示共享路径
当路径为空时表示将整个SD卡进行共享
代码编写完成后运行程序
点击拍摄按钮拍摄照片
并将照片显示在ImageView
这就是手机拍照服务的全部内容
请大家按照讲课的内容完成手机拍照功能
在Android的手机中运行
通过实例理解手机拍照的流程
-Android Studio4.1.2安装常用问题汇总2021.3.15
-1.1 Android概述
--1.1 Android Studio安装与配置-实践案例
-1.1 Android概述--作业
-1.2 Android程序
-1.2 Android程序--作业
-1.3 Android程序调试
-1.3 Android程序调试--作业
-2.1 Activity概述
-2.1 Activity概述--作业
-2.2 Activity应用
-第2章 Android视图--2.2 Activity应用
-3.1 Activity布局
-3.1 Activity布局--作业
-3.2 Android基础组件
-3.2 Android基础组件--作业
-3.3 Android中级组件
-3.3 Android中级组件--作业
-3.4 Android适配器
-3.4 Android适配器--作业
-4.1 Fragment碎片组件
-4.1 Fragment碎片组件--作业
-4.2 ViewPager翻页类组件
-4.2 ViewPager翻页类组件--作业
-讨论:fragment与activity的生命周期有哪些不同?
-5.1 Android广播概述
-5.1 Android广播概述--作业
-5.2 Android广播工作原理
-5.2 Android广播工作原理--作业
-5.3 自定义广播
-第5章 广播--5.3 自定义广播
-5.4 有序广播
--5.4有序广播
-第5章 广播--5.4 有序广播
-6.1 系统服务概述
-6.1 系统服务概述--作业
-6.2 访问系统服务
-6.2 访问系统服务--作业
-6.3 自定义服务
-第6章 Android服务--6.3 自定义服务
-6.4 多线程
--6.4 多线程
-第6章 Android服务--6.4 多线程
-7.1 Android运行权限
-7.1 Android运行权限--作业
-7.2 URL URI概述
-第7章 内容提供者ContentProvider--7.2 URL URI概述
-7.3 ContentProvider概述
-第7章 内容提供者ContentProvider--7.3 ContentProvider概述
-7.4 访问通讯录
-第7章 内容提供者ContentProvider--7.4 访问通讯录
-7.5 课后作业案例
-8.1 相机服务
--8.1 相机服务
-8.1 相机服务--作业
-8.2 音视频服务
-8.2 音视频服务--作业
-9.1 网络服务概述
-9.1 网络服务概述--作业
-9.2 网络框架
--9.2 网络框架
-9.2 网络框架--作业
-9.3 Json
--9.3 Json
-第9章 网络技术--9.3 Json
-9.4 Volley
-第9章 网络技术--9.4 Volley
-10.1 文件存储
--10.1.3 实践案例-SharedPreference文件读写
-10.1 文件存储--作业
-10.2 数据库存储
-10.2 数据库存储--作业
-第1章 实训简介以及开发环境配置
-第2章 在线音乐播放器整体设计以及服务端开发
-第3章 在线音乐播放器-客户端开发
-第4章 在线音乐播放器-完整版
-第5章 QQ聊天项目
-第6章 在线点餐系统