当前位置: 首页 > 知识库问答 >
问题:

使用Google Play Services Location API获取并监听位置服务更新

顾梓
2023-03-14

我正在尝试使用Google Play Services的位置API(com.Google.android.gms.Location)来监听位置服务的更新(即用户在系统设置中打开/关闭位置)。

我知道我可以投票获取此信息:

import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.location.LocationSettingsRequest;
import com.google.android.gms.location.LocationSettingsResponse;
import com.google.android.gms.location.SettingsClient;


LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
        .addLocationRequest(mLocationRequest);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();

// ...

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

我也知道我可以用android SDK来听:

import android.location.LocationManager;
import android.provider.Settings

private BroadcastReceiver locationServicesBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent == null) {
            return;
        }
        if (LocationManager.PROVIDERS_CHANGED_ACTION.equals(intent.getAction())) {
            int locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);
            boolean isEnabled = locationMode != Settings.Secure.LOCATION_MODE_OFF;
        }
    }
};

但是我可以使用Play Services API并收听吗?

共有1个答案

姜德泽
2023-03-14

Google Play服务更新,提供更好的管理此类请求的能力;它们更便宜。它们处理内存、电池使用和连接的能力比旧的Android系统要好得多。位置库。这就是谷歌反对它的地方

 类似资料:
  • 2.4 多服务&多监听 2.4.1 在Go代码中声明 假定用户需要创建的Web服务 服务名称 版本号 监听地址 网络类型 读取请求数据超时 写入响应数据超时 myapp1 1.0 0.0.0.0:8080、0.0.0.0:4430 http、https(TLS) 0 0 myapp2 2.0 0.0.0.0:8081、0.0.0.0:4431 http、https(TLS) 0 0 无版本号的服务

  • 假定用户需要创建的Web服务 服务名称 版本号 监听地址 网络类型 读取请求数据超时 写入响应数据超时 myapp1 1.0 0.0.0.0:8080 http 0 0 myapp2 2.0 0.0.0.0:8081 http 0 0 无版本号的服务 func main() { ... app1 := faygo.New("myapp1") app2 := faygo.New("mya

  • 假定用户需要创建的Web服务 服务名称 版本号 监听地址 网络类型 读取请求数据超时 写入响应数据超时 myapp 1.0 0.0.0.0:8080、0.0.0.0:4430、0.0.0.0:4431 http、https(TLS)、https(Let’s Encrypt TLS) 0 0 无版本号的服务 func main() { ... app := faygo.New("myapp"

  • 假定用户需要创建的Web服务 服务名称 版本号 监听地址 网络类型 读取请求数据超时 写入响应数据超时 myapp 1.0 0.0.0.0:8080 http 0 0 无版本号的服务 func main() { ... app := faygo.New("myapp") ... 注:相应的配置文件为config/myapp.ini 含版本号的服务 func main() { ...

  • 我需要每1分钟和每5米位移更新一次熔合位置(我知道这是一个错误的做法,但为了测试和在日志中显示),并且我在按下按钮后立即启动服务,我在logcat中获得位置,但只有一次。根据服务级别,onLocationChanged应该每1分钟调用一次,但它不会再次调用,即使我的GPS几乎每分钟打开一次,然后在之后关闭,但Logcat中仍然没有位置更新。我需要服务类来保持更新位置,而不影响UI或主线程 这是只显

  • Listener 原型 <?php namespace Group\Listeners; abstract class Listener { abstract function setMethod(); public function getMethod() { return $this->setMethod(); } } 实现一个监听类 <?php