【问题标题】:J2ME / MIDP - How to detect connection type (2G / 3G / 4G / Wi-Fi)?J2ME / MIDP - 如何检测连接类型(2G / 3G / 4G / Wi-Fi)?
【发布时间】:2015-04-03 09:37:05
【问题描述】:

我已经看到这个问题在网上被问了很多次,但似乎在任何地方都没有一个全面的答案。

我创建了一个需要检测网络连接类型的 J2ME 应用程序(如果通过 Wi-Fi 连接,它可以连接到不同的资源)。

有一个答案here 与诺基亚设备有关,一个here 与黑莓设备有关,但我也在开发:

  • 华为
  • 技术
  • 三星
  • 摩托罗拉
  • LG

诺基亚的解决方案似乎是使用System.getProperty("com.nokia.network.access"),那么有谁知道这对于其他设备制造商来说是什么?

【问题讨论】:

  • 如果无法使用 System.getProperty() 确定连接类型,一种可能的替代方法是检测设备的服务器端 IP 地址 - 请参阅 javameblog.com/2007/12/… - 但您需要知道哪个IP 地址范围对应于哪个移动网络运营商(可能会随着时间的推移而变化,因此在服务器端做所有这些事情并只向移动设备报告它是否使用移动连接更合适 - 然后移动设备可以使用该连接信息根据需要)。
  • MIDP 没有 API 可以做到这一点,期间。诺基亚可能会提供一些具有系统属性的“黑客”,而大多数其他供应商则没有,并且没有标准。 J2ME 努力为 MIDP 提供一致的行为,那么您可以从额外的东西中得到什么?

标签: java-me wifi samsung-mobile lg motorola-emdk


【解决方案1】:

我认为您可能对 MIDP 期望过高。 您无疑已经意识到,使用标准 JavaME API 获取连接类型是不可能的,因此您需要依赖不同品牌的专用选项,您也发现了这一点。

您可能需要寻找替代解决方案。如果你确切地说出你想要做什么,那么也许还有其他一些聪明的“黑客”。

如果我理解正确,如果连接 GPRS/3G,您想连接 WAN IP,如果连接 Wi-Fi,您想连接 LAN IP? 在这种情况下,如果是我,我会简单地确保 LAN IP 是一个静态 IP,然后总是尝试先到达那个 IP。如果您已连接到 Wi-Fi,您将能够访问它。如果没有,它将无法访问,然后您可以继续访问 WAN IP 地址。

【讨论】:

  • 可能存在其他专有解决方案(除了诺基亚的),因此希望其他开发人员可以提供有关这些信息的信息。需要进行检测,以便如果是移动连接,则加载特定于移动运营商的内容,否则(对于 Wi-Fi 连接)加载其他静态内容 - 所以我认为您的建议对我没有好处。
  • 三星可能具有类似于诺基亚的系统属性,但通常只有诺基亚实施并添加到规范中。因此,如果您找到其他平台的任何解决方案,我会感到非常惊讶。不过,我为你祈祷。我自己也很好奇,但我不认为这是可悲的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
相关资源
最近更新 更多