2013-04-08 39 views
1

我試圖用GPS providerNetwork provider得到的位置,但我沒有從任何GPS網絡得到位置。
這是我的代碼,前幾天工作正常,但現在它不工作。
我不明白我在哪裏錯了,因爲所有權限已添加到AndroidManifest.xml
以下是有助於您理解的代碼。沒有得到緯度和龍通過GPS或網絡

public class SearchDishoom extends Header implements LocationListener { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.searchdish);   




     manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000000, 100, this); 

      locationListenerNetwork = new LocationListener() { 
       public void onLocationChanged(Location location) {} 
       public void onProviderDisabled(String provider) {} 
       public void onProviderEnabled(String provider) {} 
       public void onStatusChanged(String provider, int status, Bundle extras) {} 
      };    

     if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
      // if gps provider is not enable then popup alertbox 
      buildAlertMessageNoGps(); 
     } else {   
      // if gps is one then start searching 
      locationListenerGps = new LocationListener() { 
       public void onLocationChanged(Location location) {} 
       public void onProviderDisabled(String provider) {} 
       public void onProviderEnabled(String provider) {} 
       public void onStatusChanged(String provider, int status, Bundle extras) {} 
      }; 
      manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000000,100, locationListenerGps); 
     } 
    } 

    /* 
    * Get location (lat-long) from sharedpreference to further use 
    */ 
    prefLocation = getSharedPreferences("myLocation", MODE_WORLD_READABLE); 
    String userLocationLat1 = prefLocation.getString("Lat", String.valueOf(0)); 
    String userLocationlong1 = prefLocation.getString("Long", String.valueOf(0)); 
    String address = prefLocation.getString("Address", "Location not found not found"); 
    userLocationLat = Double.parseDouble(userLocationLat1); 
    userLocationlong = Double.parseDouble(userLocationlong1); 

    // set lat-long value in getset class for use of another activity 
    gs = new GetSet(); 
    gs.setLatitude(userLocationLat); 
    gs.setLangitude(userLocationlong);  
    if (userLocationLat == 0 && userLocationlong == 0 && address.equals("")) { 
     /* 
     * if lat-long is 0 or null then start searching using 
     * GPS Provider or Network Provider 
     */ 

     manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerNetwork); 
     if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
      buildAlertMessageNoGps(); 
     } else { 
      manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000000,100, locationListenerGps);    
     } 
    } else { 
     // set lat-long value in getset class for use of another activity 
     gs.setLatitude(userLocationLat); 
     gs.setLangitude(userLocationlong); 
     setLocationName(userLocationLat, userLocationlong); 
    }  
} 

這裏是覆蓋onLocationchanged():

@Override 
public void onLocationChanged(Location location) { 
    userLocationLat =location.getLatitude(); 
    userLocationlong =location.getLongitude(); 
    prefLocation = getSharedPreferences("myLocation", MODE_WORLD_READABLE); 
    SharedPreferences.Editor prefsEditor = prefLocation.edit(); 
    prefsEditor.putString("Lat", String.valueOf(userLocationLat)); 
    prefsEditor.putString("Long", String.valueOf(userLocationlong)); 

    gs.setLatitude(userLocationLat); 
    gs.setLangitude(userLocationlong); 
    List<Address> addresses; 
    try { 
     addresses = new Geocoder(SearchDishoom.this, Locale.getDefault()) 
       .getFromLocation(userLocationLat, userLocationlong, 1); 
     Address obj = addresses.get(0); 
     add = obj.getAddressLine(0); 
     city = obj.getLocality(); 
     addressString = add + "," + city; 
     gs.setCurrentAddressString(addressString); 
     prefsEditor.putString("Address", addressString); 
     prefsEditor.commit(); 
     tvLocation.setText(add + "," + city);   
    } catch (IOException e) { 
     showToast("Unable to find location"); 
    } 
} 

即使我不使用Geocoder位置,如果我輸入城市名稱,然後它告訴我「無法找到位置」獲得。
這裏有一招,GeoCoder正在模擬器上工作,但沒有在電話上工作(我試過2個不同的手機)。

我的項目內置API 17並沒有任何logcat錯誤。
請給我任何提示或參考。

回答

0

也許你應該檢查「位置訪問」設置,讓您的位置信息?..