使用安卓SerialManagerService
来源:互联网 发布:京东数据罗盘免费版 编辑:程序博客网 时间:2024/05/17 03:42
转载:http://blog.csdn.net/orgst/article/details/49383765
安卓原始代码中的串口SerialPort SerialManger SerialService ISerialService.aidl 等都是@hide隐藏的,外部应用无法调用,定制需要,所以将该Manager启用。下面记录下过程1.启用SerialService其掉这三个文件中的@hide标识: frameworks/base/core/java/android/hardware/SerialManager.java frameworks/base/core/java/android/hardware/SerialPort.java frameworks/base/core/java/android/hardware/ISerialManager.aidl SerialService文件位置: frameworks/base/services/java/com/android/server/SerialService.java 该服务会在SystemSever.java中进行初始化,这里还需要将Context.java中的SERIAL_SERVICE的@hide去掉: frameworks/base/core/java/android/content/Context.java- /*- * @hide- */ public static final String SERIAL_SERVICE = "serial";还有, SerialService是通过读取R.array.config_serialPorts这个String array来加载的/dev/设备节点: public SerialService(Context context) { mContext = context; mSerialPorts = context.getResources().getStringArray( com.android.internal.R.array.config_serialPorts); }所以还需要添加下,文件位置:framework/base/core/res/res/values/config.xml在config_serialPorts中添加相应设备节点 "/dev/ttyS0" 在使用时应用需要添加uses-permission权限 android.permission.SERIAL_PORT ;2.安卓提供了个测试工具,在framework/base/tests/SerialChat, 可以进入该目录, 输入mm 进行编译,输出在 out/target/product/xxx/data/app/中,可以push到手机里验证。3.权限授权问题, 我在测试这个SerialChat程序时发现android.permission.SERIAL_PORT并未被授权, 通过pm.checkPermission("android.permission.SERIAL_PORT", pinfo.packageName) 检查可以看到。查看frameworks/base/core/res/AndroidManifest.xml中发现,该permission定义如下: 可以看到protectionLevel是signature|systeml; signature表示当申请此权限的应用程序的签名与声明此权限的应用的签名相同时才会授权, 该应用是framwork-res.apk,使用的签名是platform,所以需要应用也要使用platform签名。system表示是系统应用;所以这里修改Android.mk,添加LOCAL_CERTIFICATE := platform 再重新编译LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := testsLOCAL_CERTIFICATE := platformLOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_PACKAGE_NAME := SerialChatinclude $(BUILD_PACKAGE)
- 使用安卓SerialManagerService
- 使用安卓SerialManagerService
- 使用安卓SerialManagerService
- android5.1使用SerialManagerService
- 安卓 setContentView使用
- 安卓CheckBox使用
- 安卓SeekBar使用
- 安卓使用mqtt
- 安卓---JNI使用
- 安卓使用闪光灯
- 安卓VideoView使用
- 安卓Activitylifecyclecallbacks使用
- 安卓WebView使用
- 安卓使用OkHttp
- 安卓HandlerThread使用
- 安卓SwipeRefreshLayout使用
- 安卓StatFs使用
- 安卓webwiew使用
- 51、作用域public,private,protected,以及不写时的区别?
- 分类模型的性能评估——以SAS Logistic回归为例(3): Lift和Gain
- 安装sqlserver数据库并使用myeclipse访问之
- Linun top命令详解
- Pixhawk之启动代码和入口函数(.mk、rcS、__start、hrt)
- 使用安卓SerialManagerService
- 浅谈csrf/xsrf
- 52、private static final long serialVersionUID的作用
- 冒泡排序
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- js中string的常见操作
- VC界面绘制双缓存
- Android Studio设置字体 编码格式
- ubuntu 14.04 64位hello world驱动