相关疑难解决方法(0)

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

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

当我们在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:检测GPS开启/关闭时(或者当没有应用程序正在使用它时)

我在Android 2.3.7上,我正在尝试编写一个BroadcastReceiver,当用户打开/关闭GPS时(例如:通过点击选项中的"使用GPS卫星")将调用它.

到目前为止我所做的是:

1)创建了以下broadcastReceiver:

public class GPSStatusBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context arg0, Intent arg1) {
        Toast.makeText(arg0, "Broadcast received!", Toast.LENGTH_SHORT).show();

    }
}
Run Code Online (Sandbox Code Playgroud)

2)将其添加到标签内的android清单中:

<receiver android:name=".GPSStatusBroadcastReceiver"> 
    <intent-filter> 
        <action android:name="android.location.PROVIDERS_CHANGED" /> 
    </intent-filter> 
</receiver>
Run Code Online (Sandbox Code Playgroud)

现在问题在于它似乎不可靠.当我打开GPS/ff时onReceive()方法有时只运行(我会说1次超时3),其他时候它不会被调用.

我想知道是否有可靠的方法来检测GPS何时关闭/打开.

如果没有,那么至少在没有应用程序使用GPS anymoer时通知会很高兴(例如:当gps图标从状态栏消失时,表示没有人正在主动定位).

编辑:澄清:我的应用程序运行时我不想这样做.我只是在我的应用程序启动时打开/关闭gps,做它的事情然后终止,我不想订阅LocationsUpdates ...

gps android broadcastreceiver

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

RESOLUTION_REQUIRED 即使用户的位置处于开启状态。是否可以?

SettingsClient在一个应用上使用谷歌。它工作正常,但有些用户无法使用 GPS,即使他们打开了定位并且他们已经授予了定位权限。据我了解,如果在其上Settings Client返回RESOLUTION_REQUIREDFailureListener,那是因为用户已禁用位置。

真的吗?或者是否有任何其他原因返回RESOLUTION_REQUIRED

RESOLUTION_REQUIRED返回时,状态栏上没有显示 GPS 图标,但它应该在那里!

这是我的代码:

    SettingsClient mSettingsClient =
            LocationServices.getSettingsClient(context);

    LocationRequest mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(UPDATE_INTERVAL_MS);
    mLocationRequest.setFastestInterval(FASTEST_INTERVAL_MS);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

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

    mSettingsClient.checkLocationSettings(mLocationSettingsRequest)
            .addOnSuccessListener(new OnSuccessListener<LocationSettingsResponse>() {
                @Override
                public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
                    connected = true;
                    // Fused Location code...
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    connected = false;
                    gpsFailureMessage = e.getMessage();
                }
            });
Run Code Online (Sandbox Code Playgroud)

android location

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