我是开发Android应用程序的新手。我想要做的是一个按钮点击事件,它将找到您当前的位置。然后它将显示城市名称和当前天气。我打算使用weather2作为API。无论如何,我没有最微妙的想法,我已经搜索了教程,我所能找到的是使用位置管理器,导致latatude和longatude以及谷歌地图。谁能告诉我如何使用gps来代替使用API?
答案 0 :(得分:2)
你的问题并不完全清楚。你不能使用GPS来使用API,你编写代码来使用API ......
话虽这么说,看起来使用weather2只需要向它发送HTTP GET请求。要实际调用他们的客户端,您将使用HttpClient(包含在Android的库中)。您可以在此处找到一些示例代码:
timewasted dot net /?p = 127
您提供的查询将遵循以下准则:
http://www.myweather2.com/developer/apis.aspx?uref=becda844-8299-4bf6-899b-d771a92b9dbf
您可以发送到此API的其中一个参数是您当前的经度和纬度。您可以使用locationmanager来获取此信息。您将执行Context.getSystemService以获取LocationManager对象,然后请求它通知您您的位置。如果更新永远不会发生,您也可以使用LocationManager.getLastKnownLocation(例如,如果用户在建筑物内,则可能会发生这种情况)。您可以在此处找到一个简单的LocationManager教程:
blogoscoped dot com / archive / 2007-11-19-n27.html
您在侦听器中返回的Location对象将告诉您所需的纬度和经度,并且您可以将其打包为查询以发送到weather2。例如,这是一个可以发送到weather2的查询字符串(使用我上面提到的HttpClient和GET请求):
http://www.myweather2.com/developer/forecast.ashx?uac=&安培;查询= 24.15,56.32&安培; temp_unit = F
在这里,您可以将这些坐标替换为您从LocationManager获得的坐标。
请记住,我提供的链接不完全正确。您不应该在应用程序的主线程中执行网络操作。相反,你应该执行AsyncTask,Service等等。然后使用Messenger在两者之间进行通信(使用AsyncTask简化了这一点,但是..)
对不起,你必须用实际时段替换'点',因为我名声不好: - )