Android平台到底能不能通过串口发送AT指令呢,急!!! 80
首先,在java层好像没有提供和串口操作相关的api(如果有的话请指教,谢谢)
于是,想到了用JNI配合NDK的方法来实现,在底层用C/C++直接对linux的串口编程
其中必需的一步是先打开串口 fd=open( "/dev/ttyS0", O_RDWR|O_SYNC),"/dev/ttyS0"为串口文件
但是在linux下,/dev/ttyS0这个串口文件是只有root用户才有权限操作,而我们所开发的android应用程序只能作为普通用户去访问,自然不会成功的。
在PC上用模拟器调试的时候,可以以root用户身份登录到linux系统并用chmod的命令修改/dev/ttyS0的权限为所有用户可读写,命令格式是 chmod 777 /dev/ttyS0,但是在真机上用的话不可能每次都去手动先把/dev/ttyS0访问权限改了
想通过代码的方式直接修改/dev/ttyS0的访问权限或者把android应用程序自身的权限提升为root,网上看了很多方法都不能,想想也是,要是随便通过代码就能修改,那么linux和android平台还有什么安全可言,以后谁还敢用呢?高手们谁知道怎么解决这个问题呢?或者有其他方法也能实现android平台向串口发at指令也行,但是比如那些通过软件去刷机借用外力把手机刷成root的方法就不要提了,用户用你的程序之前不可能先去让他刷机的。
比较急,谢谢各位! 展开
2015-09-01 · 知道合伙人软件行家
AT命令(Attention)在手机中,用于对modem(也就是移动模块)通过串口命令进行操作,处理与语音电话、短信和数据。
关于AT命令:
Android系统与AT命令
对于智能手机,AP和BP分离的情况,在AP上的系统通过串口和BP通信是个不错方式。在Android的源码中有一个内部包com.android.internal.telephony中有对AT命令的封装和解析,但这种internal的包开发者不能调用的SDK部分,可以用来封装ROM。这说明Android对AT command的方式是支持的。
对于Android如何调用AT command
用root登录命令行,直接对串口进行操作,如echo -e "AT\r" > /dev/smd0
具体的串口,不同设备会有不同,甚至不一定会提供。这种方式,开发者是可以调用的,通过Runtime.exec直接执行命令行命令,但要求是root,例如echo -e "ATD123456789;\r" > /dev/smd0,拨打123456789的号码。
目前最新的AT命令标准发布与2014.6.27,似乎还活得挺滋润的。但是给出的keywords是UMTS, GSM, command, terminal, LTE这说明CDMA确实很可能不是采用AT命令的方式。
我现在是想自己在android上开发一个应用程序,里面要用到串口at指令的操作,不知道可行吗?权限够吗
我想向楼主请教一下我现在遇到的问题。因为现在还是程序调试,关于权限的我按照楼主的方法改了,这个不管
我有一个c语言测试程序能向串口发信息,但是把C语言改成jni后,能够编译成.so文件,能够打开串口,能够返回write的返回值,但是超级终端没有显示发出的信息,而用c测试代码是能够显示发出信息的。是什么原因呢,楼主知道吗
如果你的程序必须通过mmm编译,然后在你的mk里面,修改LOCAL_CERTIFICATE参数,调整你自己程序或者编译出bin文件的权限;
至于权限 用c写的话好像不存在root不roo。