如何写一个相机APP的demo
文章目录
前言
一、环境搭建
二、Demo开发
1.参考
2.编译
1.androidx编译不过
2.增加R.id.textview和R.id.button
3.安装
4.运行
1.增加相机使用权限
2.增加存储读写权限
3.图片保存
5.后续
前言
之前一直研究相机Framework和HAL的代码,对相机应用这块感觉有点缺失,写一个简单的demo应该也不难,动手开干
一、环境搭建
往回翻了下历史博客中,当时有记录使用Eclipse开发应用的记录,但看完之后各种软件下载安装等特别复杂,于是网上又搜索了下,找到了一个介绍非常详细和简单的开发指导:使用AndroidStudio,参考:android studio安装教程(包安装成功,不成功你找我)_急递客的博客-CSDN博客_安卓studio
考虑到自己手机的Android版本,选择了API Level 28,模拟器Android Virtual Device(AVD)不知道什么原因没有安装成功,也没继续研究,直接用自己的手机调。
二、Demo开发
1.参考
深入理解Android相机体系结构之三_xiaozi63的博客-CSDN博客_android oncompleted
这篇文章在介绍TextureView和ImageReader等是非常准确的,里面也给了一个简单的demo实例代码,代码也是非常具有参考意义的,涉及预览、拍照,就来调它了。
2.编译
1.androidx编译不过
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
这里面使用到了androidx,这应该是更高的版本,也没解决(其实也不想投入过多精力去解决,因为应用毕竟不是自己的重点),使用低版本的库提替代即可
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.annotation.NonNull;
替换之后,解决其他编译问题:比如使用ContextCompat替换ActivityCompat等
2.增加R.id.textview和R.id.button
这个应该是在activity_main.xml增加控件,随便找个模板加上即可
<TextureViewandroid:id="@+id/textview"android:layout_width="match_parent"android:layout_height="match_parent"/><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="50dp"/>
3.安装
点击“Run App”之后开始在手机上install,install之后第一次安装成功,但卸载之后再次install的话显示安装成功,但在手机上也没找到。Terminal上显示的错误是“Activity class {package/class} does not exist ”,参考Activity class {package/class} does not exist原因及解决方法_程序猿秃头之路的博客-CSDN博客
通过手动adb uninstall解决
4.运行
1.增加相机使用权限
打开app,直接奔溃退出,抓log,显示“"com.example.administrator.myapplication" (PID 10277, UID 29529) cannot open camera "0" without camera permission”
在AndroidManifest.xml里增加相机使用权限
<uses-permission android:name="android.permission.CAMERA"/> <uses-feature android:name="android.permission.camera"/>
2.增加存储读写权限
相机预览正常了,但是拍照挂掉,“AndroidRuntime: java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!”,想到拍照会去写文件操作,所以需要增加存储权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3.图片保存
图片保存路径打印显示是/storage/emulated/0/photo-test.jpg,可以按照自己想要的路径去保存,但图库中不会立刻显示,过会时间才会显示,可以搜索下解决。
5.后续
1.setOnFrameAvailableListener
该Demo没有使用TextureView访问预览的数据,也就是要写一个setOnFrameAvailableListener这个可以继续增加相关代码验证
2.google 原生app
google原生app代码路径
将 Google Camera2 迁移为 Gradle 编译
3.SurfaceView和SurfaceTexture
一文了解surface,surfaceview,surfaceTexture,GLsurfaceView
像美图秀秀这种三方应用,需要通过surfacetexture获取buffer数据进行二次处理
如何写一个相机APP的demo相关推荐
- 手把手教你写一个Matlab App(一)
对于传统工科的学生用的最多的编程软件应该就是matlab,其集成度高,计算能力强,容易上手,颇受大众青睐.今天挖的这个新坑,主要是分享用matlab app designer设计GUI界面的一些方法和 ...
- 手把手教你写一个安卓app
最近有很多小伙伴在后台留言:Android Studio.我想大家是想写一个手机app,前面已经分享了在QT上如何写一个安卓蓝牙app,虽然qt可以做app,但是比起Android Studio还是差 ...
- 如何写一个安卓APP
写一个安卓APP需要以下步骤: 首先确定你的APP要实现什么功能,明确需求. 然后准备好开发工具和环境.一般来说,安卓APP的开发工具为Android Studio,需要先下载并安装. 接着,学习Ja ...
- [Kotlin]手把手教你写一个安卓APP(第一章注册登录)
1.创建项目默认选择Empty Activity 点击Next ...
- 如何用Python写一个安卓APP
前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般 ...
- python能开发安卓app吗_如何Python写一个安卓APP
前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般 ...
- 写一个简单的 django_post demo
1.新建一个django工程,其路由为下图 2.要做的是一个 简单的登录请求,以表单形式提交,html 部分代码如下 这里注意action指向的是路由的地址,index1后的views.login部分 ...
- 写一个有app控制的自动开锁系统
好的,我来为您解决这个问题. 首先,我们需要安装一个带有蓝牙功能的智能手机应用程序,这样就可以通过手机控制自动开锁系统. 其次,我们需要在门上安装一个带有蓝牙模块的自动开锁器.这样,当手机应用程序发出 ...
- electron 安装import_Electron: 从零开始写一个记事本app
Electron介绍 简单来说,Electron就是可以让你用Javascript.HTML.CSS来编写运行于Windows.macOS.Linux系统之上的桌面应用的库.本文的目的是通过使用Ele ...
最新文章
- 开发工具之Eclipse快捷键
- 大脑认知能力获突破进展!《科学》发现促进大脑发育期间的关键细胞器
- JVM 垃圾回收器工作原理及使用实例介绍
- 应聘腾讯,面试官和我聊了一个小时的人生
- 【转摘留用】页面静态化..
- leetcode 572. 另一个树的子树(Java版)
- git remote: HTTP Basic: Access denied
- codeforces855 C. Helga Hufflepuff‘s Cup(树形dp)
- linux之睡眠函数(my_sleep)
- Grafana展示DNS解析延时
- 跨域解决方案CROS最简单演示——JSP演示示例
- CentOS上安装man手册
- glibc中malloc源码分析
- Python 实现PID控制一阶惯性系统
- 计算机休眠下睡眠的不同点是什么,电脑休眠和睡眠的区别是什么
- 百度地图 大头针设置本地图片与网络图片
- 2016年中考计算机考试模拟试题,2016年计算机三级考试模拟试题(含答案)
- 简单介绍一下v-if 的几种用法
- python接入萤石云HLS直播流(海康威视摄像头4g连接条件下)
- JAVA代码添加License
热门文章
- 新品发布:长条屏!广州大彩医用级3.7寸串口屏正式发布!
- 用友NC开发本地启动客户端时界面空白问题的解决
- set集合及(交集,差集,并集)计算
- Onedrive同步任意文件夹(Windows)
- Git安装教程超详细(Windows系统)
- java程序化交易软件_TradeApi为A股程序化交易接口2.9.0发布,支持2019年12月的交易客户端版本...
- 关于支付宝的免签支付技术
- 移动互联网时代:如何用手机精细化管理企业?
- 前端数据展示为符号∞等情况
- java有个策略龙蛋的什么游戏_我的世界龙蛋怎么孵化 龙蛋孵化详细攻略