Wie kann man sagen, ob GPS auf Android mit Titanium aktiviert ist

Ich arbeite an einer Android 3.2+ App in Titanium. Es ist entscheidend, dass ich feststellen kann, ob das Gerät GPS aktiviert hat. Laut der Titanium-API-Referenz wird Ti.Geolocation.locationServicesEnabled immer auf Android 2.2+ zurückkehren, wegen eines neuen "passiven" Standortanbieters. Gibt es eine andere Möglichkeit zu bestimmen, ob GPS wirklich aktiviert ist?

Vielen Dank.

  • Onclick-Ereignis auf Textansicht (das hat TextIsSelectable = "true") wird auf den zweiten Klick aufgerufen
  • Unterschied zwischen Timer und Alarmmanager
  • Wie man mehrere Instanzen eines Layouts mit der gleichen ID in einem aufgeblasenen Layout aufzublasen
  • Android App ist nicht kompatibel mit Samsung Galaxy S4
  • Wie bekomme ich Android Studio?
  • Benutzerdefiniertes Listenelement zu ListView android
  • So wählen Sie die richtige Bildauflösung für Android
  • BaseAdapter notifyDatasetChanged () genannt aber getView () wird nie aufgerufen
  • Wie kann ich die Sprache meiner Bewerbung ändern
  • Überlappende Ansichten in Android
  • Webansicht mit keine geeigneten EGL-Konfigurationen gefunden Fehler
  • Overriding "Items" im Android-Stil.
  • 2 Solutions collect form web for “Wie kann man sagen, ob GPS auf Android mit Titanium aktiviert ist”

    Ich denke, dieser Code sollte für Sie arbeiten:

    //check to see if we have GPS capabilities if(Titanium.Geolocation.isLocationProviderEnabled(Titanium.Geolocation.PROVIDER_GPS, Titanium.Geolocation.ACCURACY_BEST) == false) { var alertDlg = Titanium.UI.createAlertDialog({ title:'MileTrackGPS', message:'GPS is OFF. Enable it in Settings.', buttonNames: ['Cancel', 'Open Settings'] }); alertDlg.cancel = 0; alertDlg.addEventListener('click', function(e){ if(!e.cancel) { //open up the settings page var settingsIntent = Titanium.Android.createIntent({ action: 'android.settings.LOCATION_SOURCE_SETTINGS' }); activity.startActivity(settingsIntent); } else { //close the window to exit win.close(); } }); alertDlg.show(); } 

    Refrence

    Okay, hier ist eine einfache Lösung, die ich mitgemacht habe und es funktioniert gut für mich. Ich habe eine globale Variable 'timeStamp', die ich zunächst auf Null gesetzt habe.

     Titanium.Geolocation.getCurrentPosition(function(e){ //only update fields if timer is still active if(gpsTimer!=null) { //if the provider is not GPS or the timestamp is the same as the last, we do not want the results. We need to alert the user that they need to turn their GPS on. if(e.provider['name']!="gps" || timeStamp==e.coords.timestamp) { //clear timeout clearTimeout(gpsTimer); gpsTimer = null; //close window get_gps_win.close(); //garbage collection get_gps_win = null; gpsLatField = null; gpsLongField = null; gpsAccuracyField = null; timeStamp=0; //alert user alert("This feature is not available unless you have GPS turned on. Please turn GPS on and then try again."); } else { //update fields gpsLatField.value=ConvertDDToDMSPlain(e.coords.latitude); gpsLongField.value=ConvertDDToDMSPlain(e.coords.longitude); gpsAccuracyField.value=e.coords.accuracy+" meters/"+(e.coords.accuracy*3.28084)+" feet"; gpsTimer=setTimeout(function() { Titanium.Geolocation.fireEvent('location'); }, 1000); } timeStamp= e.coords.timestamp; } }); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.