如何写一个相机APP的demo

如何写一个相机APP的demo,第1张

文章目录

前言

一、环境搭建

二、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增加控件,随便找个模板加上即可

 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里增加相机使用权限


         2.增加存储读写权限

        相机预览正常了,但是拍照挂掉,“AndroidRuntime: java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!”,想到拍照会去写文件 *** 作,所以需要增加存储权限

        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数据进行二次处理 

       

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/871141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存