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

DESTROYアクティビティ自体を実行しようとしているときに、関数を呼び出しています。まず、GPSStatusListenerを使用してGPSの修正を見つけます

このコードを使用する

GPSステータスを確認する

GpsTurnOffであなたのステータスを呼び出します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 に答える