1

タイトルすべてを言う、私はこれを使用しています:

 public int onStartCommand(Intent get,int num1,int num2){

 if (lm != null){

      lm.removeUpdates(this);

  }

 prefs = getSharedPreferences("Prefs", 
         Context.MODE_PRIVATE);





lm = (LocationManager) this.getSystemService(LOCATION_SERVICE);

Criteria criteria = new Criteria();
criteria.setAccuracy( Criteria.ACCURACY_COARSE );
String provider = lm.getBestProvider( criteria, false );
////* Just GPS is Listed in this List , Google Location is Enabled but Not Detected       
/*and Note the Parameter 'false' to get the list of all avaible provider,enable or not 
Toast.makeText(this, provider, Toast.LENGTH_LONG).show(); */
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0, this);




 if(IsFromWidget != true){
str2 = get.getStringExtra("num");   
 }
CheckNetworkState();
return 0;


}

  public void onDestroy() 
 {
 super.onDestroy();
 if (lm != null){

      lm.removeUpdates(this);

  }
 }
private void CheckNetworkState() {


                 if (lm != null){

                      lm.removeUpdates(this);

                  }
                 stopSelf();
                 }






    }





public void onLocationChanged(Location arg0) {
    // TODO Auto-generated method stub

lat = arg0.getLatitude();
lon = arg0.getLongitude();


if (lat == 0 && lon == 0){


}

}


}

if(IsFromWidget = true){



if (lat == 0 && lon == 0){


}
}


stopSelf();
}

public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub


      } 



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

}

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

}



@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

 }

ただし、GPSとGoogleロケーション設定のみが有効になっており、3GまたはWifiに接続されている場合は正常に機能します。Android2.3.xを使用している場合は正常に機能します。コードエラーには注意を払わないでください。ここに投稿する前に、コードを編集しました。

ありがとう 。

4

2 に答える 2

3

AndroidManifest.xml で権限を設定することを忘れないでください

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
于 2012-09-16T16:44:51.737 に答える
1

あなたがあなたの場所を取得しようとしているなら、あなたはこれをすることができます:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

Criteria crit = new Criteria();
provider = lm.getBestProvider(crit, false);
Location location = lm.getLastKnownLocation(provider);

そして、LocationListenerクラスを設定します

public class MyLocationListener implements LocationListener {

    public void onLocationChanged(Location loc){


    }

    public void onProviderDisabled(String provider) {


    }


    public void onProviderEnabled(String provider) {

    }


    public void onStatusChanged(String provider, int status, Bundle extras) {

    }
}

それは少なくともあなたにとって良いスタートです。幸運を!

于 2012-09-16T16:40:11.510 に答える