2012-02-02 2 views
0

Я хочу, чтобы получить информацию о погоде с помощью Google Weather API, когда у меня есть широта и долгота coordinates.So Беру коды:Получить Погода Информация с 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> 

Все же, я включил GPS и Wi-Fi, но место было также пустым.

+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); 

Вы можете стать намного более привлекательным, чем это. Например, постоянный запуск кода местоположения предполагает большой разряд батареи. Вам также необходимо прослушивать несколько ответов и фильтровать, чтобы определить приоритетность между точностью и недавним значением. Удачи.

Смежные вопросы