Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android LocationClient未连接,尽管调用了onConnected_Android_Geolocation_Google Play Services - Fatal编程技术网

Android LocationClient未连接,尽管调用了onConnected

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

在我的应用程序中,我试图使用基于谷歌教程“检索当前位置”(Retrieving the Current Location)的LocationService。 不幸的是,当我真的需要它时,我得到了一个非法状态异常:未连接。调用connect()并等待onConnected'异常。 我需要一个非常短的时间内定位服务-紧迫 我想获取当前位置(或最后一个已知位置)的一些按钮。 我的LocationHandler代码如下:

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(…)
,它为什么没有连接