Android Thing: Android Hardware Programming

From FriendlyELEC WiKi
Revision as of 08:02, 18 December 2017 by Yftan (Talk | contribs) (Andorid示例源代码编译与部署(以SerialPortDemo进行说明))

Jump to: navigation, search

查看中文


1 Introduction

FriendlyElec developed a library called “libfriendlyarm-hardware.so”, for android developer to access the hardware resources on the development board in their android apps, the library is based on Android NDK.

2 Accessible Interfaces & Ports

  • Serial Port
  • PWM
  • EEPROM
  • ADC
  • LED
  • LCD 1602 (I2C)
  • OLED (SPI)

I2C, SPI, GPIO are accessible.

  • Smart4418SDK+OLED
  • NanoPCT3-I2C-LCD1602

3 Available OS & Boards

  • Android 2.3: Mini6410, Tiny6410
  • Android 4.2: Mini210S, Smart210 with SDK, Tiny210 with SDK, Tiny4412 with SDK
  • Android 4.4: NanoPi M2, NanoPi S2, NanoPC-T2, Smart4418 with SDK
  • Android 5: NanoPi M3, NanoPi-T3, Tiny4412 with SDK


4 Code Samples

5 Compile & Deploy Andorid Code(SerialPortDemo)

5.1 1) eclipse导入源代码,以SerialPortDemo为例

然后打开eclipse,在eclipse菜单File上选择Import导入项目,选择Existing Android Code Into Workspace,
我们把项目名称改为 SerialPortDemo:

  • AndroidHW01.png
  • AndroidHW02.png

5.2 2) 编辑源代码,根据需要更改串口设备文件名称

DEMO要访问的串口设备写死在以下源代码文件的:src/com/friendlyarm/SerialPortDemo/SerialPortDataProcessView.java
你需要根据实际情况更改:
AndroidHW03.png

5.2.1 各个平台开发板的串口设备名称

  • Allwinner H3/H5平台开发板 (NanoPi M1/NanoPi M1 Plus等)

UART1-> /dev/ttyS1
UART2 -> /dev/ttyS2
UART3 -> /dev/ttyS3 (仅NanoPi M1, NanoPi K1, NanoPi K1 Plus可用)

  • S5P4418平台开发板 (NanoPi Fire2A/NanoPi M2A/NanoPi S2/NanoPC-T2等)

UART1 -> /dev/ttyAMA1 [注1]
UART2 -> /dev/ttyAMA2 [注1]
UART3 -> /dev/ttyAMA3
UART4 -> /dev/ttyAMA4

  • S5P6818平台开发板 (NanoPi M3/NanoPC-T3等)

UART1 -> /dev/ttySAC1 [注1]
UART2 -> /dev/ttySAC2 [注1]
UART3 -> /dev/ttySAC3
UART4 -> /dev/ttySAC4

注1: 仅部分板子可用,具体请查看原理图.

5.3 3) 编译DEMO源代码,并导出apk文件

在Package Explorer上点击项目名称,保证其处于选中状态:
AndroidHW04.png
在eclipse菜单File上选择Export...:
AndroidHW05.png
选择Export Android Application:
AndroidHW06.png
选择项目SerialPortDemo:
AndroidHW07.png
这一步,Eclipse要求我们创建或选择自已的签名,这里我们选择Create new keystore, 填写key生成后保存的路径和密码,然后点next:
AndroidHW08.png
继续参考下图完善签名信息,然后点next:
AndroidHW09.png
接着选择APK文件的保存位置,这里我们选择保存到 signapk-files子目录下,以方便我们稍后要进行的签名操作:
AndroidHW10.png
点Finish完成APK的导出:
AndroidHW11.png

5.4 4) 使用系统证书对APK进行重新签名

因为访问硬件需要APK有system权限,所以需要使用系统证对APK进行重新签名,
在命令行下进入signapk-files子目录,然后执行以下命令签名即可:

cd signapk-files/
java -jar ./signapk.jar platform.x509.pem platform.pk8 ./SerialPortDemo.apk SerialPortDemo-Signed.apk

其中,signapk.jar以及签名文件platform.x509.pem和platform.pk8可在开发板资源下载目录的android-platform-key-files目录下找到。

5.5 5) 运行与调试

5.1) 安装APK,用microUSB线将电脑与开发板连接,用adb命令安装SerialPortDemo-Signed.apk:

adb install SerialPortDemo-Signed.apk

5.2) 调试: 运行 SerialPortDemo后,在adb shell命令行模式下执行:

ps -Z

然后找到com.friendlyarm.SerialPortDemo这个进程,如果前面的权限是如下所示,表明程序已经获得了 system 权限:

u:r:system_app:s0              system    1610  112   com.friendlyarm.SerialPortDemo

以上是Android4的,如果是Android5,则略有不同,不过都表示已经是 system 权限:

u:r:platform_app:s0            u0_a60    1905  138   com.friendlyarm.SerialPortDemo

如果程序没有获得 system 权限,则打开串口设备会失败。

6 Resources

7 Update Log

7.1 March-2-2017

  • Released English version