打开gps并使用它

时间:2013-09-20 16:19:28

标签: android android-location

我有一个获取用户位置的课程。

如果GPS关闭,我打开它并显示位置,但它不起作用。

这是班级:

public class UseGPS implements Runnable{

Activity activity;
Context context;

private ProgressDialog pd;

LocationManager mLocationManager;
Location mLocation;
MyLocationListener mLocationListener;

Location currentLocation = null;


public UseGPS(Activity Activity, Context Context){
    this.activity = Activity;
    this.context = Context;

}

public void getMyPos(){

    DialogInterface.OnCancelListener dialogCancel = new DialogInterface.OnCancelListener() {
        public void onCancel(DialogInterface dialog) {
            Toast.makeText(activity,"no gps signal",Toast.LENGTH_LONG).show(); 
            handler.sendEmptyMessage(0);                
        }    
     };

     pd = ProgressDialog.show(activity,context.getString(R.string.looking_for), context.getString(R.string.gps_signal), true, true, dialogCancel);   
     writeSignalGPS();

}

private void setCurrentLocation(Location loc) {
    currentLocation = loc;
}


private void writeSignalGPS() {

    Thread thread = new Thread(this);
    thread.start();

}

public void run() {

    mLocationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);

    Looper.prepare();

    mLocationListener = new MyLocationListener();
    mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener);

    Looper.loop(); 
    Looper.myLooper().quit(); 

}

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        pd.dismiss();
        mLocationManager.removeUpdates(mLocationListener);

        if (currentLocation!=null) {
              Toast.makeText(activity,currentLocation.getLatitude(),Toast.LENGTH_LONG).show();
              Toast.makeText(activity,currentLocation.getLongitude(),Toast.LENGTH_LONG).show(); 

        }
    }

};

private class MyLocationListener implements LocationListener {
    @Override
    public void onLocationChanged(Location loc) {
        if (loc != null) {
            setCurrentLocation(loc);
            handler.sendEmptyMessage(0);

        }
    }

    @Override
     public void onProviderDisabled(String provider) {

             /*turn on GPS*/
        Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
        intent.putExtra("enabled", true);
        context.sendBroadcast(intent);


     }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub
    }
} 

}

该代码在GPS打开时有效,但它不会打开GPS。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

在启动应用程序的时间时,请提供一条弹出消息,其中包含用户打开GPS的选项。

此弹出按钮导航到设置中的GPS设置,用户可以打开GPS。

以下是代码段:

AlertDialog gpsonBuilder = new AlertDialog.Builder(Home_Activity.this);
 gpsonBuilder.setTitle("Your Gps Provider is disabled please Enable it");
 gpsonBuilder.setPositiveButton("ON",new DialogInterface.OnClickListener() {

  public void onClick(DialogInterface arg0, int arg1) {
 startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
                        }
                    });
            gpsonBuilder.show();