在android google客户端api中从未调用过locaton changed
我正在开发需要位置服务的应用程序。我的代码如下。 主要的问题是位置改变了,永远不会被调用在android google客户端api中从未调用过locaton changed,android,Android,我正在开发需要位置服务的应用程序。我的代码如下。 主要的问题是位置改变了,永远不会被调用 public class MainActivity extends ActionBarActivity implements ConnectionCallbacks, OnConnectionFailedListener, LocationListener { protected GoogleApiClient mGoogleApiClient; public static final long U
public class MainActivity extends ActionBarActivity implements
ConnectionCallbacks, OnConnectionFailedListener, LocationListener {
protected GoogleApiClient mGoogleApiClient;
public static final long UPDATE_INTERVAL_IN_MILLISECONDS = 100;
public static final long FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS =
UPDATE_INTERVAL_IN_MILLISECONDS / 2;
protected LocationRequest mLocationRequest;
protected static final String TAG = "location-updates-sample";
protected Location mCurrentLocation;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG,"btn is clicked");
buildGoogleApiClient();
Log.i(TAG,"build google api completed");
mGoogleApiClient.connect();
Log.i(TAG,"client conneted");
}
});
}
protected synchronized void buildGoogleApiClient() {
Log.i(TAG, "Building GoogleApiClient");
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
createLocationRequest();
}
protected void createLocationRequest() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
protected void startLocationUpdates() {
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
}
@Override
public void onConnected(Bundle bundle) {
startLocationUpdates();
Log.i(TAG,"from onconnected method");
}
@Override
public void onConnectionSuspended(int i) {
mGoogleApiClient.connect();
}
@Override
public void onLocationChanged(Location location) {
mCurrentLocation = location;
Log.i(TAG,"on location changed");
Log.i(TAG,String.valueOf(mCurrentLocation.getLongitude()));
Log.i(TAG,String.valueOf(mCurrentLocation.getLatitude()));
Toast.makeText(this,"liocation changed", Toast.LENGTH_SHORT).show();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
}
我已经访问了清单中的位置。同时将设置设置为仅限gps设备。
当我点击按钮时,我得到了结果
location-updates-sample﹕ btn is clicked
location-updates-sample﹕ Building GoogleApiClient
location-updates-sample﹕ build google api completed
location-updates-sample﹕ client conneted
location-updates-sample﹕ from onconnected method
我的代码有什么问题我使用相同的代码处理位置。 不知道这是否是正确的解决方案,但尝试更换
mLocationRequest = new LocationRequest();
与
对我有用。我不懂英语。希望我能帮忙: 我认为,使用gps芯片,您的更新间隔(毫秒)为100 0,1秒,最快的更新间隔(毫秒)为100/2=0.05秒,非常快。您应该将其设置为>1s。像这样的东西
UPDATE_INTERVAL_IN_MILLISECONDS = 10 * 1000;// 10s
FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS = 5 *1000; // 5s
确保已添加.addApiLocationServices.API 我在模拟器中没有收到onLocationChangedLocation调用
current_location =LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
使用此选项可以找到当前位置
希望这将对您有所帮助。不工作,我正在学习本教程
current_location =LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);