JSRUN 用代码说话

Android8.1 系统的使用

编辑教程

Android8.1 系统的使用

我们为 NanoPC-T4 提供了完善的Android8.1 BSP,代码使用 gitlab.com 平台管理,完全开源,支持GPU加速和VPU硬件加速。

Rk3399android8.png

使用MIPI摄像头进行拍照和录像

NanoPC-T4在Android系统下,可以搭配 MIPI摄像头CAM1320 进行拍照和录像,操作比较简单,连接摄像头到NanoPC-T4的MIPI接口,开机进入 Android 系统,用系统自带的 Camera 应用即可完成拍照和录像,操作跟 Android 手机是一样的。

NanoPC-T4板上共有两个MIPI接口可以连接两个摄像头分别对应前置摄像头和后置摄像头,其对应关系如下表所示:

MIPI-CSI1 <--> Android 后置摄像头
MIPI-CSI2 <--> Android 前置摄像头

连接方法如下图所示:

T4-mipi-dual-camera.jpg

使用双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

最终运行效果如下:

Android dual camera demo.jpg

点击界面上的 "CAPTURE VIDEO" 按钮即可录制视频(同时录两个摄像头),录制的视频保存到以下位置:/storage/emulated/0/Download/dualcamera_h264.mp4,电脑上可以用以下adb命令下载到本地:

adb pull /storage/emulated/0/Download/dualcamera_h264.mp4

已知问题:

录制的视频文件,播放时会比正常的快,可能需要调整mediacodec的某些参数

切换系统语言

Android系统默认的系统语言是英文,比如我们要设置为中文,步骤如下:

  • 进入 Android 设置:Settings -> System -> Languages & Input -> Languages;
  • 点击"Add a language", 在列表中选择 "简体中文",再选择 "中国";
  • 这时列表中会有中文和英文两种语言,拖动中文那一项到列表的最上面即可,注意,如果你使用的是鼠标,拖动的方法是:将鼠标指针放在列表项右边的图标上,然后按下鼠标中键来拖动;

Android8.1 硬件访问

开发者可以通过FriendlyThings SDK在Android App中访问和控制主板上的各种硬件资源,比如Uart, SPI, I2C, GPIO等接口,详情可参考以下两份文档:

  • Android: FriendlyThings for RK3399
  • 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”图标进入示例,其运行效果如下所示:

TfLiteCameraDemo.png

关于Android NN SDK的详细描述,可以去网上参考原厂的文档

TfLiteCameraDemo示例源代码下载地址:[TfLiteCameraDemo源代码]

如何使用adb(Android Debug Bridge)

在Windows10下使用adb

准备一个烧写好安卓系统的 NanoPC-T4 ,一条Typc-C数据线

在dl.friendlyarm.com找到 NanoPC-T4 的网盘,进入后下载Tools文件夹下的adb.zip

T4 andriod adb 00.jpg

解压adb.zip

T4 andriod adb 01.jpg

按win+R打开“运行”窗口,输入“cmd”打开命令行工具

T4 andriod adb 02.jpg

在命令行工具输入以下命令转到adb工具的所在路径:

cd c:\adb

T4 andriod adb 03.jpg

输入以下命令会出现adb的版本信息和使用说明,说明adb可用:

adb

T4 andriod adb 04.jpg

把烧写好安卓系统的 NanoPC-T4 接上电源,用Type-C数据线连接 NanoPC-T4 和电脑,然后在命令行工具输入:

adb devices

可看到返回的设备信息,说明Win10已经通过adb检测到 NanoPC-T4 ,之后可以在Win10下对设备进行操作

T4 andriod adb 05.jpg

尝试在Win10下使用命令在设备上安装安卓应用,下载一个APK文件,然后输入“adb install 文件名.apk”,如:

adb install QQ_Android_8.3.6.apk

看到“Success”的提示即安装成功

T4 andriod adb 06.jpg

在Ubuntu下使用adb

把烧写好安卓系统的 NanoPC-T4 接上电源,用Type-C数据线连接 NanoPC-T4 和电脑,打开“终端”

T4 ubuntu adb 01.jpg

输入以下命令安装adb工具,这时要求输入用户密码:

sudo apt-get install android-tools-adb

T4 ubuntu adb 02.jpg

安装过程中弹出下载提示,输入“Y”然后按Enter确认

T4 ubuntu adb 03.jpg

等待安装完成

T4 ubuntu adb 04.jpg

在命令行工具输入以下命令查看设备:

adb devices

可看到返回的设备信息,说明Ubuntu已经通过adb检测到 NanoPC-T4 T4 ubuntu adb 05.jpg

adb下修改系统文件

第一次启动系统,如果需要更改系统文件,需要关闭安全验证 (注:安装apk不需要关闭),关闭安全验证后需要重启

adb root
adb disable-verity
adb reboot

重启后,获得root权限,并重新挂载 /system 开启写入权限

adb root
adb remount

上传文件

adb push example.txt /system/

注意事项

部分电脑USB端口可能供电不足,如使用NanoPi M4系列请使用PSU Module供电

HDMI分辨率、边界调节

如果连接了HDMI显示设备,可进入 Android 的 Settings -> Display -> Advanced -> HDMI & Rotation 进行设置。

HDMI Resolution 缺省为 Auto,可手动设置显示分辨率,最高可支持 4K 分辨率
Screen Zoom 用户可观察红色边框的显示,点击中间的4个箭头按钮来进行缩放调节
Display Rotation 可进行横竖屏切换

屏幕旋转

使用HDMI与LCD作为显示设备时,如果需要旋转屏幕,可进入 Android 的 Settings -> Display -> Advanced -> HDMI & Rotation -> Display Rotation 进行设置。

在 adb shell 用命令来测试屏幕旋转 (不会保存设置):

wm rotation 90

切换音频输出通道

可以配置音频输出到HDMI或者耳机接口,设置入口:Android 的 Settings -> Accessibility -> Force audio output。 如果 Force audio output菜单项是灰色的,即处于不可选择的状态,说明你所用的硬件会自动检测耳机插拨状态,并自动切换音频通道,无需设置。

调整录音的音量

  • 先通过串口或adb shell,以root用户权限使用amix 命令调节录音的音量,例如:
amix "IN2 Boost"
amix "ADC Capture Volume"

以上命令用于查看当前的设置,然后便可根据支持的值来调节并测试。

  • 调试好后,修改 hardware/rockchip/audio/tinyalsa_hal/codec_config/rt5651_config.h 文件中 rt5651_main_mic_capture_controls 数组中对应配置项的值,编译Android源代码并测试。

定制开关机界面与动画

开启与关闭

将 device/rockchip/common/BoardConfig.mk 文件的

BOOT_SHUTDOWN_ANIMATION_RINGING := false

改为

BOOT_SHUTDOWN_ANIMATION_RINGING := true

来打开编译时将文件打包进固件的功能

开机动画

创建或替换Android源代码目录下的如下文件:

kernel/logo.bmp
kernel/logo_kernel.bmp
device/rockchip/common/bootshutdown/bootanimation.zip

关机动画

创建或替换Android源代码目录下的如下文件:

device/rockchip/common/bootshutdown/shutdownanimation.zip

动画制作方法

请参考:http://blog.sina.com.cn/s/blog_4960586c0100vu5v.html

移除Google框架

如果不需要使用google服务,可以删除Google框架以节约系统资源,方法是删除Android源代码中的以下目录,然后重新编译Android:

vendor/google

用摇控器操作Android

NanoPC-T4在Android下完美支持 FriendlyARM RC-100 红外遥控器,更方便NanoPC-T4在接电视的场景下使用,遥控器按键功能丰富:

Rc100remotecontroller.png

按键定义与功能如下表所示:

按键 功能
导航键-上
导航键-下
导航键-左
导航键-右
OK 确认
- 音量-
+ 音量+
静音 静音
菜单 Android菜单键
首页 Android Home键
返回 Android 返回键
F1 下拉Android 通知栏
F2 Android 截屏
F3 切换操作模式,在鼠标模式与按钮模式之间切换

使用USB摄像头进行拍照和录像

Android系统同时支持USB摄像头拍照和录像,使用系统自带的 Camera 应用即可,有两点需要注意的地方:

  • 需要根据摄像头规格,选择合适的录像分辨率,可以先选择较低的CIF分辨率,测试OK之后再尝试更高的分辨率,设置界面如下所示:

Android8-usbcamera-setting.png

  • USB摄像头不能与MIPI摄像头同时使用,也不能热拨插,插入摄像头后需要重新开机才能识别;

我们测试过的USB摄像头型号如下:罗技C270,罗技C922 PRO,

实测罗技C922 PRO录像和拍照可以达到1080P分辨率。

Android下使用4G模块EC20

连接方法

连接时,需要通过USB to miniPCIe转接板转接EC20,再连接到主板的USB Host端口,如下图所示:

T4-4g-ec20.jpg

连接后无需额外的配置,启动Android后就可以使用4G上网了,跟Android手机类拟。

10.15.2 启用EC20的GPS功能 默认情况下,Android的GPS功能是关闭的 (原因是Android在没有找到任何GPS模块的情况下,会不停的打印LOG信息),在你连接了EC20模块后,就可以开启GPS了。

开启方法是修改Android源代码下的 vendor/quectel/ec20/BoardConfigPartial.mk 文件,将下面这行:

BOARD_HAS_GPS := false

改为

BOARD_HAS_GPS := true

然后重新编译 Android。

Android下使用NVME SSD高速固态硬盘

第一步:格式化SSD为单分区ext4格式

此操作可以在电脑上进行,也可以在开发板的 linux 系统里进行。

为了方便操作,请在终端上先用以下命令切换为 root 用户:

su -

root用户的默认密码是fa。

检查是否检测到了SSD

root@FriendlyELEC:~# cat /proc/partitions 
major minor  #blocks  name
   1        0       4096 ram0
 259        0  125034840 nvme0n1

看到有 nvme0n1 设备的节点,说明SSD已经成功被识别到了。

给SSD重新分区

为了让 Linux 系统能成功能挂载,我们选择给 SSD 重新分区,下面的命令会自动将 SSD 整个空间分成一个区:

(echo o; echo n; echo p; echo 1; echo ""; echo ""; echo w; echo q) | fdisk /dev/nvme0n1

如果要分多个区,可以用 fdisk /dev/nvme0n1 命令,参考 fdisk的文档来操作。

将分区格式化为 ext4 格式

上一个步骤分区完成后,我们再用 cat /proc/partitions 命令看一下当前的分区信息,在下面的结果中,可用于存储数据的分区设备名为 /dev/nvme0n1p1 :

root@FriendlyELEC:~# cat /proc/partitions
major minor  #blocks  name

   1        0       4096 ram0
 259        0  125034840 nvme0n1
 259        2  125033816 nvme0n1p1

下面的命令将该分区格式化为 ext4 格式,其中-L参数指定SSD分区的名称,这个名称会在Android界面上显示:

mkfs.ext4 /dev/nvme0n1p1 -L SSD

第二步:Android开机自动挂载

只要SSD已经被正确地格式化,Android就会自动挂载SSD为外置存储设备,无需额外的设置,打开Android内置的Files应用,可以看到SSD设备已经挂载:

Android8-files-ssd.jpg

第三方的软件可以正常识别SSD,如下图中的迅雷下载软件,可以设置将文件默认下载到SSD上:

Android8-thunder-ssd.png

设置调速散热风扇

散热风扇使用PWM来实现自动调速,会根据当前的CPU温度来决定风扇的开关,以及风扇的转速,如果当前的CPU温度不高,风扇会被关闭或者以较低转速旋转 (减少不必要的环境噪声),如果你想改变风扇的调速行为,请修改Android bsp源代码中的以下文件:

device/rockchip/rk3399/nanopc-t4/pwm_fan.sh

需要禁止开机自动启动风扇(比如你需要连接其他的PWM设备),请修改Android bsp源代码中的以下文件:

device/rockchip/rk3399/init.rk3399.rc

对源代码做了修改后,需要重新编译Android。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟