本来想学习一下Andriod Wear的开发,但是买不起Wear啊!直接跳过,开始学习周边雷达地图部分!这个功能非常有用,能知道你周围和你使用相同软件的人,牛郎织女一人安装一个,再也不用去鹊桥相会了,随时都能知道对方在哪里,可是怎么多出来那么多牛郎织女!

第一步【注册周边雷达】

要使用此功能,需要对你的想用周边雷达功能的App进行注册,相当于绑定,而且可以绑定多个!周边雷达注册

第二步【上传位置,检索周边】

上传有上传一次和自动时间间隔上传,检索可以查看周边使用此App的人,里面可以填入检索的页数,人数和范围!

第三步【清除用户数据】

最后如果不想再被查看,当然是可以清除你的位置信息的!

感觉很简单,其实各种坑等着你呢!看代码:

package cq.cake.chwl.ui;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import com.baidu.mapapi.model.LatLng;

import com.baidu.mapapi.radar.RadarNearbyResult;

import com.baidu.mapapi.radar.RadarNearbySearchOption;

import com.baidu.mapapi.radar.RadarSearchError;

import com.baidu.mapapi.radar.RadarSearchListener;

import com.baidu.mapapi.radar.RadarSearchManager;

import com.baidu.mapapi.radar.RadarUploadInfo;

import com.baidu.mapapi.radar.RadarUploadInfoCallback;

import cq.cake.base.BaseToolbarMapActivity;

import cq.cake.chwl.R;

import cq.cake.util.L;

import cq.cake.util.T;

/**

* 周边雷达功能

* 查看周围都在使用此App的人群

* 利用周边雷达功能,可实现周边(处于同一个周边雷达关系内)用户位置信息检索的能力。

* 检索过程支持距离、时间等约束条件;返回结果支持按照距离、时间远近的排序。

*/

public class RabarActivity extends BaseToolbarMapActivity implements RadarSearchListener, RadarUploadInfoCallback {

RadarSearchManager mManager;

String userID = "100";

LatLng pt = new LatLng(106.465712,29.562483);

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_rabar);

init();

}

private void init() {

//周边雷达功能模块进行初始化

mManager = RadarSearchManager.getInstance();

//周边雷达设置监听

mManager.addNearbyInfoListener(this);

//周边雷达设置用户身份标识,id为空默认是设备标识

mManager.setUserID(userID);

}

/**

* 【1】上传我的位置

* 实际应用中应该取定位到当前位置的经纬度

* 重庆市渝中区沙坪坝师范大学:106.465712,29.562483

*/

private boolean upMyAddr() {

//上传位置

// LatLng pt = new LatLng(106.466343, 29.563757);

RadarUploadInfo info = new RadarUploadInfo();

info.comments = "SmallCake";

info.pt = pt;

return mManager.uploadInfoRequest(info);

}

/**

* 【2】自动上传我的位置

*/

private void autoUpMyAddr() {

//设置自动上传的callback和时间间隔

mManager.startUploadAuto(this, 5000);

}

/**

* 【3】关闭自动上传我的位置

*/

private void closeUptoUpMyAddr() {

//设置自动上传的callback和时间间隔

mManager.stopUploadAuto();

}

/**

* 【4】周边位置检索

*/

private void nearBySearch(){

//构造请求参数,其中centerPt是自己的位置坐标

RadarNearbySearchOption option = new RadarNearbySearchOption().centerPt(pt).pageNum(0).pageCapacity(50).radius(2000);

//发起查询请求

mManager.nearbyInfoRequest(option);

}

/**

* 【5】清除用户信息

*/

private void clearUserInfo(){

mManager.clearUserInfo();

}

/**********************************************下面是各种事件的回调**********************************************************************/

/**

* 【1】单次上传位置的回调

* @return

*/

@Override

public void onGetUploadState(RadarSearchError radarSearchError) {

L.i("单次上传我的位置onGetUploadState");

// TODO Auto-generated method stub

if (radarSearchError == RadarSearchError.RADAR_NO_ERROR) {

//上传成功

L.i("上传位置成功");

T.showLong(RabarActivity.this, "上传位置成功");

} else {

//上传失败

L.i("上传位置失败");

T.showLong(RabarActivity.this, "单次上传位置失败");

}

}

/**

* 【2】自动上传位置的回调

* @return

*/

@Override

public RadarUploadInfo onUploadInfoCallback() {

// TODO Auto-generated method stub

//实现上传callback,自动上传

RadarUploadInfo info = new RadarUploadInfo();

info.comments = "SmallCake0";

info.pt = pt;

return info;

}

/**

* 【4】周边位置检索回调

* @param radarNearbyResult

* @param radarSearchError

*/

@Override

public void onGetNearbyInfoList(RadarNearbyResult radarNearbyResult, RadarSearchError radarSearchError) {

L.i("查询周边信息=="+radarSearchError+" 数据是否为空:"+(radarNearbyResult==null));

switch (radarSearchError){

case RADAR_NO_ERROR:

T.showLong(RabarActivity.this, "查询周边成功");

break;

case RADAR_NO_RESULT:

T.showLong(RabarActivity.this, "没有使用此App的人员");

break;

default:

T.showLong(RabarActivity.this, "失败了!");

break;

}

}

/**

* 【5】周边位置检索回调

* @param radarSearchError

*/

@Override

public void onGetClearInfoState(RadarSearchError radarSearchError) {

// TODO Auto-generated method stub

if (radarSearchError == RadarSearchError.RADAR_NO_ERROR) {

//清除成功

T.showLong(RabarActivity.this, "清除位置成功");

} else {

//清除失败

T.showLong(RabarActivity.this, "清除位置失败");

}

}

/**

* 最后在停止使用周边雷达功能时,需释放资源

* @return

*/

private void clearAll(){

//移除监听

mManager.removeNearbyInfoListener(this);

//清除用户信息

mManager.clearUserInfo();

//释放资源

mManager.destroy();

mManager = null;

}

@Override

protected void onDestroy() {

super.onDestroy();

clearAll();

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_rabar,menu);

return super.onCreateOptionsMenu(menu);

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int itemId = item.getItemId();

switch (itemId){

case R.id.menu1:

upMyAddr();

break;

case R.id.menu2:

autoUpMyAddr();

break;

case R.id.menu3:

closeUptoUpMyAddr();

break;

case R.id.menu4:

nearBySearch();

break;

case R.id.menu5:

clearUserInfo();

break;

}

return super.onOptionsItemSelected(item);

}

}使用遇到的坑:

1.最开始我没有mManager.setUserId();回调毫无反应!官网不是说可以为空,默认是设备标识吗!我就没有设置,好吧,我理解错了。

没有你也得设置个null,这样mManager.setUserId(null);

2.info.comments有长度获取其他限制,如果上次失败你就多试试吧。官网你给我说,你又坑我。

3.要想检索必须先上传自己的位置,我能说还有没有隐私了,偷偷写死自己位置!

最后,我还是没有检索出来范围的人,哪怕我自己也好啊!可以反馈的是没有错误,但是也没有结果!RADAR_NO_RESULT,想想你尝试很多次很多方法都是得到RADAR_NO_RESULT,我不得不开心的笑了!

android 地图雷达,深入学习百度地图Android SDK v4.0.0【第七关】周边雷达相关推荐

  1. Android百度室内图,深入学习百度地图Android SDK v4.0.0【第六关】室内地图

    百度地图居然推出了室内地图,那不是可以看看女神的家.你想多了,目前室内地图只支持大型购物商场,机场,火车站,医院等,覆盖了全国大概600个大型购物中心,继续增加中.目前用处不大,但也不错啊,去一些商场 ...

  2. 百度地图android自定义文字,androidsdk | 百度地图API SDK

    方式一:配置.sty样式ID // 地图View实例 private MapView mMapView; // 用于设置个性化地图的样式文件 private static final String C ...

  3. ios 点生成线路 百度地图_iOS SDK | 百度地图API SDK

    注意事项 1.静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即在Xcode的Pro ...

  4. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

    原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  5. Android中级篇之百度地图SDK v3.5.0-一步一步带你仿各大主流APP地图定位移动选址功能

    from: http://blog.csdn.net/y1scp/article/details/49095729 定位+移动选址 百学须先立志-学前须知: 我们经常在各大主流APP上要求被写上地址, ...

  6. 百度地图 Android SDK - 检索功能使用的简单演示样例

    百度地图 SDK 不仅为广大开发人员提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发人员提供了多种 LBS 检索的能力. 通过这些接口,开发人员能够轻松的訪问百度的 LBS 数据,丰富自己的移 ...

  7. android开发百度地图坐标偏差,利用百度地图Android sdk高仿微信发送位置功能及遇到的问题...

    接触了百度地图开发平台半个月了,这2天试着模仿了微信给好友发送位置功能,对百度地图的操作能力又上了一个台阶 我在实现这个功能的时候,遇到一些困难,可能也是别人将会遇到的困难,特在此列出 1.在微信发送 ...

  8. 利用百度地图Android定位SDK获取经纬度

    环境的搭建(参考上一次的文章) 百度地图Android定位SDK的使用 2.在Android studio里设计程序来获取经纬度 界面布局activity_main.xml文件的源代码: <?x ...

  9. 安卓开发——在应用中简单调用Android百度地图API SDK

    目录 需求展示 效果展示: 申请百度地图API密钥 配置ANDROID STUDIO 编写项目代码 运行项目 需求展示 利用百度地图API定位到当前所在位置,并显示所在的经纬度和地址信息. 效果展示: ...

最新文章

  1. L3-002 特殊堆栈
  2. 包含了主机名到ip地址的映射关系的文件是什么 ?
  3. CSS基础学习 19.CSS hack
  4. GitGitHub语法大全
  5. 领域驱动设计,让程序员心中有码(六)
  6. opencv-api getStructuringElement
  7. datagrip连接oracle
  8. 4.4.4 无锁的对象引用:AtomicReference和AtomicStampedReference
  9. 翻译网站去除输入内容的换行符/回车符【操作简单】适用谷歌/百度/有道/DeepL/腾讯/必应等
  10. mysql 环比 同比_MySQL统计同比环比SQL
  11. (附源码)springboot卫生院儿童预防接种管理系统 毕业设计 011404
  12. sdnu 1078
  13. 孩子学习arduino好还是单片机好
  14. json表格显示js方法_将JSON导入Google表格的3种最佳方法[最终指南]
  15. 墙面有几种装修方法_装修时墙面处理都有哪几种方式?
  16. 应用程序正常初始化(0xc000012d)失败的问题
  17. 线性同余方程和中国剩余定理学习笔记
  18. STM32 (基于HAL库) 硬件IIC读写任意AT24CXX芯片
  19. 【源码解读】BertLayer
  20. 【Linux】ARM篇一--计算机基础与RAM处理器概论

热门文章

  1. 【SSL】1072砝码称重
  2. 完成AK4191+AK4499EX的DSD1024音乐硬解
  3. 怎样实现EDIUS中音频滤镜快速使用
  4. mysql innodb 视图,简介mysql之视图
  5. 基于Scarpy爬取Shopee网站商品数据
  6. 模拟计算MS软件常见问题及解答(一)
  7. 惠普打印机只打印一半_惠普打印机打印出来一半有字一半没字为什么
  8. linux 虚拟机大量udp请求失败_UDP广播发送失败:linux 2.6.30上的网络无法访问
  9. IEEE-754单精度浮点类型有效数字理解(画图不易,望点赞支持)
  10. 斐波那契数列的来源——数兔子