|
2 years ago | |
---|---|---|
.. | ||
$M0F6%6YR4@P8~%~8PAC1CT.png | 2 years ago | |
README.md | 2 years ago | |
cf932064c00fbe90a1949afc62fe2ab-16460777703611.png | 2 years ago | |
cf932064c00fbe90a1949afc62fe2ab-16460782464393-16460782486594.png | 2 years ago | |
cf932064c00fbe90a1949afc62fe2ab-16460782464393.png | 2 years ago | |
cf932064c00fbe90a1949afc62fe2ab.png | 2 years ago | |
image-20220315120738982.png | 2 years ago | |
image-20220315120759724.png | 2 years ago | |
watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6KGM6KGMeGg=,size_20,color_FFFFFF,t_70,g_se,x_16.png | 2 years ago |
本项目基于openharmony成功实现了按键操作照相机,照相机拍照,录像,预览等功能
参考文档
https://gitee.com/openharmony/multimedia_camera_standard
https://blog.csdn.net/scy518/article/details/12022092
参考官方文档搭建OpenHarmony Beta3.1版本代码标准系统开发环境
如果测试demo03下载OpenHarmony 3.0 LTS 版本
#repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.0-LTS --no-repo-verify
如果测试demo01或demo02使用Beta3.1版本代码
#repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Beta --no-repo-verify
#repo sync -c #repo forall -c 'git lfs pull'
Demo01
按键操作系统照相机,此处内容参考于 Camera组件讲解 https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driver-peripherals-camera-des.md https://gitee.com/openharmony/multimedia_camera_standard
linux文件操作GPIO
https://blog.csdn.net/scy518/article/details/12022092
将本仓库key_camera文件夹下源码下载并替换到/drivers/peripheral/camera/hal/init路径下相同名称代码,标准系统编译烧录,启动系统后进入bin目录,运行ohos_camera_demo应用,在按下按键后输入q,即可看到成功拍照,同时自动退出应用,也可根据提示测试不同功能案例
Demo02
按键操作简单照相机,此处内容参考于 Camera组件讲解 https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driver-peripherals-camera-des.md https://gitee.com/openharmony/multimedia_camera_standard
https://blog.csdn.net/scy518/article/details/12022092
将本仓库ai_camera文件夹源码下载到 src/applications/standard/app 路径下,app是新建文件夹 在applications\standard\hap\ohos.build文件路径下 module_list里增加 "//applications/standard/app:ai_camera"
执行编译命令 ./build.sh --product-name Hi3516DV300 --ccache
烧录后进入bin目录,运行编译文件
cd bin ./ai_camera
按下按键即可拍照
bin目录中的ai_camera应用
按键照相运行截图
进入/data/capture目录下可查看拍照存储的文件
Demo03
camera_sample使用 参考应用开发实例 https://docs.openharmony.cn/pages/000600020002/
https://gitee.com/openharmony/multimedia_camera_standard
此处内容基于OpenHarmony3.0LTS版本源代码 使用方法 说明:开发板启动后默认会加载launcher应用,应用的图形界面默认显示在媒体图层上方,会影响camera_sample的演示结果,因此需要在编译或是打包时去掉launcher应用。 修改方法:将“build/lite/components/applications.json”中camera_sample_app组件的targets中"//applications/sample/camera/launcher:launcher_hap"整行注释或删除。 修改源码路径“applications/sample/camera/media/BUILD.gn”中第一处的output_dir。
修改前:output_dir = "$root_out_dir/dev_ools" 修改后:output_dir = "$root_out_dir/" 重新执行源码仓编译并烧写入单板后,可在单板bin目录下找到camera_sample文件。
camera_sample是源代码中提供的一个相机实例,可以作为开发者的实例参考 启动后bin目录如图所示
启动camera_sample
说明
输入 1:启动拍照 2:启动摄像 3: 启动预览 q:退出
仓目录结构如下:
/foundation/multimedia/camera_standard # 相机组件业务代码 ├── frameworks # 框架代码 │ ├── native # 内部接口实现 │ │ ├── camera # 相机框架实现 │ │ └── metadata # 元数据实现 │ └── js # 外部接口实现 │ └── camera_napi # 相机NAPI实现 ├── interfaces # 接口代码 │ ├── inner_api # 内部接口 │ └── kits # 外部接口 ├── LICENSE # 许可证文件 ├── ohos.build # 构建文件 ├── sa_profile # 服务配置文件 └── services # 服务代码 ├── camera_service # 相机服务实现 └── etc # 相机服务配置
使用linux自带通用GPIO驱动
参考
Linux通用GPIO驱动写法与应用_scy518的博客-CSDN博客
GPIO口信息可以从原理图中获取:
可以看到两个自定义按钮的GPIO口分别是:GPIO0_1,GPIO0_2
从文档,了解到Hi3516DV300有控制器管理12组GPIO管脚,每组8个。
GPIO号 = GPIO组索引 (0~11) * 每组GPIO管脚数(8) + 组内偏移
举例:GPIO10_3的GPIO号 = 10 * 8 + 3 = 83
所以,按钮
GPIO0_1 = 0 * 8 + 1 = 1
GPIO0_2 = 0 * 8 + 2 = 2
GPIO配置:
函数声明
函数定义,例如
完成后即可进行GPIO口的初始化,引脚输入输出定义
相机驱动的使用可以通过查看文档说明: https://gitee.com/openharmony/multimedia_camera_standard
1.创建缓冲区消费者端监听器(CaptureSurfaceListener)以保存图像。
2.获取相机管理器实例并获取相机对象列表。
3.使用相机对象创建相机输入来打开相机。
4.创建采集会话。
5.开始配置采集会话。
6.将相机输入添加到采集会话。
7.将相机输入添加到采集会话。
8.将相机输入添加到采集会话。
9.将拍照输出添加到采集会话。
10.将配置提交到采集会话。
11.拍摄照片。
12.释放采集会话资源。
13.释放采集会话资源。