使用安卓的3g调制解调器进行通信



我正在Android中开发一个应用程序,该应用程序需要将一些AT commands发送到调制解调器。

这些命令包括提取IMEI号码、迭代可用网络和设置APN详细信息。

我有这个软件的Windows(c#)版本,所以我熟悉需要发送的命令,但在Windows中,我可以简单地打开相关的Serial Port并发送命令。

编辑:

我发现TelephonyManager API 暴露了调制解调器的一些功能

TelephonyManager telMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); 
String SerNum= telMgr.getSimSerialNumber();
String IMEI= telMgr.getDeviceId();
String Operator= telMgr.getSimOperatorName();

这有很大帮助,但似乎没有手动设置网络运营商/提供商的方法。。这是我最需要的东西。

根据这位同事的说法,没有公共的API可以做你想做的事情,根据我在Android中使用各种调制解调器的经验,以及TelephonyManager页面什么都没有的事实,我倾向于相信这一点。

可能能够使用反射来访问非公共方法(类似于WiMax管理的方式,这里的一个例子),但这可能不适用于所有设备/OS版本,并且出于安全目的,您可能还需要root才能使这样的事情工作。

我开发了一个定制的系统,并集成了一个GSM调制解调器。我建议您使用logcat启用并查看"radio"日志。从中可以学到很多东西(至少我学到了)。有一个包含APN列表的配置文件,当连接时,你会看到它在寻找"首选APN"。在我的系统中,它就是那个文件中的APN。由于几乎没有关于如何在Android中玩较低级别的信息(信息仅在应用程序级别提供),我使用(并牺牲了)一些"现成"的系统来研究它的工作原理,然后为我的自定义系统进行定制。电话周围的区域似乎是不同制造商/运营商添加自己口味的地方之一,因为我可以注意到相同Android版本(Froyo、姜饼等)的每个系统的差异。不幸的是,这不是一个直接的答案,但我希望这一点信息可以帮助。

此外,还有一个关于尝试将AT命令直接发送到调制解调器的小警告。RIL不断地与调制解调器交互,并来回管理AT命令。它会因为收到一些它不知道发送的命令的答案而感到不安。RIL不断检查信号强度和一堆东西,并管理来自调制解调器的所有未经请求的消息,这些消息可能需要RIL或Android/连接管理器采取行动。

相关内容

  • 没有找到相关文章

最新更新