如何写一个相机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 ...
最新文章
- python moviepy textclip中文_用Python玩转视频剪辑,秀的飞起!
- golang float64 保留2位小数
- mysql 普通索引使用方法,Mysql索引类型与基本用法实例分析
- c++ 字符串数组长度排序_数组 | 后缀数组的求法及应用
- 100个程序员学习的网站
- HDU4267(2012年长春站)
- android emmc 命令,使用CoreELEC的ceemmc工具将系统写入emmc
- C 实现 删除字符串空白符的函数 strtrim
- LeetCode 637. Average of Levels in Binary Tree
- Java实现计算饮料价格GUI版(入门)
- 成立了汽车与智能出行事业部的阿里云,如何建立云上行业生态?
- 【渝粤教育】国家开放大学2018年秋季 0242-21T机械制图 参考试题
- warning: malformed '#pragma pack(pop[, id])' - ignored
- 抓包工具tcpdump的使用总结(持续更新)
- MyBatis源码阅读(八) --- Executor执行器
- Java学习思维导图整理
- 语音混响制作matlab,1 语音信号的延时和混响
1)利用Windows下的录音机或其他软件,录制一段自己的 matlab 238万源代码下载- www.pudn.com...
- nRF52笔记(5)sniffer 抓包
- JVM 宋红康版 : JVM与Java体系结构
- javascript(一)