在我的 Android 应用程序中,我首先使用 GPS、GSM 网络或通过设置屏幕手动输入的文本值来获取用户位置。
起初我使用 Geocoder 类来获取 GPS 或 GSM 提供的经纬度的用户区域设置,但它似乎不可靠,现在我使用 Google 的 Web API 通过发出 HTTP 请求并解析返回的 XML 文档来获取区域设置。这是使用以下 URL:
http://maps.googleapis.com/maps/api/geocode/xmllatlng=blahblahlat,blahblahlong&sensor=true
获取用户区域设置后,我向 free.worldweatheronline.com 的天气 API 发送另一个 HTTP 请求并解析返回的 XML。在稳定的互联网连接下,应用程序运行良好,但我家的信号很垃圾,移动数据连接更差。
我知道有一种简单的方法可以检查设备是否具有移动数据连接,但是我想知道的是,当有连接时出现问题时,是否有一种方法可以测量信号强度,但它也是不好成功运行。例如,如果有一种方法可以获取从 0(无信号)到 100(满信号)的值的移动数据信号强度,那么我只能在信号强度高于一定量时进行位置和天气检索.
最好只用 try/catch 包围位置和天气检索代码,这样它就不会导致运行时异常,让它优雅地失败,然后在获得更好的信号时更新?关于如何实现这一点的任何想法,或任何其他建议以使我的应用程序对信号不佳的用户更友好?
提前致谢!