Difference between revisions of "Template:RK3399-Android8/zh"
(updated by API) |
(updated by API) |
||
(47 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
==Android8.1 系统的使用== | ==Android8.1 系统的使用== | ||
− | 我们为 '''{{{1}}}''' 提供了完善的Android8.1 BSP,代码使用 gitlab.com 平台管理,完全开源,支持GPU加速和VPU硬件加速。 | + | 我们为 '''{{{1}}}''' 提供了完善的Android8.1 BSP,代码使用 gitlab.com 平台管理,完全开源,支持GPU加速和VPU硬件加速。<br /> |
+ | [[File:rk3399android8.png|frameless|600px]] | ||
+ | |||
+ | |||
===使用MIPI摄像头进行拍照和录像=== | ===使用MIPI摄像头进行拍照和录像=== | ||
{{{1}}}在Android系统下,可以搭配 MIPI摄像头CAM1320 进行拍照和录像,操作比较简单,连接摄像头到{{{1}}}的MIPI接口,开机进入 Android 系统,用系统自带的 Camera 应用即可完成拍照和录像,操作跟 Android 手机是一样的。<br /> | {{{1}}}在Android系统下,可以搭配 MIPI摄像头CAM1320 进行拍照和录像,操作比较简单,连接摄像头到{{{1}}}的MIPI接口,开机进入 Android 系统,用系统自带的 Camera 应用即可完成拍照和录像,操作跟 Android 手机是一样的。<br /> | ||
+ | {{#switch: {{{1}}} | ||
+ | | NanoPC-T4 = | ||
+ | NanoPC-T4板上共有两个MIPI接口可以连接两个摄像头分别对应前置摄像头和后置摄像头,其对应关系如下表所示:<br /> | ||
+ | '''MIPI-CSI1''' <--> '''Android 后置摄像头'''<br /> | ||
+ | '''MIPI-CSI2''' <--> '''Android 前置摄像头'''<br /><br /> | ||
+ | 连接方法如下图所示:<br /> | ||
+ | [[File:T4-mipi-dual-camera.jpg|frameless|600px]]<br> | ||
+ | | NanoPi-M4 = | ||
+ | NanoPi-M4板上共有两个MIPI接口可以连接两个摄像头分别对应前置摄像头和后置摄像头,其对应关系如下表所示:<br /> | ||
+ | '''MIPI-CSI1''' <--> '''Android 后置摄像头'''<br /> | ||
+ | '''MIPI-CSI2''' <--> '''Android 前置摄像头'''<br /><br /> | ||
+ | 连接方法如下图所示:<br /> | ||
+ | [[File:M4-mipi-dual-camera.jpg|frameless|600px]]<br> | ||
+ | | NanoPi-M4V2 = | ||
+ | NanoPi-M4V2板上共有两个MIPI接口可以连接两个摄像头分别对应前置摄像头和后置摄像头,其对应关系如下表所示:<br /> | ||
+ | '''MIPI-CSI1''' <--> '''Android 后置摄像头'''<br /> | ||
+ | '''MIPI-CSI2''' <--> '''Android 前置摄像头'''<br /><br /> | ||
+ | 连接方法如下图所示:<br /> | ||
+ | [[File:M4-mipi-dual-camera.jpg|frameless|600px]]<br> | ||
+ | | NanoPi-M4B= | ||
+ | NanoPi-M4B板上共有两个MIPI接口可以连接两个摄像头分别对应前置摄像头和后置摄像头,其对应关系如下表所示:<br /> | ||
+ | '''MIPI-CSI1''' <--> '''Android 后置摄像头'''<br /> | ||
+ | '''MIPI-CSI2''' <--> '''Android 前置摄像头'''<br /><br /> | ||
+ | 连接方法如下图所示:<br /> | ||
+ | [[File:M4-mipi-dual-camera.jpg|frameless|600px]]<br> | ||
+ | | NanoPi-NEO4 = | ||
+ | NanoPi-NEO4板上只有1个MIPI接口,对应后置摄像头:<br /> | ||
+ | '''MIPI-CSI1''' <--> '''Android 后置摄像头'''<br /><br /> | ||
+ | 连接方法如下图所示:<br /> | ||
+ | [[File:Neo4-mipi-single-camera.jpg|frameless|600px]]<br> | ||
+ | | #default = | ||
+ | }} | ||
− | {{{1}}} | + | ===使用双MIPI摄像头预览与录像=== |
+ | 从github下载以下示例源代码,并用 Android studio 编译并运行: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | git clone https://github.com/friendlyarm/Dual-Camera.git -b working-branch | ||
+ | </syntaxhighlight> | ||
+ | 应用安装后,需要'''设置Android权限'''才能让程序正常运行,方法是在开发板的Android系统里进入 Settings -> Apps & notifications -> Dual Camera -> Permissions 钩选以下权限: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | Camera | ||
+ | Microphone | ||
+ | Storage | ||
+ | </syntaxhighlight> | ||
+ | 最终运行效果如下:<br /> | ||
+ | [[File:Android_dual_camera_demo.jpg|frameless|600px]]<br /> | ||
+ | 点击界面上的 "CAPTURE VIDEO" 按钮即可录制视频(同时录两个摄像头),录制的视频保存到以下位置:/storage/emulated/0/Download/dualcamera_h264.mp4,电脑上可以用以下adb命令下载到本地: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | adb pull /storage/emulated/0/Download/dualcamera_h264.mp4 | ||
+ | </syntaxhighlight> | ||
+ | '''已知问题''':<br /> | ||
+ | 录制的视频文件,播放时会比正常的快,可能需要调整mediacodec的某些参数 | ||
+ | |||
+ | |||
+ | ===切换系统语言=== | ||
+ | Android系统默认的系统语言是英文,比如我们要设置为中文,步骤如下: | ||
+ | 1) 进入 Android 设置:Settings -> System -> Languages & Input -> Languages; <br /> | ||
+ | 2)点击"Add a language", 在列表中选择 "简体中文",再选择 "中国"; <br /> | ||
+ | 3) 这时列表中会有中文和英文两种语言,拖动中文那一项到列表的最上面即可,注意,如果你使用的是鼠标,拖动的方法是:将鼠标指针放在列表项右边的图标上,然后按下鼠标中键来拖动; <br /> | ||
+ | |||
+ | ===Android8.1 硬件访问=== | ||
+ | 开发者可以通过FriendlyThings SDK在Android App中访问和控制主板上的各种硬件资源,比如Uart, SPI, I2C, GPIO等接口,详情可参考以下两份文档: | ||
+ | *[[FriendlyThings for Rockchip/zh|Android: FriendlyThings for Rockchip]] | ||
+ | *[[FriendlyThings APIs/zh|Android: FriendlyThings APIs]] | ||
+ | |||
+ | ===Android神经网络 NN SDK示例=== | ||
+ | Android8.1 BSP中包含了支持GPU加速的Android NN SDK,为了方便测试,Android8固件中也预装了原厂提供的Android NN示例程序:TfLiteCameraDemo,这是一个使用Rockchip AndroidNN GPU加速的MobileNet分类器Demo,运行时需要连接摄像头模块,USB和CSI摄像头都是支持的,通过点击 “TfLiteCameraDemo”图标进入示例,其运行效果如下所示:<br /><br /> | ||
+ | [[File:TfLiteCameraDemo.png|frameless|600px]]<br /> | ||
+ | 关于Android NN SDK的详细描述,可以去网上参考原厂的文档<br /> | ||
+ | TfLiteCameraDemo示例源代码下载地址:[https://github.com/rockchip-linux/tensorflow/tree/master/tensorflow/contrib/lite/java/demo [TfLiteCameraDemo源代码]]<br /> | ||
+ | |||
+ | ===如何使用adb(Android Debug Bridge)=== | ||
+ | ====在Windows10下使用adb==== | ||
+ | 1. 准备一个烧写好安卓系统的 '''{{{1}}}''' ,一条Typc-C数据线<br /> | ||
+ | 2. 在dl.friendlyelec.com找到 '''{{{1}}}''' 的网盘,进入后下载Tools文件夹下的adb.zip<br /> | ||
+ | [[File:T4_andriod_adb_00.jpg|frameless|800px]]<br /> | ||
+ | 3. 解压adb.zip<br /> | ||
+ | [[File:T4_andriod_adb_01.jpg|frameless|800px]]<br /> | ||
+ | 4. 按win+R打开“运行”窗口,输入“cmd”打开命令行工具<br /> | ||
+ | [[File:T4_andriod_adb_02.jpg|frameless|800px]]<br /> | ||
+ | 5. 在命令行工具输入以下命令转到adb工具的所在路径:<br /> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | cd c:\adb | ||
+ | </syntaxhighlight> | ||
+ | [[File:T4_andriod_adb_03.jpg|frameless|800px]]<br /> | ||
+ | 6. 输入以下命令会出现adb的版本信息和使用说明,说明adb可用:<br /> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | adb | ||
+ | </syntaxhighlight> | ||
+ | [[File:T4_andriod_adb_04.jpg|frameless|800px]]<br /> | ||
+ | 7. 把烧写好安卓系统的 '''{{{1}}}''' 接上电源,用Type-C数据线连接 '''{{{1}}}''' 和电脑,然后在命令行工具输入:<br /> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | adb devices | ||
+ | </syntaxhighlight> | ||
+ | 可看到返回的设备信息,说明Win10已经通过adb检测到 '''{{{1}}}''' ,之后可以在Win10下对设备进行操作<br /> | ||
+ | [[File:T4_andriod_adb_05.jpg|frameless|800px]]<br /> | ||
+ | 8. 尝试在Win10下使用命令在设备上安装安卓应用,下载一个APK文件,然后输入“adb install 文件名.apk”,如:<br /> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | adb install QQ_Android_8.3.6.apk | ||
+ | </syntaxhighlight> | ||
+ | 看到“Success”的提示即安装成功<br /> | ||
+ | [[File:T4_andriod_adb_06.jpg|frameless|800px]]<br /> | ||
+ | |||
+ | ====在Ubuntu下使用adb==== | ||
+ | 1. 把烧写好安卓系统的 '''{{{1}}}''' 接上电源,用Type-C数据线连接 '''{{{1}}}''' 和电脑,打开“终端”<br /> | ||
+ | [[File:T4_ubuntu_adb_01.jpg|frameless|800px]]<br /> | ||
+ | 2. 输入以下命令安装adb工具,这时要求输入用户密码:<br /> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | sudo apt-get install android-tools-adb | ||
+ | </syntaxhighlight> | ||
+ | [[File:T4_ubuntu_adb_02.jpg|frameless|800px]]<br /> | ||
+ | 3. 安装过程中弹出下载提示,输入“Y”然后按Enter确认<br /> | ||
+ | [[File:T4_ubuntu_adb_03.jpg|frameless|800px]]<br /> | ||
+ | 等待安装完成<br /> | ||
+ | [[File:T4_ubuntu_adb_04.jpg|frameless|800px]]<br /> | ||
+ | 4. 在命令行工具输入以下命令查看设备:<br /> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | adb devices | ||
+ | </syntaxhighlight> | ||
+ | 可看到返回的设备信息,说明Ubuntu已经通过adb检测到 '''{{{1}}}''' <br /> | ||
+ | [[File:T4_ubuntu_adb_05.jpg|frameless|800px]]<br /> | ||
+ | |||
+ | ====adb下修改系统文件==== | ||
+ | 1. 第一次启动系统,如果需要更改系统文件,需要关闭安全验证 (注:安装apk不需要关闭),关闭安全验证后需要重启 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | adb root | ||
+ | adb disable-verity | ||
+ | adb reboot | ||
+ | </syntaxhighlight> | ||
+ | 2. 重启后,获得root权限,并重新挂载 /system 开启写入权限 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | adb root | ||
+ | adb remount | ||
+ | </syntaxhighlight> | ||
+ | 3. 上传文件 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | adb push example.txt /system/ | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ====注意事项==== | ||
+ | 部分电脑USB端口可能供电不足,如使用NanoPi M4系列请使用PSU Module供电 | ||
+ | |||
+ | ===HDMI分辨率、边界调节=== | ||
+ | 如果连接了HDMI显示设备,可进入 Android 的 Settings -> Display -> Advanced -> HDMI & Rotation 进行设置。 | ||
::{| class="wikitable" | ::{| class="wikitable" | ||
|- | |- | ||
− | | | + | |HDMI Resolution || 缺省为 Auto,可手动设置显示分辨率,最高可支持 4K 分辨率 |
|- | |- | ||
− | | | + | |Screen Zoom || 用户可观察红色边框的显示,点击中间的4个箭头按钮来进行缩放调节 |
|- | |- | ||
− | | | + | |Display Rotation || 可进行横竖屏切换 |
|} | |} | ||
− | === | + | ===屏幕旋转=== |
− | + | 使用HDMI与LCD作为显示设备时,如果需要旋转屏幕,可进入 Android 的 Settings -> Display -> Advanced -> HDMI & Rotation -> Display Rotation 进行设置。<br /><br /> | |
− | + | 在 adb shell 用命令来测试屏幕旋转 (不会保存设置):<br /> | |
− | + | <syntaxhighlight lang="bash"> | |
+ | wm rotation 90 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===隐藏Navigation bar=== | ||
+ | 进入设置界面 Settings -> Accessibility,启用 Immersive Mode,然后再打开你的 Android应用,例如 Lightning,你会发现它将处于全屏状态。 | ||
+ | |||
+ | ===切换音频输出通道=== | ||
+ | 可以配置音频输出到HDMI或者耳机接口,设置入口:Android 的 Settings -> Accessibility -> Force audio output。 | ||
+ | 如果 Force audio output菜单项是灰色的,即处于不可选择的状态,说明你所用的硬件会自动检测耳机插拨状态,并自动切换音频通道,无需设置。 | ||
+ | |||
+ | ===调整录音的音量=== | ||
+ | 1) 先通过串口或adb shell,以root用户权限使用amix 命令调节录音的音量,例如: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | amix "IN2 Boost" | ||
+ | amix "ADC Capture Volume" | ||
+ | </syntaxhighlight> | ||
+ | 以上命令用于查看当前的设置,然后便可根据支持的值来调节并测试。<br /> | ||
+ | 2) 调试好后,修改 hardware/rockchip/audio/tinyalsa_hal/codec_config/rt5651_config.h 文件中 rt5651_main_mic_capture_controls 数组中对应配置项的值,编译Android源代码并测试。 | ||
+ | |||
+ | ===定制开关机界面与动画=== | ||
+ | ====开启与关闭==== | ||
+ | 将 device/rockchip/common/BoardConfig.mk 文件的<br /> | ||
+ | BOOT_SHUTDOWN_ANIMATION_RINGING := false<br /> | ||
+ | 改为<br /> | ||
+ | BOOT_SHUTDOWN_ANIMATION_RINGING := true<br /> | ||
+ | 来打开编译时将文件打包进固件的功能<br /> | ||
+ | ====开机动画==== | ||
+ | 创建或替换Android源代码目录下的如下文件:<br /> | ||
+ | kernel/logo.bmp<br /> | ||
+ | kernel/logo_kernel.bmp<br /> | ||
+ | device/rockchip/common/bootshutdown/bootanimation.zip<br /> | ||
+ | ====关机动画==== | ||
+ | 创建或替换Android源代码目录下的如下文件:<br /> | ||
+ | device/rockchip/common/bootshutdown/shutdownanimation.zip<br /> | ||
+ | ====动画制作方法==== | ||
+ | 请参考:http://blog.sina.com.cn/s/blog_4960586c0100vu5v.html | ||
+ | |||
+ | ===移除Google框架=== | ||
+ | 如果不需要使用google服务,可以删除Google框架以节约系统资源,方法是删除Android源代码中的以下目录,然后重新编译Android:<br /> | ||
+ | vendor/google |
Latest revision as of 02:46, 4 August 2023
Contents
1 Android8.1 系统的使用
我们为 {{{1}}} 提供了完善的Android8.1 BSP,代码使用 gitlab.com 平台管理,完全开源,支持GPU加速和VPU硬件加速。
1.1 使用MIPI摄像头进行拍照和录像
{{{1}}}在Android系统下,可以搭配 MIPI摄像头CAM1320 进行拍照和录像,操作比较简单,连接摄像头到{{{1}}}的MIPI接口,开机进入 Android 系统,用系统自带的 Camera 应用即可完成拍照和录像,操作跟 Android 手机是一样的。
1.2 使用双MIPI摄像头预览与录像
从github下载以下示例源代码,并用 Android studio 编译并运行:
git clone https://github.com/friendlyarm/Dual-Camera.git -b working-branch
应用安装后,需要设置Android权限才能让程序正常运行,方法是在开发板的Android系统里进入 Settings -> Apps & notifications -> Dual Camera -> Permissions 钩选以下权限:
Camera Microphone Storage
最终运行效果如下:
点击界面上的 "CAPTURE VIDEO" 按钮即可录制视频(同时录两个摄像头),录制的视频保存到以下位置:/storage/emulated/0/Download/dualcamera_h264.mp4,电脑上可以用以下adb命令下载到本地:
adb pull /storage/emulated/0/Download/dualcamera_h264.mp4
已知问题:
录制的视频文件,播放时会比正常的快,可能需要调整mediacodec的某些参数
1.3 切换系统语言
Android系统默认的系统语言是英文,比如我们要设置为中文,步骤如下:
1) 进入 Android 设置:Settings -> System -> Languages & Input -> Languages;
2)点击"Add a language", 在列表中选择 "简体中文",再选择 "中国";
3) 这时列表中会有中文和英文两种语言,拖动中文那一项到列表的最上面即可,注意,如果你使用的是鼠标,拖动的方法是:将鼠标指针放在列表项右边的图标上,然后按下鼠标中键来拖动;
1.4 Android8.1 硬件访问
开发者可以通过FriendlyThings SDK在Android App中访问和控制主板上的各种硬件资源,比如Uart, SPI, I2C, GPIO等接口,详情可参考以下两份文档:
1.5 Android神经网络 NN SDK示例
Android8.1 BSP中包含了支持GPU加速的Android NN SDK,为了方便测试,Android8固件中也预装了原厂提供的Android NN示例程序:TfLiteCameraDemo,这是一个使用Rockchip AndroidNN GPU加速的MobileNet分类器Demo,运行时需要连接摄像头模块,USB和CSI摄像头都是支持的,通过点击 “TfLiteCameraDemo”图标进入示例,其运行效果如下所示:
关于Android NN SDK的详细描述,可以去网上参考原厂的文档
TfLiteCameraDemo示例源代码下载地址:[TfLiteCameraDemo源代码]
1.6 如何使用adb(Android Debug Bridge)
1.6.1 在Windows10下使用adb
1. 准备一个烧写好安卓系统的 {{{1}}} ,一条Typc-C数据线
2. 在dl.friendlyelec.com找到 {{{1}}} 的网盘,进入后下载Tools文件夹下的adb.zip
3. 解压adb.zip
4. 按win+R打开“运行”窗口,输入“cmd”打开命令行工具
5. 在命令行工具输入以下命令转到adb工具的所在路径:
cd c:\adb
6. 输入以下命令会出现adb的版本信息和使用说明,说明adb可用:
adb
7. 把烧写好安卓系统的 {{{1}}} 接上电源,用Type-C数据线连接 {{{1}}} 和电脑,然后在命令行工具输入:
adb devices
可看到返回的设备信息,说明Win10已经通过adb检测到 {{{1}}} ,之后可以在Win10下对设备进行操作
8. 尝试在Win10下使用命令在设备上安装安卓应用,下载一个APK文件,然后输入“adb install 文件名.apk”,如:
adb install QQ_Android_8.3.6.apk
1.6.2 在Ubuntu下使用adb
1. 把烧写好安卓系统的 {{{1}}} 接上电源,用Type-C数据线连接 {{{1}}} 和电脑,打开“终端”
2. 输入以下命令安装adb工具,这时要求输入用户密码:
sudo apt-get install android-tools-adb
3. 安装过程中弹出下载提示,输入“Y”然后按Enter确认
等待安装完成
4. 在命令行工具输入以下命令查看设备:
adb devices
可看到返回的设备信息,说明Ubuntu已经通过adb检测到 {{{1}}}
1.6.3 adb下修改系统文件
1. 第一次启动系统,如果需要更改系统文件,需要关闭安全验证 (注:安装apk不需要关闭),关闭安全验证后需要重启
adb root adb disable-verity adb reboot
2. 重启后,获得root权限,并重新挂载 /system 开启写入权限
adb root adb remount
3. 上传文件
adb push example.txt /system/
1.6.4 注意事项
部分电脑USB端口可能供电不足,如使用NanoPi M4系列请使用PSU Module供电
1.7 HDMI分辨率、边界调节
如果连接了HDMI显示设备,可进入 Android 的 Settings -> Display -> Advanced -> HDMI & Rotation 进行设置。
HDMI Resolution 缺省为 Auto,可手动设置显示分辨率,最高可支持 4K 分辨率 Screen Zoom 用户可观察红色边框的显示,点击中间的4个箭头按钮来进行缩放调节 Display Rotation 可进行横竖屏切换
1.8 屏幕旋转
使用HDMI与LCD作为显示设备时,如果需要旋转屏幕,可进入 Android 的 Settings -> Display -> Advanced -> HDMI & Rotation -> Display Rotation 进行设置。
在 adb shell 用命令来测试屏幕旋转 (不会保存设置):
wm rotation 90
进入设置界面 Settings -> Accessibility,启用 Immersive Mode,然后再打开你的 Android应用,例如 Lightning,你会发现它将处于全屏状态。
1.10 切换音频输出通道
可以配置音频输出到HDMI或者耳机接口,设置入口:Android 的 Settings -> Accessibility -> Force audio output。 如果 Force audio output菜单项是灰色的,即处于不可选择的状态,说明你所用的硬件会自动检测耳机插拨状态,并自动切换音频通道,无需设置。
1.11 调整录音的音量
1) 先通过串口或adb shell,以root用户权限使用amix 命令调节录音的音量,例如:
amix "IN2 Boost" amix "ADC Capture Volume"
以上命令用于查看当前的设置,然后便可根据支持的值来调节并测试。
2) 调试好后,修改 hardware/rockchip/audio/tinyalsa_hal/codec_config/rt5651_config.h 文件中 rt5651_main_mic_capture_controls 数组中对应配置项的值,编译Android源代码并测试。
1.12 定制开关机界面与动画
1.12.1 开启与关闭
将 device/rockchip/common/BoardConfig.mk 文件的
BOOT_SHUTDOWN_ANIMATION_RINGING := false
改为
BOOT_SHUTDOWN_ANIMATION_RINGING := true
来打开编译时将文件打包进固件的功能
1.12.2 开机动画
创建或替换Android源代码目录下的如下文件:
kernel/logo.bmp
kernel/logo_kernel.bmp
device/rockchip/common/bootshutdown/bootanimation.zip
1.12.3 关机动画
创建或替换Android源代码目录下的如下文件:
device/rockchip/common/bootshutdown/shutdownanimation.zip
1.12.4 动画制作方法
请参考:http://blog.sina.com.cn/s/blog_4960586c0100vu5v.html
1.13 移除Google框架
如果不需要使用google服务,可以删除Google框架以节约系统资源,方法是删除Android源代码中的以下目录,然后重新编译Android:
vendor/google