Android LocationClient未连接,尽管调用了onConnected
在我的应用程序中,我试图使用基于谷歌教程“检索当前位置”(Retrieving the Current Location)的LocationService。 不幸的是,当我真的需要它时,我得到了一个非法状态异常:未连接。调用connect()并等待onConnected'异常。 我需要一个非常短的时间内定位服务-紧迫 我想获取当前位置(或最后一个已知位置)的一些按钮。 我的LocationHandler代码如下:Android LocationClient未连接,尽管调用了onConnected,android,geolocation,google-play-services,Android,Geolocation,Google Play Services,在我的应用程序中,我试图使用基于谷歌教程“检索当前位置”(Retrieving the Current Location)的LocationService。 不幸的是,当我真的需要它时,我得到了一个非法状态异常:未连接。调用connect()并等待onConnected'异常。 我需要一个非常短的时间内定位服务-紧迫 我想获取当前位置(或最后一个已知位置)的一些按钮。 我的LocationHandler代码如下: class LocationHandler implements GooglePl
class LocationHandler implements GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener {
private MainActivity m_ma;
private LocationClient m_locationClient;
private boolean m_isAvailable = false;
//ctor
LocationHandler(MainActivity ma) {
m_ma = ma;
m_locationClient = new LocationClient(ma, this, this);
}
@Override
public void onConnected(Bundle dataBundle) {
// Display the connection status
Toast.makeText(m_ma, "Connected", Toast.LENGTH_SHORT).show();
m_isAvailable = true;
Log.i(TAG, "LOCATION = " + m_locationClient.getLastLocation());
}
@Override
public void onDisconnected() {
// Display the connection status
Toast.makeText(m_ma, "Disconnected."
Toast.LENGTH_SHORT).show();
m_isAvailable = false;
Log.i(TAG, "LOCATION dis-connected");
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
m_isAvailable = false;
Log.i(TAG, "LOCATION failed");
... code from tutorial
}
//connect the LocationClient
void connectLocationClient() {
m_locationClient.connect();
}
//disconnect the LocationClient
void diconnectLocationClient() {
m_locationClient.disconnect();
}
//
Location getCurrentLocation() {
connectLocationClient();
if(m_isAvailable) {
Log.i(TAG, "3333333333333333 m_locationClient.isConnected() = " + m_locationClient.isConnected());
return m_locationClient.getLastLocation();
} else {
Log.i(TAG, "444444444444");
Toast.makeText(m_ma, "Location Services is not yet avaialable",
Toast.LENGTH_SHORT).show();
return null;
}
}
}
按钮的onClick代码调用getCurrentLocation()
方法。
在第一次单击时,我显然得到一个空位置和“…尚未可用”Toast。
然后调用onConnected(..)
回调,并在其内部成功调用getLastLocation()
。
然后,当我再次按下按钮时,我得到了自LocationClient以来的IllegalStateException
没有连接。
如果我已经看到调用了onConnected()
,但既没有看到调用了onDisconnected()
也没有看到调用了onConnectionFailed(…)
,它为什么没有连接