GPS 位置情報を使用する Android アプリを作成しています。私のコードはとてもシンプルです。
public class MyActivityThing extends Activity {
Location l;
MyLocationListener locationListener;
LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.car, menu);
return true;
}
public void setHotColdLocation(View view)
{
l = locationListener.getCurrentLocation();
}
}
これが私の MyLocationListener です
public class MyLocationListener implements LocationListener {
private static Location thelocation;
@Override
public void onLocationChanged(Location location) {
thelocation = location;
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
public Location getCurrentLocation()
{
return thelocation;
}
}
私の状況はこれです。のメソッドをonClick
呼び出すボタンがあります。setHotColdLocation
MyActivityThing
私の質問は、ユーザーがボタンを押したときに場所が設定されていることを確認するにはどうすればよいですか? メソッドはすぐには呼び出されonLocationChanged
ないため、アプリの最初の起動時にボタンを押して例外を発生させることができます....
場所が呼び出されるまでボタンを非表示にする必要がありますか? setHotColdLocation
の内容をtry catch で囲み、場所が設定されるまでユーザーのクリックを破棄する必要がありますか? 私はそれを機能させる方法をたくさん思いつくことができますが、最善の方法や正しい方法を知りません.
何か助けはありますか?