Android-ReactiveLocation:call()未执行

时间:2016-10-31 16:57:25

标签: android gps google-play-services rx-java android-reactivelocation

我正在尝试使用mcharmas的Android-ReactiveLocation

什么都没发生,即它永远不会进入call方法。设备的位置已打开。使用GPS应用程序,我可以看到GPS正在运行。 在设置>位置>最近的位置请求,我的应用程序是列表中的第一个。没有错误消息 我肯定错过了什么。它是什么?

我在app build.gradle中添加了Reactive Location,如下所示:

compile 'pl.charmas.android:android-reactive-location:0.10@aar'

我在Google Play上创建了一个API密钥并将其放在清单文件中:

<meta-data
    android:name="com.google.android.geo.API_KEY"
     android:value=aaaaaaaaaaaa-bbbbbbbbbbbbbb_ccccccccccc"/>

在我项目的gradle.properties文件中,我添加了:

REACTIVE_LOCATION_GMS_API_KEY="aaaaaaaaaaaa-bbbbbbbbbbbbbb_ccccccccccc"

MainActivity.OnCreate():

if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) !=
        PackageManager.PERMISSION_GRANTED) {

    ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION},
            LocationService.MY_PERMISSION_ACCESS_COURSE_LOCATION);
}

locationProvider = new ReactiveLocationProvider(getApplicationContext());
lastKnownLocationObservable = locationProvider.getLastKnownLocation();

final LocationRequest locationRequest = LocationRequest.create()
        .setPriority(LocationRequest.PRIORITY_LOW_POWER)
        .setInterval(1000); // milliseconds

Subscription locationUpdateSubscription = locationProvider
        .getUpdatedLocation(locationRequest)
        .subscribe(new Action1<Location>(){
            @Override
            public void call(Location location){
                Log.i(TAG, "call: (" + location.getLatitude() + ", " + location.getLongitude() + ")");
                PreferencesUtilities.setCurrentLocation(mActivity.getApplicationContext(), location);
            }
        }
);

1 个答案:

答案 0 :(得分:1)

childScope.$destroy();

这将有效,当然可以根据您的需要进行调整