Android:Google Map应用如何检索当前位置?

时间:2014-07-21 18:08:36

标签: android google-maps location google-play-services locationmanager

我正在开发一个需要知道位置感知的应用(<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />)。它在我的设备上运行正常(运行Android 4.4.2),但我在使用GT-S5830(运行Android 2.2.1)时遇到问题。

我同时使用android.location.LocationManagercom.google.android.gms.location.LocationClient。两者在4.4.2上工作正常(位置由NETWORK,GPS和FUSED提供商提供),但在2.2.1 LocationManager从不调用onLocationChanged(...)LocationClient无法使用,因为检查GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS返回false。

无论如何,GT-S5830包含了Google Map应用程序,并且能够正确检索当前位置。

关于我做错了什么的想法?

Update1:​​我构建了一个新应用,仅检查GooglePlayServices是否可用,以防检索当前位置。 GooglePlayServices实际上可用,并且获取当前位置。现在的问题是:完全相同的方法如何在不同的应用程序上返回两个不同的结果?也许是因为争论?我总是传递this参数:

1)当我没有得到 ConnectionResult.SUCCESS我传递public class BaseActionBarActivity extends ActionBarActivity implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener {的实例

2)当我获取时ConnectionResult.SUCCESS我传递了public class MainActivity extends Activity implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener {的实例

正在进行更多更新。

Update2:问题似乎与清单中的<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />标记或导入的google-play-services_lib有关。

我刚刚在一台新PC上导入了该项目,如果标签<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />不存在则会编译(这种方式无法在我的其他PC上编译)并且该应用程序在我正在使用的设备上正常工作问题(如果我留下该标记并使用随机值,它也会起作用,例如<meta-data android:name="com.google.android.gms.version" android:value="1" />)。

1 个答案:

答案 0 :(得分:0)

您可以检查googlePlayServicesUtil是否可用,如下所示:

int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
        Log.e("PLAY SERVE", "status:" + status);
        try {
            if (status != ConnectionResult.SUCCESS) {
                GooglePlayServicesUtil.getErrorDialog(status, this, 1).show();
            } else {
              //good to go
           }