14

Titanium で Android 3.2+ アプリを開発中です。デバイスで GPS が有効になっているかどうかを判断できることが重要です。Titanium API リファレンスによると、Ti.Geolocation.locationServicesEnabled は Android 2.2 以降では常に true を返します。これは、新しい「パッシブ」ロケーション プロバイダーのためです。GPS が本当に有効になっているかどうかを判断する他の方法はありますか?

ありがとう。

4

2 に答える 2

0

さて、ここに私が思いついた簡単な解決策があり、それは私にとってうまくいきます。最初にゼロに設定したグローバル変数「timeStamp」があります。

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;


        }
    });     
于 2013-10-16T17:47:48.810 に答える