Android で GPS サービスを使用する方法を学習しようとしています。そのために、ユーザーがボタンを押したときに実際の GPS 位置を表示するプログラムを開発しています。
しかし、押すたびに0.0になります...
これはうまく機能していないコードだと思います:
LocationManager mlocManager=null;
LocationListener mlocListener;
mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(LOGTAG,"onCLickButton");
firstCoord.setText("");
Log.d(LOGTAG,Double.toString(MyLocationListener.latitude));
Log.d(LOGTAG, "AAAAAAAA");
if(MyLocationListener.latitude>0)
{
coordLat1 = MyLocationListener.latitude;
coordLon1 = MyLocationListener.longitude;
firstCoord.setText(Double.toString(coordLat1) + ' ' + Double.toString(coordLon1));
}
else
{
AlertDialog.Builder alert = new AlertDialog.Builder(home_screen.this);
alert.setTitle("Wait");
alert.setMessage("GPS en progress, wait.");
alert.setPositiveButton("OK", null);
alert.show();
}
}
});
onClickbutton の後の最初のログには 0.0 が表示されますが、Google マップ アプリを使用すると、携帯電話の場所が表示されます。だから私が思う問題は、座標を取得していないことです。
これは私の MyLocationListener クラスです: package com.gps.distance;
import android.location.Location;
import android.location.LocationListener;
import android.os.Bundle;
import android.util.Log;
public class MyLocationListener implements LocationListener {
private static final String LOGTAG = "LogsAndroid";
public static double latitude;
public static double longitude;
@Override
public void onLocationChanged(Location loc)
{
loc.getLatitude();
loc.getLongitude();
latitude=loc.getLatitude();
longitude=loc.getLongitude();
Log.d(LOGTAG, "TAKE POS");
}
@Override
public void onProviderDisabled(String provider)
{
//print "Currently GPS is Disabled";
Log.d(LOGTAG, "GPS DISABLED");
}
@Override
public void onProviderEnabled(String provider)
{
//print "GPS got Enabled";
Log.d(LOGTAG, "GPS ENABLED");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
}
onLocationChanged は使用されません。GPSを無効または有効にすると、ログが表示されますが、onLocationChangedではありません...決して。