标签: google-location-services

谷歌地图 v2 中是否弃用了“构造函数 LocationRequest()”?

我最近偶然发现了这条消息,我很确定这个构造函数在 18.0.0 之前的版本中没有被弃用,但我也找不到任何地方也找不到这个构造函数已被弃用的信息。

我们应该使用什么来代替,有没有另一种方法来创建一个locationRequest

消息抱怨 LocationRequest() 已弃用

android kotlin google-maps-android-api-2 google-location-services

20
推荐指数
7
解决办法
4323
查看次数

LocationCallback没有被调用

我正在使用FusedLocationProviderClient进行位置请求.我保留了一个计时器30秒,以检查在该时间范围内是否收到位置.代码如下:

 public void requestLocationUpdates() {
    initializeLocationRequest();
    mFusedLocationProviderClient.requestLocationUpdates(mLocationRequest, mLocationCallback, null);
    startTimer();
}

 private void initializeLocationRequest() {
    mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(mContext);
    mLocationRequest = new LocationRequest();
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    mLocationRequest.setInterval(5000);
    mLocationRequest.setFastestInterval(5000);

    mLocationCallback = new LocationCallback() {

        @Override
        public void onLocationResult(LocationResult locationResult) {
            synchronized (SilentCurrentLocationProvider.this) {
                super.onLocationResult(locationResult);
                Location location = locationResult.getLastLocation();
        }
    };
}

  private void startTimer() {
    if (mTimeout < 1) {
        mTimeout = mDefaultTimeout;
    }
    mTimer = new Timer();   
    mTimer.schedule(new LocationTimer(), mTimeout * 1000);
}
Run Code Online (Sandbox Code Playgroud)

在少数设备上,位置不会到来.在进一步调试时,我发现正在创建LocationRequestLocationCallback,但它没有进入onLocationResult()方法.

由于这是实时产品的一部分,因此很难在每台设备上进行调试.即使我尝试重新启动手机,但它无法正常工作.用户尝试了其他应用程序,如Ola和位置即将到来. …

android google-location-services fusedlocationproviderclient

15
推荐指数
2
解决办法
2174
查看次数

GPS位置波动

我在Google地图上绘制一条折线,取决于半径(1 - 100米).一旦绘制了心脏,用户需要在心脏边界上行走并且需要从头到尾完成(从底部开始然后向左然后向右然后再向下开始).

我能画出心脏,我得到了360分(latlng).这是我的代码,它将绘制心脏和图像.

private void initPath() {
    path = new PolylineOptions();
    path.color(ContextCompat.getColor(mActivity,R.color.heart_green));
    path.width(25);

    // offset to bottom
    double offsetY = getY(Math.toRadians(180));

    for (int angle = 0; angle <= 360; angle++) {
        double t = Math.toRadians(angle);
        double x = getX(t);
        double y = getY(t) - offsetY;
        //Log.d(TAG, "angle = " + angle + "(x = " + x + ",y= " + y + ")");

        //convert x,y to lat lng
        LatLng latLng = getLatLng(x, y, center);
        path.add(latLng);

        heart360Points.add(latLng);

    }

} …
Run Code Online (Sandbox Code Playgroud)

gps android google-maps-android-api-2 google-location-services

12
推荐指数
2
解决办法
1389
查看次数

LocationListener LocationCallback有什么区别?

我一直在看着和玩FusedLocationProviderApi.该类包含以下两种方法:

PendingResult<Status> requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationCallback callback, Looper looper)

PendingResult<Status> requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationListener listener, Looper looper)
Run Code Online (Sandbox Code Playgroud)

它们具有非常相似的签名和描述,唯一的区别在于使用LocationCallback和使用其他用途LocationListener.

抽象类LocationCallback定义了两种方法:

void onLocationAvailability(LocationAvailability locationAvailability)

void onLocationResult(LocationResult result)
Run Code Online (Sandbox Code Playgroud)

并且接口LocationListener只定义了一个方法

abstract void onLocationChanged(Location location)
Run Code Online (Sandbox Code Playgroud)

无视其他方法LocationCallback,这两者之间有什么区别?是否有一些概念差异或特殊用例使一个优先于另一个?复制功能的理由是什么?

android google-play-services google-location-services

11
推荐指数
1
解决办法
4479
查看次数

即使用户在检查位置设置的情况下按下“确定”按钮,也始终获得 RESOLUTION_REQUIRED

我的 LocationRequest 设置为 PRIORITY_HIGH_ACCURACY。但是在小米红米 Note 5 设备中,如果我在位置设置对话框中按下确定按钮,它总是通过 onActivityResult() 方法返回 0,并且我得到“com.google.android.gms.common.api.ResolvableApiException: 6: RESOLUTION_REQUIRED”。但我已经在其他一些设备上测试过它工作正常。我在片段内使用了启用/未启用 gps 检查。

/////Code that prompts up the dialog

SettingsClient client = LocationServices.getSettingsClient(getActivity ());
        Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build());

        task.addOnSuccessListener(getActivity (), new OnSuccessListener<LocationSettingsResponse>() {
            @Override
            public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
                // All location settings are satisfied. The client can initialize
                // location requests here.
                // ...
            }
        });

        task.addOnFailureListener(getActivity (), new OnFailureListener () {
            @Override
            public void onFailure(@NonNull Exception e) {
                  if (e instanceof ResolvableApiException) {
                    // Location settings are …
Run Code Online (Sandbox Code Playgroud)

android android-gps google-location-services

9
推荐指数
1
解决办法
1123
查看次数

位置更新使用Google Play服务和FusedLocationProviderClient

我想使用最新的融合位置提供商客户端在"后台服务"上获取位置更新.我不想使用所有正在使用的位置监听器和Google API客户端.我还需要使用谷歌播放服务提供的位置设置Api来检查位置设置是否禁用或启用"后台服务".请帮助.

android android-location google-play-services fusedlocationproviderapi google-location-services

7
推荐指数
1
解决办法
3988
查看次数

如何使用工作管理器处理来自FusedLocationProviderClient的位置更新?

首先,我是一个Android新手。现在已经寻找解决方案已有一段时间了,但是到目前为止,在正确的方向上找不到任何有用的提示。这通常是由问题本身的性质引起的,这是相当利基的。

以下工作代码基于https://codelabs.developers.google.com/codelabs/realtime-asset-tracking上的代码实验室。

不过,我想知道,由于现在在多个资源中都提到它,因此您将如何基于Android的工作管理器而不是带有持续通知的服务来执行类似的操作?

public class TrackerService extends Service {

    @Override
    public void onCreate() {
        super.onCreate();
        requestLocationUpdates();
    }

    private void requestLocationUpdates() {
        LocationRequest request = new LocationRequest();
        request.setInterval(5 * 60 * 1000);
        request.setFastestInterval(30 * 1000);
        request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        FusedLocationProviderClient client = LocationServices.getFusedLocationProviderClient(this);
        int permission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
        if (permission == PackageManager.PERMISSION_GRANTED) {
            client.requestLocationUpdates(request, new LocationCallback() {
                @Override
                public void onLocationResult(LocationResult locationResult) {
                    Location location = locationResult.getLastLocation();
                    if (location != null) {
                        Log.d(TAG, "location update " + location);
                    }
                }
            }, null); …
Run Code Online (Sandbox Code Playgroud)

android android-service android-fusedlocation google-location-services android-workmanager

6
推荐指数
1
解决办法
1195
查看次数

如何在 flutter sdk 1.2.1 上获取当前位置

如何使用颤振在 android 设备上获取当前位置。我已经尝试了LocationGeoLocator插件,GeoLocator 3.0.0 在调试时显示此错误:

Launching lib\main.dart on Android SDK built for x86 in debug mode...
Run Code Online (Sandbox Code Playgroud)

FAILURE:构建失败,出现异常。

  • 出了什么问题:任务“:app:preDebugBuild”的执行失败。

    Android 依赖项“android.arch.lifecycle:runtime”对于编译 (1.0.0) 和运行时 (1.1.0) 类路径具有不同的版本。您应该通过 DependencyResolution 手动设置相同的版本

位置 2.0.0也会在调试时引发错误。还有另一个名为geoLocation 的插件可用,但它与 dart 2.0 不兼容。在这种情况下,我如何获得位置(经度和纬度)[一次]?任何帮助将不胜感激。

android dart location-services flutter google-location-services

6
推荐指数
3
解决办法
3万
查看次数

尝试获取位置时避免 Google 的提示

我正在使用 Flutter 的location插件开发一个简单的应用程序,其中包含一些基于其示例代码的代码

var location = new Location();
try {
  _currentLocation = await location.getLocation();
} on PlatformException catch (e) {
  if (e.code == 'PERMISSION_DENIED') {
    _locationMsg = 'Permission denied';
  }
  _currentLocation = null;
}
Run Code Online (Sandbox Code Playgroud)

如插件页面所示,我添加ACCESS_FINE_LOCATION到 Android 清单中。

问题是,当我在手机上测试应用程序时(使用 Android 9,以防万一),即使位置启用并且我有 GPS 信号,执行上述代码会导致以下提示:

提示开启谷歌定位服务

提示内容为:“为了获得更好的体验,请开启使用 Google 定位服务的设备定位。” ,带有两个按钮:“NO THANKS”“OK”

这是非常不友好的:位置已经来自 GPS,没有必要进一步打扰用户。

问题来自哪里,如何避免该提示?我更喜欢报告“未知位置”而不是显示提示。

编辑:请注意,提示没有相关通知用户该位置将被使用,但它是一个谷歌侵犯隐私的功能,当您单击确定,使得谷歌定位精度,如下所述(深藏在设置菜单):

Google 位置准确度说明

上图写着:“提高定位精度”,带有一个切换按钮。Google 位置准确性:Google 的位置服务通过使用 Wi?Fi 和移动网络来帮助估计您的位置,从而提高了位置准确性。当您的设备处于开机状态时,匿名位置数据将发送给 Google。

单击第一个提示可启用此功能,如果用户不想将其位置数据发送给 Google,则必须手动禁用此功能。禁用它并再次尝试获取位置会导致相同的提示,因此它绝对与警告用户位置数据的使用无关。此外,如果使用该应用程序之前启用了 Google Location …

android location flutter google-location-services

6
推荐指数
1
解决办法
3135
查看次数

LocationSettingsStatusCodes.RESOLUTION_REQUIRED

我正在使用 FusedLocationAPI 它工作正常,但是当用户禁用位置时,我使用 SettingsApi 向用户显示对话框以启用位置。

在棉花糖及以上设备中,它工作正常,但在 kitkat 中,如果启用或禁用位置,它总是触发 LocationSettingsStatusCodes.RESOLUTION_REQUIRED。

  LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
            .addLocationRequest(mLocationRequest);

    PendingResult<LocationSettingsResult> result =
            LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());

    result.setResultCallback(new ResultCallback<LocationSettingsResult>() {
        @Override
        public void onResult(LocationSettingsResult locationSettingsResult) {

            final Status status = locationSettingsResult.getStatus();
            Log.e("status",status.getStatusCode()+"\n"+status.getStatus()+"\n"+status.getStatusMessage());
            final LocationSettingsStates LS_state = locationSettingsResult.getLocationSettingsStates();
            switch (status.getStatusCode()) {
                case LocationSettingsStatusCodes.SUCCESS:
                    // All location settings are satisfied. The client can initialize location
                    // requests here.
                    startLocationUpdates();

                    break;
                case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                    // Location settings are not satisfied. But could be fixed by showing the user
                    // a dialog. …
Run Code Online (Sandbox Code Playgroud)

android android-4.4-kitkat fusedlocationproviderapi android-fusedlocation google-location-services

5
推荐指数
0
解决办法
2519
查看次数