2012-02-02 5 views
0

ためのAPIで天気情報を見る:私は経度を取得したいと思い際私はコードを取るcoordinates.So私は経度と緯度を持っている場合、Googleの天気予報APIを使って気象情報を取得したいアンドロイド

private void updateWeather(){ 
    new Thread(){ 
     public void run() { 
      //get Weather start: 
       LocationHelper helper = new LocationHelper(MomentsActivity.this); 
       Location location = helper.getLocation(); 

       if(null != location){ 
        String request = "http://www.google.com/ig/api?weather=,,,"+location.getLatitude() 
          +","+location.getLongitude(); 
        XmlParserUtil parser = new XmlParserUtil(mHandler); 
        try { 
         parser.parse(HttpUtil.getWeather(request)); 
        } catch (ClientProtocolException e) { 
         e.printStackTrace(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      //end 
     }; 
    }.start(); 
} 

しかし、とLocationManagerからの緯度は、私は場所がすべてtime.Pleaseの位置を取得するためのコードを参照してくださいヌルであることがわかった:

import android.content.Context; 
import android.location.Location; 
import android.location.LocationManager; 

public class LocationHelper { 
    Context context; 
    public LocationHelper(){} 
    public LocationHelper(Context context){ 
     this.context = context; 
    } 
    public Location getLocation(){ 
     LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
     Location location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     if(null == location){ 
      location = manager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     } 
     return location; 
    } 
} 

bug.Thankにあなたを見つける私を助けてください。私はいくつかの権限追加 :addtionで

すべて同じ

<uses-permission android:name="android.permission.INTERNET" ></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" ></uses-permission> 

を、Iは、GPSとWiFiオン、しかし位置もヌルでした。

+0

マニフェストファイルに必要な権限を追加しましたか? [リンク](http://developer.android.com/guide/topics/location/obtaining-user-location.html)を参照してください。 – Karthik

+0

私はいくつかのパーミッションを追加しました: user1184323

答えて

0
 LocationListener locationListener = new LocationListener() { 
      public void onLocationChanged(Location location) { 
       // Called when a new location is found by the network location provider. 
       System.out.println("Location is: :" + location.toString()); 

      } 

      public void onStatusChanged(String provider, int status, Bundle extras) {} 

      public void onProviderEnabled(String provider) {} 

      public void onProviderDisabled(String provider) {} 
     }; 

     // Register the listener with the Location Manager to receive location updates 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 
//  locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 
     locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0, locationListener); 

あなたはこれよりもさらに好きかもしれません。例えば、位置コードを連続的に実行することは、バッテリーを大量に消費することになる。正確さと最新性の間で優先順位をつけるために、複数の反応とフィルタリングを聞く必要もあります。がんばろう。

関連する問題