判断LTE是否已开启?

7
我正尝试编写一个小部件,以便在不必深入设置菜单的情况下启用/禁用我的Verizon Galaxy Nexus上的LTE。但是,我还没有弄清楚如何确定LTE是否已经打开。我可以确定我的手机当前是否有LTE信号或EVDO信号,但当手机有EVDO信号时无法确定LTE是否已启用。
有人有什么建议在Android开发者参考中查找哪些内容吗?我已经尝试了TelephonyManager和ConnectivityManager,但迄今为止都没有起作用。
2个回答

0

我正在使用TelephonyManager.getNetworkType(),但即使启用了LTE但我只有CDMA数据连接,它仍然返回CDMA。在我看来,没有简单的方法来确定是否启用LTE(即使它不是当前活动的连接),这对我来说没有意义。根据Android开发者参考文档,“public int getNetworkType ()”将返回一个常量,指示设备当前用于数据传输的无线电技术(网络类型)。 - smccloud
是的,到目前为止我还没想出如何获得它(除非我只是疏忽了,这是有可能的)。 - smccloud
我认为ConnectivityManager.getNetworkPreference()可能是我需要的,但是它在LTE开启和关闭时都返回“1”,所以不是这个。 - smccloud
由于某种原因,##4636##在我的Galaxy Nexus上无法使用。也许它在ICS上不起作用? - smccloud
这是因为我在结尾忘记了一个 *。 - Guillaume
显示剩余7条评论

0

你试过这个吗?

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService( Context.TELEPHONY_SERVICE );
boolean isLTEConnected = telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE;

我目前在手机上启用了LTE,但是连接的是CDMA,返回false。这就是我之前卡住的地方。如果从逻辑上考虑,“应该”可以工作,但只有在您拥有活动的LTE连接时才能工作。直接从Android开发人员参考中心“public int getNetworkType()返回一个常量,指示设备当前用于数据传输的无线电技术(网络类型)。” - smccloud
你可以通过使用 getNetworkInfo(ConnectivityManager.TYPE_MOBILE)NetworkInfo.getTypeName() 的组合来检查 ConnectivityManager,但我不确定这是否能得到你想要的结果。 - Jason Robinson
NetworkInfo.getTypeName()返回“MOBILE”或“WIFI”。人们会认为谷歌会像他们为WiMAX添加支持一样,为LTE添加适当的支持,因为WiMAX已经死亡,即使Sprint也转向了LTE。另外,ConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).toString()在LogCat中返回“06-11 15:33:32.239:W / LTE Toggle Widget(12811):NetworkInfo:type:mobile [CDMA-eHRPD],state:CONNECTED / CONNECTED,reason:simLoaded,extra:VZWINTERNET,roaming:false,failover:false,isAvailable:true”。 - smccloud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接