0

如果在第一个实例中找不到位置,我应该怎么做才能关闭 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);
            }
     }
}
4

2 回答 2

0

You are calling the function when you are trying to DESTROY The activity itself. First find the Fix of GPS using GPSStatusListener

Use this code

Check Gps Status

Call your GpsTurnOff status in GPSStatusListener

于 2012-09-08T07:31:56.490 回答
0

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

于 2012-09-08T08:03:14.413 回答