2011-09-24 196 views
1

我需要一個簡單的代碼片段,它可以執行以下操作。 我需要一個可以執行以下操作的函數。在Android上需要GPS位置幫助

  1. 檢查GPS是否啓用。如果未啓用,則啓用它。
  2. 檢查當前位置,即得到經度和緯度
  3. 禁用GPS。

我不需要連續位置更新,如LocationListener。只需15分鐘即可。 任何人都可以提供我這個工作代碼片段?

+1

AFAIK您無法以編程方式啓用GPS。您必須使用LocationManager/Listener並將更新間隔設置爲15分鐘 – Gryphius

回答

3

爲使GPS:

private void turnGPSOn(){ 
     String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 

     if(!provider.contains("gps")){ //if gps is disabled 
      final Intent poke = new Intent(); 
      poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); 
      poke.addCategory(Intent.CATEGORY_ALTERNATIVE); 
      poke.setData(Uri.parse("3")); 
      sendBroadcast(poke); 
     } 
    } 

禁用GPS

private void turnGPSOff(){ 
     String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 

     if(provider.contains("gps")){ //if gps is enabled 
      final Intent poke = new Intent(); 
      poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); 
      poke.addCategory(Intent.CATEGORY_ALTERNATIVE); 
      poke.setData(Uri.parse("3")); 
      sendBroadcast(poke); 
     } 
    } 

要檢查GPS是與否。

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
     buildAlertMessageNoGps(); 
    } 

獲取當前位置。

public void getCurrentLocation() { 
     LocationManager locationManager; 
     String context = Context.LOCATION_SERVICE; 
     locationManager = (LocationManager) getSystemService(context); 
     Criteria crta = new Criteria(); 
     crta.setAccuracy(Criteria.ACCURACY_FINE); 
     crta.setAltitudeRequired(false); 
     crta.setBearingRequired(false); 
     crta.setCostAllowed(true); 
     crta.setPowerRequirement(Criteria.POWER_LOW); 
     String provider = locationManager.getBestProvider(crta, true); 

     locationManager.requestLocationUpdates(provider, 1000, 0, 
       new LocationListener() { 
        @Override 
        public void onStatusChanged(String provider, int status, 
          Bundle extras) { 
        } 

        @Override 
        public void onProviderEnabled(String provider) { 
        } 

        @Override 
        public void onProviderDisabled(String provider) { 
        } 

        @Override 
        public void onLocationChanged(Location location) { 
         if (location != null) { 
          double lat = location.getLatitude(); 
          double lng = location.getLongitude(); 
          if (lat != 0.0 && lng != 0.0) { 
           System.out.println("WE GOT THE LOCATION"); 
           System.out.println(lat); 
           System.out.println(lng); 
           getAddress();       
          } 
         } 

        } 

       }); 
    } 
+0

嗨Noby,非常感謝您提供詳細代碼。由於我對java很陌生,我想知道是否有可能在android中創建java類,並將其從任何其他父類(如activity,service或broadcast reciever)中擴展出來?我想要一個簡單的java類,它將包含所有上述方法,並且我將從其他活動或類中調用它們。我把上面的代碼放在一個簡單的java類中,並導入了「import android.provider.Settings」,但仍然顯示「getContentResolver()」錯誤。你能幫忙嗎? –