1

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

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

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

任何人都可以帮忙吗?

富有的。

EDIT

我发现调制解调器的某些功能是通过TelephonyManagerAPI公开的

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

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

4

2 回答 2

0

我在定制系统上工作并集成了一个 GSM 调制解调器。我建议您启用并使用 logcat 查看“无线电”日志。可以从中学到很多东西(至少我做到了)。有一个包含 APN 列表的配置文件,连接时,您会看到它查找“首选 APN”。在我的系统中,它是该文件中的 APN。由于几乎没有关于如何在 Android 中玩较低级别的信息(信息仅在应用程序级别可用),我使用(并牺牲)了一些“现成”系统来查看它是如何工作的,然后为我的定制一个。电话周围的区域似乎是不同制造商/运营商添加自己口味的地方之一,因为我可以注意到具有相同 Android 版本(Froyo、姜饼等)的每个系统的差异。很遗憾,

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

于 2012-10-02T15:20:46.963 回答
0

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

可能可以使用反射来访问非公共方法(类似于必须完成 WiMax 管理的方式,此处是一个示例),但这可能不适用于所有设备/操作系统版本,并且由于安全性原因目的,您可能还需要扎根才能使这样的事情起作用。

于 2012-09-24T11:57:52.020 回答