android4.3 中兴s291天机 发送AT指令

android4.3 中兴s291天机 发送AT指令

废话少说直接来干货!!!想要让手机发送AT指令,必须有以下操作:

1 root手机
2 找到modem层,也就是调制解调器的入口
3 发送正确的AT指令

第一步:
root手机这里就不多说了,自己百度去方法一大堆

第二步:
找到调制解调器的入口,android手机要发送AT命令获取信息,需要把AT命令发送到/dev目录下的其中一些设备,/dev目录下的文件很多,可能每台手机都不同,也不是每个都是,只能一个个去试了.
在这里我建议尝试的小伙伴一定要有耐心,因为在/dev目录下,大概有700多个文件,对每个文件测试的时候都需要先获取其超级用户权限,然后再写入AT,如果返回OK,则代表成功找到入口

s291天机的入口是”/dev/smd11”,这个我已经试好了没有问题.

获取其超级用户权限,代码如下:

public boolean getsu() {
        if ((!this.device.canRead()) || (!this.device.canWrite())) {
            try {
                String command = "chmod -R 777 " + ATD_PATH;
                Process localProcess = Runtime.getRuntime().exec(new String[]{"su", "-c", command});
                localProcess.waitFor();
                if ((localProcess.waitFor() != 0) || (!this.device.canRead()) || (!this.device.canWrite())) {
                    return false;
                }
                Log.i("YY", "su:OK ");
                return true;
            } catch (Exception localException) {
                localException.printStackTrace();
                Log.i("YY", "su exception:ERROR ");
                return false;
            }
        }
        return true;
    }

第三步:
发送AT指令和接收数据,例如发送AT,返回OK
发送AT指令的代码如下:

 public void Send(String file, String cmd) {
        RandomAccessFile localRandomAccessFile = null;
        try {
            localRandomAccessFile = new RandomAccessFile(file, "rw");
            Log.e(TAG, "Send: " + file);
            localRandomAccessFile.writeBytes(cmd + "\r\n");
            localRandomAccessFile.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

接收数据的代码如下:

public void Receive(String file) {
        RandomAccessFile localRandomAccessFile = null;
        try {
            localRandomAccessFile = new RandomAccessFile(file, "r");
            byte[] arrayOfByte = new byte[1024];
            int readSize = 0;
            while ((readSize = localRandomAccessFile.read(arrayOfByte)) == -1) {

            }
            final String response = new String(arrayOfByte).substring(0, readSize);
            StringBuffer string = new StringBuffer();
            for (int i = 0; i < arrayOfByte.length; i++) {
                string.append(arrayOfByte[i]);
            }
        } catch (Exception e) {
            isRunning = false;
            Log.e(TAG, "system.err" + ATD_PATH + "有异常");
            e.printStackTrace();
        }
    }

到这里发送at指令的流程基本完成!!!
有不懂的地方可在下方评论,空闲的时候会回复!!!

猜你喜欢

转载自blog.csdn.net/lidadiao/article/details/78851412