如果找不到位置,Gps不会关闭

时间:2012-09-08 07:14:25

标签: android

如果在第一个实例中找不到位置,我应该怎么做才能关闭gps ..没有调用位置更新

package mobile.sales;

import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;

public class test extends Activity 
{
     DataSource dataSource;
     Double lat=0.0,lng=0.0;
     String GPS_FILTER = "";
     Thread triggerService;
     LocationListener locationListener;
     LocationManager lm;
     private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1000; // in Meters
     private static final long MINIMUM_TIME_BETWEEN_UPDATES = 29*1000*60; // in Milliseconds
     protected LocationManager locationManager;
     boolean isRunning = true;
     NotificationManager notificationManager;
     PendingIntent contentIntent;
     Notification notification;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        turnGPSOn();
        LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        locationListener = new MyLocationListener();
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, locationListener);
    }

     @Override
     public void onDestroy() 
     {
         // TODO Auto-generated method stub
         locationManager.removeUpdates(locationListener);
         locationManager= null;
         turnGPSOnOff();  
         super.onDestroy();
         // removeGpsListener();
     }

     private class MyLocationListener implements LocationListener
     {
        public void onLocationChanged(Location location) 
         {
            lat=location.getLatitude();
            lng=location.getLongitude();
            turnGPSOnOff();
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            String currentDateandTime = sdf.format(new Date());     
            SimpleDateFormat sdft = new SimpleDateFormat("hh:mm:ss");
            String time=sdft.format(new Date());
            dataSource.insertIntoLocationDetails(""+lat,""+lng,currentDateandTime,""+time);
            Log.d("service","location Inserted");
         }

         public void onStatusChanged(String s, int i, Bundle b) {

         }

         public void onProviderDisabled(String s) {
         }

         public void onProviderEnabled(String s) {
         }
     }
     private void turnGPSOnOff(){
         Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
         intent.putExtra("enabled", false);
         sendBroadcast(intent);
     }
     private void turnGPSOn(){
            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);
            }
     }
}

2 个答案:

答案 0 :(得分:0)

当您尝试DESTROY活动本身时,您正在调用该函数。首先使用GPSStatusListener

查找GPS修复

使用此代码

Check Gps Status

GpsTurnOff

中呼叫您的GPSStatusListener状态

答案 1 :(得分:0)

new Handler()。postDelayed(new Runnable(){            @覆盖            public void run()            {                turnGPSOnOff();            }         },2000 * 60); 这将在一段时间后关闭我的gps