Я хотел бы знать, возможно ли его получить местоположение пользователя без использования LocationListener.Android: Местоположение пользователя без locationListener
Причина, по которой я спрашиваю, что мои события locationListener не вызываются.
public class LocationActivity extends Activity implements LocationListener{
private LocationManager m_locationManager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout content = new LinearLayout(this);
content.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
content.setOrientation(LinearLayout.VERTICAL);
content.setBackgroundColor(Color.TRANSPARENT);
TextView infoLabel = new TextView(this);
infoLabel.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
infoLabel.setTextSize(20.0f);
infoLabel.setText("Initializing...");
content.addView(infoLabel);
try{
m_locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
String provider = null;
if (m_locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
provider = LocationManager.GPS_PROVIDER ;
Log.d("Unity", "Using GPS");
m_locationManager.requestLocationUpdates(provider, 0, 0, this);
} else if(m_locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
provider = LocationManager.NETWORK_PROVIDER;
Log.d("Unity", "Using Netword");
m_locationManager.requestLocationUpdates(provider, 0, 0, this);
} else {
Log.d("Unity", "Provider Not available");
}
}catch(Exception ex){
Log.d("Unity", "locatons error " + ex.getMessage());
}
setContentView(content);
}
public void onLocationChanged(Location location) {
Log.d("Unity", "UserLocation Lat:" + location.getLatitude() + " Long:" + location.getLongitude());
}
public void onStatusChanged(String provider, int status, Bundle extras) {Log.d("Unity", "onStatusChanged");}
public void onProviderEnabled(String provider) {Log.d("Unity", "onProviderEnabled");}
public void onProviderDisabled(String provider) {Log.d("Unity", "onProviderDisabled");}
}
Посмотреть этот пост для получения дополнительной информации:
Android: Can't create handler inside thread that has not called Looper.prepare()
Modified, чтобы отразить mmeyer комментарии
Так getLastKnownLocation не равно нулю, но до сих пор нет обновлений. Знаете ли вы, что я могу получить текущую позицию без использования функции locationListener? Или это единственный способ получить его? – user346443
Нет, я не думаю, что есть другой способ. getLastKnownLocation просто дает вам быстрый способ получить местоположение, прежде чем вы получите какое-либо обновление, поэтому пользовательский интерфейс/пользователь не должен ждать. Но я все еще думаю, что причина, по которой вы не получаете обновления, состоит в том, что ваши параметры запрашивают обновления только тогда, когда местоположение изменилось более чем на 100 метров. Что произойдет, если вы измените третий параметр на 0? – mmeyer
Изменение обоих параметров на 0 ничего не делает, и getLastKnownLocation более 24 часов. Я называю это от движка Unity Game. Таким образом, очевидно, что он каким-то образом заворачивает события. Представление открыто правильно, только эти события не стреляют. Спасибо за вашу помощь в этом. – user346443