2015-04-03 50 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