このコードは GPS に対して完全に機能します。
public class GetLocation extends Activity implements LocationListener {
LocationManager lm;
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get_mission);
// Acquire a reference to the system Location Manager
tv= (TextView)findViewById(R.id.locationOutput);
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this);
}
public void onLocationChanged(Location arg0) {
String lat = String.valueOf(arg0.getLatitude());
String lon = String.valueOf(arg0.getLongitude());
Log.e("GPS", "location changed: lat="+lat+", lon="+lon);
tv.setText("lat="+lat+", lon="+lon);
}
public void onProviderDisabled(String arg0) {
Log.e("GPS", "provider disabled " + arg0);
}
public void onProviderEnabled(String arg0) {
Log.e("GPS", "provider enabled " + arg0);
}
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
Log.e("GPS", "status changed to " + arg0 + " [" + arg1 + "]");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_get_mission, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
}
ただし、GPSではなくネットワークから位置を取得したい。だから私は変更します:
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this);
に
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
それから私は何も得ません。これはコードのエラーによるものですか、それとも GPS の場合ほど頻繁に場所が変更されないため、onLocationChange が呼び出されないためですか? この時点で場所を変更せずに表示したい.getLastKnownLocation
場合は、アプリの起動時に更新されるように、どこでこれを呼び出すことができますか?