地理位置图片清晰度问题

地理位置在发送时,会先获取对应经纬度的缩略图,然后携带在消息体发送给对方。由于消息体大小的限制,会对缩略图做一定的压缩处理,sdk 中定义的标准是 408 * 240。

为了提高体验,建议缩略图大小设置为408*240,这是最佳体验,具体到代码中的修改是,在您构造 LocationMessage 时传入的 uri 地址:

(以高德地图为例)

private Uri getMapUrl(double x, double y) {
    String url = "http://restapi.amap.com/v3/staticmap?location=" + y + "," + x +
                 "&zoom=16&scale=2&size=408*240&markers=mid,,A:" + y + ","
                 + x + "&key=" + "ee95e52bf08006f63fd29bcfbcf21df0";
    NLog.e("getMapUrl", url);
    return Uri.parse(url);
}

注意:size 为 408*240, zoom 您可以自由设置。

另外,在2.6.6版本中,增加了 sendLocationMessage 接口,您可以构造 LocationMessage 消息直接进行发送。

/**
 * <p>发送地理位置消息。</p>
 * <p>发送前构造 {@link Message} 消息实体,消息实体中的 content 必须为 {@link LocationMessage}, 否则返回失败。</p>
 * <p>其中的缩略图地址 scheme 只支持 file:// 和 http:// 其他暂不支持。</p>
 *
 * @param message             消息实体。
 * @param pushContent         当下发 push 消息时,在通知栏里会显示这个字段。
 *                            如果发送的是自定义消息,该字段必须填写,否则无法收到 push 消息。
 *                            如果发送 sdk 中默认的消息类型,例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg,则不需要填写,默认已经指定。
 * @param pushData            push 附加信息。如果设置该字段,用户在收到 push 消息时,能通过 {@link io.rong.push.notification.PushNotificationMessage#getPushData()} 方法获取。
 * @param sendMessageCallback 发送消息的回调,参考 {@link io.rong.imlib.IRongCallback.ISendMessageCallback}。
 */
public void sendLocationMessage(final Message message, final String pushContent, final String pushData, final IRongCallback.ISendMessageCallback sendMessageCallback);