2009-06-26 6 views
27

GPS'i nasıl etkinleştirilir. Şu anda GPS'in etkin olup olmadığını anlayabiliyorum. Sorunum, devre dışıysa uygulama açılışında GPS'i etkinleştirmek istiyorum. Bu programı nasıl yapabilirim?programlı Şu anda GPS ile çalışan Android'de bir uygulamayı yazıyorum Android Cupcake

+0

Cupcake sürümüne bağlıdır kapalı değilse

public boolean isLocationServiceEnabled(){ LocationManager locationManager = null; boolean gps_enabled= false,network_enabled = false; if(locationManager ==null) locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); try{ gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); }catch(Exception ex){ //do nothing... } try{ network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); }catch(Exception ex){ //do nothing... } return gps_enabled || network_enabled; } 

Sonunda açın. 1.5 görünüşe göre izin vermez. – D3vtr0n

cevap

51

Sen, Android 1.5 ile başlayan olamaz. Yapabileceğiniz en çok şey, kullanıcının bunu açmasına/kapatmasına izin vermek için etkinliği aç. Bu aktiviteyi açmak için bir niyet oluşturmak için android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS'da yapılan eylemi kullanın.

+3

Bu neden devre dışı bırakıldı? Geliştiricilerin bunu değiştirmesine neden izin vermiyorsunuz? Güç Kontrolü widget'ı, bu sayede de mümkün olabiliyor. Düşünmüyor musun? –

+24

Gizlilik nedeniyle devre dışı bırakılmıştır. Kullanıcı GPS kapalı istiyorsa, kullanıcının GPS kapalı, periyodu olmalıdır. – CommonsWare

+0

Bu adamlar bunu çözmüş görünüyor. Maalesef, apk göz kamaştırdı ve nasıl başarıldığını anlayamadım. URL: https:? //market.android.com/details id = at.abraxas.powerwidget.free & hl = tr –

15
if(!LocationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) 
{ 
    Intent myIntent = new Intent(Settings.ACTION_SECURITY_SETTINGS); 
    startActivity(myIntent); 
} 
+8

.isProviderEnabled, LocationManager'da statik bir yöntem olmadığından, bu kod benim için Android 2.2'de derlemedi.Benim için çalışma kodu aşağıdaki gibi oldu (biçimlendirme için özür diler) LocationManager locationManager = (LocationManager) getSystemService (LOCATION_SERVICE); if (! LocationManager.isProviderEnabled (LocationManager.GPS_PROVIDER)) { Niyet myIntent = yeni Niyet (Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity (myIntent); } –

-5

soru bu özellikler bulunmaktadır android kullanıcı düzeyinde ise: "Settings -> Location -> Use wireless networks" -> "Settings -> Location -> Use GPS satellites".

Ama geliştirici de

uygun izinlerle sınıf "android.provider.Settings.Secure" kullanabilirsiniz.

+0

Bu cevap değil, soruyu soran kişi –

3

Aşağıdaki kullanabilirsiniz:

try { 
    Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true); 
} catch (Exception e) { 
    logger.log(Log.ERROR, e, e.getMessage()); 
} 

ancak sistem imza koruma seviyesine sahip olmadığını sadece çalışacaktır. Yani aslında kullanmak için kendi Resmi pişirmek gerekir:

private void turnGPSOnOff(){ 
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 
    if(!provider.contains("gps")){ 
    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); 
    //Toast.makeText(this, "Your GPS is Enabled",Toast.LENGTH_SHORT).show(); 
    } 
} 
6

Bu yöntem kod yardımı olabilir gerekirse) tek bir tıklama ile. konum hizmeti veya değil zaten olup olmadığını

+2

evet ** bu 2,2'ye kadar yapılabilir (sdk 8) **. Daha fazla bilgi için, bkz. [GPS'yi Tasker gibi programlı olarak etkinleştir] (http://stackoverflow.com/a/5305835/383414) –

0

Sen (konum hizmetlerini etkinleştirmek için kullanıcıya sorar Çal Hizmetleri Location Settings Dialog kullanmalıdır için/

1

İlk onay ??

Denetleme konum hizmeti etkindir veya konum hizmeti daha önce

if (isLocationServiceEnabled())) { 
      //DO what you need... 
    } else { 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setMessage("Seems Like location service is off, Enable this to show map") 
     .setPositiveButton("YES", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialogInterface, int i) { 
          Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
            startActivity(intent); 
           } 
          }).setNegativeButton("NO THANKS", null).create().show(); 
       } 
İlgili konular