想在android平台上做一些向串口发at指令的操作。首先,在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的方法就不要提了,用户用你的程序之前不可能先去让他刷机的。比较急,谢谢各位!

解决方案 »

  1.   

    手机肯定不行;
    在开发板上或者安个模拟器ADB SHELL到AVD
    就把ANDROID当linux用了
      

  2.   

    都不能发AT,那还叫手机吗
    这个应该看在什么平台上实现的,高通的是在arm9那边做的,单纯在android代码这边没法实现
      

  3.   

    后来又研究了一下,其实在java层的扩展类库里面是有对串口通信的api的,开发包是comm.jar。但是在linux上还是权限问题,能找到串口但是没法访问。
      

  4.   

    关注,我也遇到过同样的问题,在应用层确实没办法也没有接口去发AT指令给手机。
    http://topic.csdn.net/u/20100902/12/07eccb45-1ad5-4e4a-927e-c04c285be62c.html
    但是我在超级终端里面给没有root的XT800手机发AT指令,确实是可以的,不知道这个是什么原理。
      

  5.   


    因为moto自己实现了个AtCommandService,专门干这个。