Android-ReactiveLocation: call() 未执行
Android-ReactiveLocation: call() not executed
我正在尝试使用 mcharmas 的 Android-ReactiveLocation。
什么都没发生,即它永远不会进入 call
方法。设备的位置已打开。使用 GPS 应用程序,我可以看到 GPS 正在工作。
在设置 > 位置 > 最近位置请求 中,我的应用位于列表的第一位。没有错误消息。
我肯定错过了什么。它是什么?
我在应用程序 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);
}
}
);
Observable<Location> locationObservable = reactiveLocationProvider.getUpdatedLocation(
LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_LOW_POWER)
.setInterval(1000);
locationObservable.map(location -> {
//do whatever you want with your location
}).subscribe();
这会起作用,当然可以根据您的需要对其进行调整
我正在尝试使用 mcharmas 的 Android-ReactiveLocation。
什么都没发生,即它永远不会进入 call
方法。设备的位置已打开。使用 GPS 应用程序,我可以看到 GPS 正在工作。
在设置 > 位置 > 最近位置请求 中,我的应用位于列表的第一位。没有错误消息。
我肯定错过了什么。它是什么?
我在应用程序 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);
}
}
);
Observable<Location> locationObservable = reactiveLocationProvider.getUpdatedLocation(
LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_LOW_POWER)
.setInterval(1000);
locationObservable.map(location -> {
//do whatever you want with your location
}).subscribe();
这会起作用,当然可以根据您的需要对其进行调整