メイン アクティビティでロケーション リスナーを開始し、メインの拡張である他のクラスとロケーションの更新を共有したい。いくつかの異なるバリエーションを試しましたが、何もうまくいかないようです。Intent が変更されるたびにトースト メッセージが表示され、Eclipse で GPS が更新されると、データが必要になります。少しの助けや別の視点を探しています。Android の専門知識は限られていますが、これは別の Thread または AsyncTask ではなくメイン アクティビティで実行できると考えています。お手伝いありがとう!
ここでは、メインに設定されているロケーション マネージャーを示します。
private void initSystems() {
// Location Manager
LocationManager lm;
String context = Context.LOCATION_SERVICE;
lm = (LocationManager)getSystemService(context);
// Set up Location Manager
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
Provider = lm.getBestProvider(criteria, true);
Location location = lm.getLastKnownLocation(Provider);
updateWithNewLocation(location);
lm.requestLocationUpdates(Provider, 100, 10,locListener);
}
ここにリスナーと更新があります
private final LocationListener locListener = new LocationListener() {
public void onLocationChanged(Location loc) {
updateWithNewLocation(loc);
Toast.makeText(getApplicationContext(), "onLocationChanged", Toast.LENGTH_SHORT).show();
}
public void onProviderDisabled(String Provider){
updateWithNewLocation(null);
}
public void onProviderEnabled(String Provider){ }
public void onStatusChanged(String Provider, int status, Bundle extras){
Toast.makeText(getApplicationContext(), "onStatusChanged", Toast.LENGTH_SHORT).show();
}
};
private double updateWithNewLocation(Location loc) {
double loc_update = 0;
if (loc != null) {
lat = loc.getLatitude();
lng =- loc.getLongitude();
loc_update = lat+lng;
Toast.makeText(getApplicationContext(), "Lat & Long" + lat + " "+lng, Toast.LENGTH_LONG).show();
Log.d(DEBUG_TAG, "Lat & Long " + lat + " "+lng);
return loc_update;
}
else {
Toast.makeText(getApplicationContext(), "Unable to Obtain GPS Data", Toast.LENGTH_SHORT).show();
Log.d(DEBUG_TAG, "Unable to Obtain GPS Data");
}
return loc_update;
}