Это вопрос, который задавался много раз, но я не мог найти решение, которое всегда работает.
Я разрабатываю приложение с использованием провайдера Fused location.
В методе onConnected()
я запрашиваю обновления местоположения, и логика приложения будет инициирована после создания исправления местоположения и вызова onLocationChanged()
. (См. Мой код ниже).
Проблема onLocationChanged()
метод никогда не вызывается на некоторых устройствах. Я использую Samsung Tab 2 и Samsung Galaxy Grand для тестирования. Этот код отлично работает на вкладке 2, но не работает на Grand. Не работает, я имею в виду, что locationClient
подключается, но onLocationChanged()
никогда не вызывается.
Раньше я использовал диспетчер местоположений для получения местоположения и в этой реализации, возникла одна и та же проблема. Итак, я попробовал реализовать поставщика плавного доступа, но у меня по-прежнему возникает та же проблема.
Может ли кто-нибудь помочь мне с этой проблемой? Здесь что-то не хватает?
public class MainActivity extends Activity implements GooglePlayServicesClient.ConnectionCallbacks, OnConnectionFailedListener, LocationListener {
LocationClient locationclient;
LocationRequest lr;
Location loc1;
static String address;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationclient = new LocationClient(this,this,this);
locationclient.connect();
}
@Override
public void onConnected(Bundle arg0) {
// TODO Auto-generated method stub
lr=LocationRequest.create();
lr.setInterval(100);
locationclient.requestLocationUpdates(lr, this);
Log.d("LocationClient","On Connected");
}
@Override
public void onDisconnected() {
// TODO Auto-generated method stub
locationclient.disconnect();
}
@Override
public void onConnectionFailed(ConnectionResult arg0) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location loc) {
// TODO Auto-generated method stub
// Application Logic
Log.d("LocationClient","Last Known Location LC:" + loc.getLatitude() + "," + loc.getLongitude());
}
}