0

GPS 位置を取得するためのコードは次のとおりです。

    public void run() {

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

        if (mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

            Looper.prepare();

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

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

        } else {

            //Never be here!!!

        }
}

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

        if (currentLocation!=null) {

                  //found. OK
        }
    }
};

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) {
         //If I disable de GPS I have an error
     }

    @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 が無効になっており、データを探すのに時間がかかりすぎていることを検出するにはどうすればよいですか?

私は onProviderDisabled がそのイベントを検出すると思っていましたが、私のコードはそこに行きません。私はこの例外を得ました:

Looper.prepare を呼び出していないスレッド内でハンドラを作成できない

前もって感謝します

4

0 に答える 0