2 azz525109940 azz525109940 于 2016.01.14 18:50 提问

android 通过IntentService来定时调用百度定位SDK,为什么只会执行一次

我使用的百度SDK版本是6.13,清单文件中已经配置了服务和key

第一次调用时候能正常获取坐标,再次调用的时候就不会执行BDLocationListener监听程序。 求大神指点。
获取坐标的代码:

public class BaiduLocationClient extends LocationClient {

@Override
public void init(Context context) {

baiduClient = new com.baidu.location.LocationClient(context);
baiduClient.registerLocationListener(new BDLocationListener() {
@Override
public void onReceiveLocation(BDLocation location) {
Log.i(TAG,"")
ExceptionHandler.saveLog2File("开始执行百度的回调方法");
if (location == null || callback == null)
return;

boolean result = false;
String resultType = StringUtils.EMPTY;
if (!result || location.getLatitude() == 4.9E-324
  || location.getLongitude() == 4.9E-324) {
 Log.e(TAG, "获取坐标时出现错误!");
}

Message msg = new Message();
if (result) {
 msg.obj = new LocationPoint(CoordinateEnum.GCJ02, location
   .getLongitude(), location.getLatitude(), location.getRadius(),resultType);
} else {
 msg.obj = new LocationPoint(CoordinateEnum.GCJ02, 0, 0,resultType);
}
callback.handleMessage(msg);
callback = null;
baiduClient.stop();

}

});
LocationClientOption option = new LocationClientOption();
option.setCoorType("gcj02");
option.setTimeOut(5000);
option.setScanSpan(5000);
option.setOpenGps(true);
baiduClient.setLocOption(option);

public void getLocation(Context context, Callback cb) {
callback = cb;
baiduClient.start();
}

/**

  • 停止 */ public void stop() { baiduClient.stop(); } 这样写有什么问题吗?

1个回答

devmiao
devmiao   Ds   Rxr 2016.01.19 04:37
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于百度地图定位 onReceiveLocation执行两次的问题
今天,碰到一个奇怪问题,我的一个界面刷新了两次,一直找都找不到原因,之后发现,原来我的界面刷新是依托在百度地图的回调方法 onReceiveLocation中的,我想是不是这个执行了两次能,我确定了option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的这行代码是配置了,明明只会执行一次,开始执行了两次,实在没办法
百度定位SDK只定位一次以及系统没有出现位置服务图标的解决
这是个巨大的坑,因为官方文档没说要在Mainfest里面声明一个服务,导致我的定位一直就只有一次,而且任务栏也没有出现定位的图标。后来发现原来要在Mainfest文件加入以下声明:<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"></service>
操蛋的百度地图SDK onReceiveLocation收不到回调
之前项目应为用百度地图各种操蛋,所以放弃使用百度地图SDK改用腾讯地图SDK。     虽然腾讯地图SDK比百度地图SDK各种好用,但是考虑到做地图闭经百度能力是强于腾讯的,而且百度出了新的5.0SDK,于是想试试。     新版SDK接口科学,文档简单可读性高,没几分钟就全部弄好进入调试模式。但是无论怎么都收不到onReceiveLocation回调。     最开始以为是使用Androi
Android利用百度定位SDK获取当前城市位置
1.下载百度库文件将liblocSDK4.so文件拷贝到libs/armeabi目录下(如果没有的话可以手动创建该目录)。将  locSDK4.0.jar文件拷贝到工程的libs目录下。 2.配置service android:name="com.baidu.location.f" android:enabled="true" android:process="
百度sdk定位监听 onReceiveLocation没有执行?
1.  MyLocationListener 中的回调方法onReceiveLocation没有执行 下面服务没有在清单文件中配置: 为什么要添加服务呢?因为定位比较耗时。 service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">service> 2.
IntentService 串联 按顺序执行(此次任务执行完才执行下一个任务)
IntentService与Service的最大区别就是前者依次执行,执行完当前任务才执行下一个任务,后者并发执行 在IntentService里面不写onCreate方法 MainActivity: package com.zzw.test1; import android.app.Activity; import android.content.Intent; import andro
百度地图SDK 踩坑之旅------百度定位OnReceiveLocation没回调,什么都没有。
百度地图定位SDK在各位开发者手里捣弄的机会应该蛮多的。但是我们的百度SDK用起来并没有想像中的顺手,下面这个坑我估计很多同胞遇到过。按照BAIDU提供的Demo定位是没有问题的,但是我移植过来为什么OnReceiveLocation没有回调呢?我已经注册监听了,权限也配置了,服务也添加了,怎么没有反应呢?先别急,往下看: JNILib jar包 AndroidManifest.xml配置 <?xm
Timer对象执行定时任务只执行一次的问题
最近在做物联网项目,用到了Socket长连接方面的技术,找了很多这方面
Android使用IntentService执行耗时任务
概述 IntentService也是Service的子类,它比普通Service增加了额外的功能: IntentService会创建单独的work线程来处理所有的Intent请求。IntentService会创建单独的work线程来处理onHandleIntent()方法实现的代码,因此开发者无需处理多线程的问题。 当所有请求处理完成时,IntentService会自动停止。无需重写
使用百度sdk定位相关参数设定
使用百度sdk定位相关参数设定