一、背景介绍

最近在项目中遇到一个需求,实现一个后台拍照的功能。一开始在网上寻找解决方案,也尝试了很多种实现方式,都没有满意的方案。不过确定了难点:即拍照要先预览,然后再调用拍照方法。问题也随之而来,既然是要实现后台拍照,就希望能在Service中或者是异步的线程中进行,这和预览这个步骤有点相矛盾。那有什么方式能够既能正常的实现预览、拍照,又不让使用者察觉呢?想必大家也会想到一个取巧的办法:隐藏预览界面。

说明一下,这只是我在摸索中想到的一种解决方案,能很好的解决业务上的需求。对于像很多手机厂商提供的“找回手机”功能时提供的拍照,我不确定他们的实现方式。如果大家有更好的实现方案,不妨交流一下。

关于这个功能是否侵犯了用户的隐私,影响用户的安全等等问题,不在我们的考虑和讨论范围之内。

二、方案介绍

方案实现步骤大致如下:

1.初始化拍照的预览界面(核心部分);

2.在需要拍照时获取相机Camera,并给Camera设置预览界面;

3.打开预览,完成拍照,释放Camera资源(重要)

4.保存、旋转、上传.......(由业务决定)

先大概介绍下业务需求:从用户登录到注销这段时间内,收到后台拍照的指令后完成拍照、保存、上传。以下会基于这个业务场景来详细介绍各步骤的实现。

1.初始化拍照的预览界面

在测试的过程中发现,拍照的预览界面需要在可显示的情况下生成,才能正常拍照,假如是直接创建SurfaceView实例作为预览界面,然后直接调用拍照时会抛出native层的异常:take_failed。想过看源码寻找问题的原因,发现相机核心的功能代码都在native层上面,所以暂且放下,假定的认为该在拍照时该预览界面一定得在最上面一层显示。

android 后台自动拍照,Android实现后台服务拍照功能相关推荐

  1. android设置自动亮度,Android亮度调节的几种实现方法

    最近在做一个App的设置项,亮度调节.真正做时,发现Android亮度调节比预想要复杂一些.其实目前网上已有不少这方面的资料,但有些博文具有一定误导性.在此将这块内容按照自己理解整理一下. 整体上看, ...

  2. android 360自动更新,Android应用自动更新功能的实现!!!

    大家好,发现半年没有更新博客了,最近一直都比较忙,决定在凌晨 英超 阿森纳VS富勒姆 中场休息的时候,给大家分享Android里应用版本更新功能这一块的实现. 一个好的应用软件都是需要好的维护,从初出 ...

  3. android 应用自动重启,Android:如何在“强制关闭”后自动重启应用程序?

    Android:如何在"强制关闭"后自动重启应用程序? 在Android应用程序中,如果我们没有得到正确的例外,我们通常会收到"强制关闭"错误. 如果强行关闭, ...

  4. android 应用自动重启,Android 应用崩溃后自动重启的方法

    public class HKApplication extends Application { private List activityList = new ArrayList(); @Overr ...

  5. android修改自动背光,Android LCD和键盘 背光亮度设置

    亮度设置 应用设计 1.1 设置进度条范围 背光设置是在:设置->声音和显示->亮度,通过进度条来设置的. 文件:packages/apps/Settings/src/com/Androi ...

  6. android 键盘 自动消失,android 键盘状态,获取键盘显示和隐藏

    要设置弹出键盘是否覆盖Activity的view,或者软键盘的显示隐藏状态,需要用到Activity的一个属性: android:windowSoftInputMode 该属性在AndroidMani ...

  7. Windows定时截屏、后台自动截屏工具,带有密码保护功能 —— 定时执行专家

    目录 一.软件简介 二.使用教程 1.软件下载 2.软件的安装方法 3.无察觉自动截屏(例如:间隔每 10分钟,执行 1次) 一.软件简介 <定时执行专家>是一款制作精良.功能强大.简单易 ...

  8. android edittext自动获取焦点,Android取消EditText自动获取默认焦点

    Android取消EditText自动获取默认焦点 发布时间:2020-10-02 14:08:30 来源:脚本之家 阅读:142 作者:ganchuanpu 最近在通讯录新建联系人=中,一进入一个页 ...

  9. android文字自动滚动,Android TextView文字横向自动滚动(跑马灯)

    TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" 2.设置可滚到,或显示样式:android:elli ...

  10. android notification自动消失,Android开发 -- 状态栏通知Notification、NotificationManager详解...

    本想自己写一个的,但是看到这篇之后,我想还是转过来吧,实在是非常的详细: 在Android系统中,发一个状态栏通知还是很方便的.下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? ...

最新文章

  1. RIFF格式声音文件的实现(转)
  2. Linux文件系统只读Read-only file system
  3. Linux ps指令
  4. Java常见面试题及答案汇总
  5. 张俊红21岁的年度总结
  6. 从NetBeans运行和调试WildFly Swarm应用程序
  7. Oracle C#处理时间类型的Insert
  8. SQLServer生成带数据的脚本
  9. 二、Sql Server 基础培训《进度2-关于主键(知识点学习)》
  10. 计算机类参考文献 期刊,期刊参考文献标准格式
  11. layui form表单提php验证,layui表单验证介绍
  12. vue+ 高德地图 热力图
  13. 如何提高mysql的update速度_如何提高数据库update更新的速度
  14. C# PDF转图片(JPG,Png)
  15. 计算机科学与技术如何创新,计算机科学与技术专业创新能力的培养途径
  16. 遥感科学与技术和计算机专业哪个好,遥感科学与技术专业就业方向及就业前景分析...
  17. 微信小程序的环境准备
  18. postman的使用
  19. 人工智能帮你生成中意的名字
  20. 获取元素到body顶部的距离,offsetTop和offsetParent,getBoundingClientRect

热门文章

  1. .NET 6 Minimal API 的经验分享
  2. Android 在build.gradle文件中读取json文件
  3. 利用jsoup解析网站网页
  4. 数据结构与算法实验6——图论 7-9 哥尼斯堡的“七桥问题”
  5. 怎么申请企业邮箱,企业邮箱快速登录入口
  6. 共享充电宝再涨价达每小时6元 客服:市场需求决定的
  7. Mask RCNN 实战(二)--像黑镜一样屏蔽图片和视频中的人和物体
  8. R(13):第三章:3.2数据的分布
  9. 计算机设备管理器被禁用,win系统管理员被禁用在安全模式的解决方法
  10. 二十三种设计模式简介及类图(转载)