2015-04-03 32 views
4

我在网上看到过很多遍这个问题,但在任何地方似乎都没有全面的答案。J2ME/MIDP - 如何检测连接类型(2G/3G/4G/Wi-Fi)?

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

有一个答案here,涉及到诺基亚设备和一个here,涉及到黑莓设备,但我也正在为:

  • 华为
  • 天工
  • 三星
  • 摩托罗拉
  • LG

诺基亚解决方案似乎是使用System.getProperty("com.nokia.network.access"),所以有人知道这是其他设备制造商的等价物吗?

+0

如果无法使用'System.getProperty()'确定连接类型,则可以选择其中一种替代方法来检测设备的IP地址服务器 - 请参阅http://www.javameblog.com/2007/ 12/how-to-get-ip-address-of-mobile-using.html - 但你需要知道哪些IP地址范围对应于哪个移动网络运营商(这可能会随着时间推移而改变,所以它更适合于在服务器端做所有这些事情,并向移动设备回报是否使用移动连接 - 然后移动设备可以根据需要使用该连接信息)。 – 2015-04-03 09:46:18

+0

MIDP没有API来做到这一点,期间。诺基亚可能会提供一些“黑客”的系统属性,而大多数其他供应商则没有,而且没有标准。即使对于MIDP,J2ME也很难提供一致的行为,那么您对额外的东西有什么期望? – Mixaz 2015-04-10 21:55:28

回答

0

我想你可能会期待MIDP太多。 毫无疑问,您已经意识到,使用标准的JavaME API无法获得连接类型,因此您依赖于不同品牌的专用选项,就像您还发现的那样。

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

如果我理解正确,如果连接了GPRS/3G,并且连接了Wi-Fi连接了局域网IP,您希望连接到广域网IP? 在这种情况下,如果是我,我只需确保局域网IP是静态的,然后总是先尝试到达那个IP。如果您使用Wi-Fi连接,则可以使用它。如果没有,它将无法到达,然后您可以继续到达WAN IP地址。

+0

其他专有解决方案(除诺基亚之外)可能存在,所以希望其他开发人员可以提供有关这些方面的信息。检测是必需的,以便如果它是移动连接,则移动运营商特定的内容被加载,否则(对于Wi-Fi连接)其他静态内容被加载 - 所以我认为你的建议对我不好。 – 2015-04-07 14:32:06

+0

Samsung MIGHT拥有像诺基亚这样的系统属性,但通常只有诺基亚实施并添加到该规范中。所以如果你找到其他平台的解决方案,我会非常惊讶。尽管如此,我仍然为了你而交叉手指我自己很好奇,但我不认为这是可能的。 – 2015-04-07 16:50:06