相关疑难解决方法(0)

Android播放服务6.5:缺少LocationClient

更新到Google Play Services 6.5.87后,由于缺少LocationCLient类,我的应用程序无法编译.

文档链接 是在瞬间损坏(404未找到)

我该如何解决?我想收到位置更新,使用地理围栏等.

android location google-play-services android-geofence fusedlocationproviderapi

45
推荐指数
1
解决办法
1万
查看次数

以编程方式启用位置模式高精度或省电,无需用户访问设置

为什么我这样问:(也是在应用程序中尝试它的原因)

当我们在Lollipop中使用Google地图会发生这种情况.即使位置已禁用,也会在用户从地图应用输入后以高精度模式打开,而无需访问"设置".

可以实现类似的功能以启用蓝牙,其中操作在我的应用程序中启动; 用户需要做出选择,但用户不会重定向到"设置",使用:

startActivity(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE));

哪个可以在BluetoothAdapter上找到,现在我们知道没有LocationAdapter,所以我环顾了gms-> LocationServices,基本上几乎所有的位置API引用,android.location.LocationManager,但似乎没有任何像ACTION_REQUEST_ENABLE现在可用.

希望有相同的其他方法,更多人尝试过.

请注意:
context.startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));不起作用.

android android-location google-play-services android-settings android-5.0-lollipop

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

适用于Android的Google Play服务.如果禁用wifi,位置客户端不会更新位置

我们的应用程序请求使用LocationClient和IntentService更新位置.如果用户在手机设置中禁用wifi,则位置根本不会更新.

我们尝试使用PRIORITY_HIGH_ACCURACY测试应用,并在禁用wifi时更新位置信息.

如果用户在没有wifi网络可用的地方移动,则会出现同样的问题.

如果手机无法通过wifi更新位置,我认为正确的行为是使用其他手机传感器(如GPS)进行更新.

重现步骤:

  1. 使用待定意图启动更新位置.带参数

    LocationRequest request = LocationRequest.create()
            .setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
            .setInterval(5 * 60 * 1000)
            .setFastestInterval(60*1000)
            .setSmallestDisplacement(70);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在手机设置中禁用wifi或在没有无线网络的国家/地区使用手机.

在Android 4.4,4.3,4.1,4.0,2.3.3上测试过.(Nexus7,Nexus4,三星GS2,HTC Wildfire等)

public class TrackerService extends IntentService {
    private void startUpdateLocation() {
        PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
            0, new Intent(ACTION_LOCATION_UPDATED), 0);
        LocationRequest request = LocationRequest.create()
            .setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
            .setInterval(5 * 60 * 1000)
            .setFastestInterval(60*1000)
            .setSmallestDisplacement(70);

        getLocationClient().requestLocationUpdates(request, pendingIntent);
        Log.d(Utils.getMethodName(), "Location update started");
    }

    private LocationClient getLocationClient() {
        if (mLocationClient != null && mLocationClient.isConnected()) return mLocationClient;
        mLocationClient = new LocationClient(this,
            new GooglePlayServicesClient.ConnectionCallbacks() {
                @Override
                public …
Run Code Online (Sandbox Code Playgroud)

android location google-play-services

19
推荐指数
2
解决办法
1万
查看次数

融合位置API在地图上绘制时会给出不正确的纬度和经度,即使精度值较低,它也会稍微偏离道路

Google提供了融合的位置提供程序API,以获取位置坐标。根据文档,API在内部轮询来自不同提供商(GPS,Wifi,蜂窝网络)的位置数据,并提供最佳位置。但是,在高精度模式下,我收集了以下信息。在此测试中,GPS始终处于打开状态。

Latitude: 12.8560136
Longitude: 80.1997696
User Activity: IN VEHICLE
Speed: 21.810165 mph
Altitude: -83.0 
Accuracy: 12.0 
Run Code Online (Sandbox Code Playgroud)

当我在地图上看到该点时,这些点不在路上。他们离路有点远。道路上还会绘制其他具有相同精度的点。当我完全缩放并看到时,其中一些点与行驶的道路略微偏离。

我想要准确的信息。它的点必须在道路上。

我已经使用了Fused Location API来获取位置信息。

mGoogleApiClient = new GoogleApiClient.Builder(mContext)
            .addApi(LocationServices.API).addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this).build();
Run Code Online (Sandbox Code Playgroud)

分享您的建议。如果我使用位置管理器,它将解决我的问题。而且我只需要消耗更少的电池。融合的API保证仅消耗更少的功率并提高效率。

此外,Fused Location API还有以下问题,

  1. 无法获得卫星计数。
  2. 始终返回FUSED提供程序。没有确切给出哪个提供者(GPS或网络)返回位置信息。
  3. 当两个提供者都不可用时,您永远不会收到通知。当没有提供程序可用时,它将不返回任何值。要检查提供商的可用性,我们需要分别向位置管理器注册。消耗更多的功率。

请帮我。提前致谢。

gps android location battery-saver fusedlocationproviderapi

5
推荐指数
1
解决办法
3973
查看次数