モバイル デバイスで GPS の緯度と経度を取得しようとしています。以下のコードは機能します。つまり、デバイスの「ワイヤレスネットワークを使用する」設定が選択されている場合、すべての情報を目的の方法で提供しますが、「GPS 衛星を使用する」が選択されている場合は機能しません。情報。
コードは次のとおりです。
void getLatitudeAndLongitude() {
boolean gpsEnabled = false;
LocationManager mLocMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Log.e("mLocation#####", "" + mLocMan);
try {
gpsEnabled = mLocMan
.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch (Exception ex) {
}
boolean networkEnabled = false;
try {
networkEnabled = mLocMan
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
} catch (Exception ex) {
}
Location mCurrentLocation = null;
// network*****************
if (networkEnabled)
mCurrentLocation = mLocMan
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
// gps********************
if (gpsEnabled)
mCurrentLocation = mLocMan
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Log.d("current location", "" + mCurrentLocation);
LocationProvider mGpsProv = null;
if (mGpsProv == null && mLocMan != null) {
mGpsProv = mLocMan.getProvider(LocationManager.GPS_PROVIDER);
}
if (mLocMan != null) {
mylocationlistener mGpsLocListener = new mylocationlistener();
mLocMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
0 /* minTime ms */, 0 /* minDistance in meters */,
mGpsLocListener);
Log.d("Provoider1", "NETWORK_PROVIDER");
}
if (mLocMan != null && mGpsProv != null) {
mylocationlistener mGpsLocListener = new mylocationlistener();
mLocMan.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0 /* minTime ms /, 0 / minDistance in meters */, 0,
mGpsLocListener);
Log.d("Provoider2", "GPS_PROVIDER");
}
}
class mylocationlistener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
latitude = String.valueOf(location.getLatitude());
longitude = String.valueOf(location.getLongitude());
Log.e("location==", "" + location);
Log.e("getLatitude", location.getLatitude() + "");
Log.e("getLongitude", location.getLongitude() + "");
if (GlobalConfig.DEBUG)
Log.d("setUpIndividualWork", "location==" + location);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
}
}, 1000);
onGPSUpdate(location);
Geocoder gcd = new Geocoder(setUpIndividualWorkOut.this,
Locale.getDefault());
List<Address> addresses = null;
try {
addresses = gcd.getFromLocation(location.getLatitude(),
location.getLongitude(), 1);
} catch (IOException e) {
e.printStackTrace();
}
if (addresses != null && addresses.size() > 0) {
userCurrentLocation = addresses.get(0).getLocality();
Log.e("current location by GPS ", ""
+ addresses.get(0).getLocality());
}
}
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
私はあなたの応答に非常に感謝します。