根本没有调用我的onLocationChanged。有什么想法吗?我拥有所有权限。这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_locate_me);
createLocationRequest();
buildGoogleApiClient();
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
MapFragment mapFragment = ((MapFragment) getFragmentManager().findFragmentById(R.id.map));
mapFragment.setRetainInstance(true);
}
@Override
protected void onStart() {
super.onStart();
if (mGoogleApiClient != null) {
mGoogleApiClient.connect();
}
}
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
protected void createLocationRequest() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
@Override
public void onConnected(Bundle bundle) {
if (mRequestingLocationUpdates) {
startLocationUpdates();
}
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onLocationChanged(Location location) {
mCurrentLocation = location;
displayMessage("message","my position changed");
}
protected void startLocationUpdates() {
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
private void displayMessage(String title, String message) {
//displaying a message
}
@Override
protected void onPause() {
super.onPause();
stopLocationUpdates();
}
protected void stopLocationUpdates() {
LocationServices.FusedLocationApi.removeLocationUpdates(
mGoogleApiClient, this);
}
@Override
public void onResume() {
super.onResume();
if (mGoogleApiClient.isConnected() && !mRequestingLocationUpdates) {
startLocationUpdates();
}
}
我遵循了android教程,它似乎都是一样的,但onLocationChanged没有被调用(在这种情况下,消息不显示)。 顺便说一下,它似乎已经在3周左右起作用,我不知道发生了什么变化。
答案 0 :(得分:1)
我怀疑问题出在mRequestingLocationUpdates
的某个地方。如果设置了mRequestingLocationUpdates
,则在您的代码中没有任何指示。
对于使用物理设备进行位置更新,获取位置的时间取决于设备上允许的内容:设置 - >位置。首先,需要启用位置。该模式将确定是否启用了GPS和WiFi或蓝牙位置。只要您位于具有WiFi /蓝牙覆盖范围且您有数据连接的区域,WiFi和蓝牙位置应该非常快(几秒钟)。 GPS非常准确,但可能非常慢(几分钟),具体取决于天空中卫星的可见性以及是否有辅助GPS的数据连接。