[Android6.0]App中调用init.rc中的服务,从而运行shell脚本

Author: Younix
Platform: RK3399
OS: Android 6.0
Kernel: 4.4
Version: v2017.07

需求:希望在 Android App 中添加 SPDIF 测试功能。对 Android App 开发不熟悉,为节省开发时间走 Android Audio Manager 太麻烦了。所以希望直接通过 shell 脚本,调用 tinyplay 命令来进行。

Init.rc 中添加 spdiftest 服务

对于我这个项目,是在 init.tablet.rc 中添加

service spdiftest /system/bin/spdif-test 
    class main 
    disabled 
    oneshot 

Device.mk 拷贝脚本和测试音频

工程 Device.mk 文件(rk3399_mid.mk)中添加

PRODUCT_COPY_FILES += \ 
   device/rockchip/rk3399/rk3399_mid/test/spdif-test:system/bin/spdif-test \ 
   device/rockchip/rk3399/rk3399_mid/test/test-music.wav:system/media/audio/test-music.wav 

Spdif-test 实际为测试脚本
Test-music.wav 实际为测试音频

测试脚本 spdif-tset

如下

#!/system/bin/sh 

tinymix -D 0 "Stereo DAC MIXL DAC L1 Switch" 1 
tinymix -D 0 "Stereo DAC MIXR DAC R1 Switch" 1 
tinymix -D 0 "OUT MIXL DAC L1 Switch" 1 
tinymix -D 0 "OUT MIXR DAC R1 Switch" 1 
tinymix -D 0 "HPOVOL L Switch" 1 
tinymix -D 0 "HPOVOL R Switch" 1 
tinymix -D 0 "HPO MIX HPVOL Switch" 1 
tinymix -D 0 "HPO L Playback Switch" 1 
tinymix -D 0 "HPO R Playback Switch" 1 

tinyplay /system/media/audio/test-music.wav -D 1 -d 0 

App 调用

在 App 中通过 SystemProperties.set(“ctl.start”,”spdiftest”);
调用 spdiftest 服务(实际是 spdif-test 脚本)

    private void setSpdifOn() throws IOException {
        SystemProperties.set("ctl.start","spdiftest");
        Log.v(TAG, "Call System Service 'spdiftest' in init.rc to test SPDIF.");
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值