Android集成环信发送位置消息更换为高德sdk
2019-06-29 本文已影响0人
Lna_35da
看完环信官方的demo操作起来还是比较简单的下面贴上步骤
1.点击位置的点击事件更换 ,demo中的点击事件是在EaseChatFragment下的onExtendMenuItemClick里面官方提供了EaseBaiduMapActivity 这个定位页面。
2.修改为高德其实非常简单只需要在ChatFragment操作就可以了
2.1修改点击事件在ChatFragment的onExtendMenuItemClick方法中添加
//打开高德的定位页面 这个页面自己写哦 就是一个地图然后获取位置信息
case 3: //map 记得return true;
startActivityForResult(new Intent(getActivity(), LocationActivity.class),
REQUEST_CODE_MAP);
break;
2.2 在自己实现高德地图的页面返回定位信息 参数名称不要修改 不然其它地方也要修改
Intent intent = this.getIntent();
intent.putExtra("latitude", lat);
intent.putExtra("longitude", lgt);
intent.putExtra("address", str);
this.setResult(Activity.RESULT_OK, intent);
finish();
2.3接下来在ChatFragment中的onActivityResult中接收定位信息并发送消息
if (requestCode == REQUEST_CODE_MAP) { // location
double latitude = data.getDoubleExtra("latitude", 0);
double longitude = data.getDoubleExtra("longitude", 0);
String locationAddress = data.getStringExtra("address");
if (locationAddress != null && !locationAddress.equals("")) {
sendLocationMessage(latitude, longitude, locationAddress);
}
走到这里从高德获取的位置消息已经成功发送给好友了 接下来是获取查看好友位置消息
2.4 查看位置消息
还是在ChatFragment里 通过getCustomChatRow方法
if (message.getType()==EMMessage.Type.LOCATION){
return new LoccationAdapter();
}
LoccationAdapter 继承位置消息展示 重写了点击事件
public class LoccationAdapter extends EaseChatLocationPresenter {
@Override
public void onBubbleClick(EMMessage message) {
EMLocationMessageBody locBody = (EMLocationMessageBody) message.getBody();
Intent intent = new Intent(getContext(), LocationActivity.class);
intent.putExtra("latitude", locBody.getLatitude());
intent.putExtra("longitude", locBody.getLongitude());
intent.putExtra("address", locBody.getAddress());
getContext().startActivity(intent);
}
}
好了大功告成,至于高德sdk什么的相信大家都能自己解决的·