如何写精华回答,获更多曝光?
发布
1、已经申请了权限
2、开启持续定位
3、已经创建了serviceAbility
现在问题时候退出后台或者息屏,需要等3~5分钟才能有定位回调,然后回调个两三次,就没了,有哪位大神指导是什么问题,指点一下
{
"name": "ohos.permission.ACCESS_FINE_LOCATION"},{
"name": "com.huawei.agconnect.core.DataAbilityShellProvider.PROVIDER"},{
"name": "ohos.permission.APPROXIMATELY_LOCATION"}
if (verifySelfPermission("ohos.permission.LOCATION") == IBundleManager.PERMISSION_GRANTED) {
LocationUtil. getInstance().startLocation(this);} else {
// 请求位置权限 requestPermissionsFromUser(new String[]{"ohos.permission.LOCATION"}, locationRequestCode);}
if (verifySelfPermission("ohos.permission.LOCATION_IN_BACKGROUND") == IBundleManager.PERMISSION_GRANTED) {
} else {
// 请求位置权限 requestPermissionsFromUser(new String[]{"ohos.permission.LOCATION_IN_BACKGROUND"}, location2RequestCode);}
if (verifySelfPermission("ohos.permission.APPROXIMATELY_LOCATION") == IBundleManager.PERMISSION_GRANTED) {
} else {
// 请求位置权限 requestPermissionsFromUser(new String[]{"ohos.permission.APPROXIMATELY_LOCATION"}, location2RequestCode);}
//todo 实例化locator对象 locator = new Locator(currentContext != null ? currentContext :context); locator.requestEnableLocation(); //todo 构造requestParam参数 RequestParam requestParam = new RequestParam(RequestParam.PRIORITY_FAST_FIRST_FIX, 0, 0);
LocationUtil.MyLocatorCallback locatorCallback = new LocationUtil.MyLocatorCallback(); //todo 实例化geoConvert geoConvert = new GeoConvert();
//为开启定位服务方法 locator.startLocating(requestParam, locatorCallback); try {
ESSensorManager sensorManager = ESSensorManager. getSensorManager(context); int subscriptionId = sensorManager.subscribeToSensorData(SensorUtils.SENSOR_TYPE_PRESSURE, new SensorDataListener() {
@Override public void onDataSensed(SensorData sensorData) {
if(sensorData instanceof PressureData){
PressureData pressureData = (PressureData) sensorData; float value = pressureData.getValue(); currentPressureData = value;// HiLog.error(LABEL, "获取到的空气压力为:"+value+"hPa"); }
}
@Override public void onCrossingLowBatteryThreshold(boolean b) {
}
});
} catch (ESException e) {
e.printStackTrace(); }
/** * 定位回调 */public class MyLocatorCallback implements LocatorCallback {
/** * 定位成功的回调,用于开发者获取具体地理的经纬度详细信息 * * @param location 定位成功返回的对象 */ @Override public void onLocationReport(Location location) {
HiLog. error(LABEL, "定位成功后回调");
}
/** * 定位的时候,定位服务状态发生改变的时候,触发这个函数 * * @param type 服务状态码,有如下几个状态 * Locator.SESSION_START 表示定位请求已被系统接受。 * Locator.SESSION_STOP 指示位置请求已完成。 */ @Override public void onStatusChanged(int type) {
switch (type) {
case 1:
// 定位开始 HiLog. error(LABEL, "定位开始"); break; case 2:
// 定位服务可用 HiLog. error(LABEL, "定位服务可用"); break; case 3:
// 定位服务挂起 HiLog. error(LABEL, "定位服务挂起"); break; case 4:
// 定位停止 HiLog. error(LABEL, "定位停止"); break; case 5:
// 定位服务不可用 HiLog. error(LABEL, "定位服务不可用"); break; default:
HiLog. error(LABEL, "未知状态: " + type); break; }
}
/** * 定位失败触发此函数 * * @param type 定位失败错误码,具体状态如下 * 1. Locator.ERROR_PERMISSION_NOT_GRANTED: 应用程序调用定位器接口时,尚未授予定位权限 * 2.Locator.ERROR_SWITCH_UNOPEN :应用程序调用定位器接口时,位置服务已禁用(GPS 功能未打开) */ @Override public void onErrorReport(int type) {
HiLog. error(LABEL, "定位失败"); }
}