发送文件相关api(图片)

发送文件相关api(图片)

方法

public void sendMediaMessage(Message message, String pushContent, final String pushData, final IRongCallback.ISendMediaMessageCallback callback)
public void sendMediaMessage(Message message, String pushContent, String pushData, final ISendMediaMessageCallbackWithUploader callback)

2个方法都是发送文件消息的方法,但第二个发送文件消息的方法,可以将多媒体文件上传到自己的服务器。

public void cancelSendMediaMessage(io.rong.imlib.model.Message message,           io.rong.imlib.RongIMClient.OperationCallback callback)

取消发送多媒体文件。

public void pauseDownloadMediaMessage(io.rong.imlib.model.Message message,                                io.rong.imlib.RongIMClient.OperationCallback callback)

暂停下载多媒体文件

public void cancelDownloadMediaMessage(io.rong.imlib.model.Message message,
                                       io.rong.imlib.RongIMClient.OperationCallback callback)

取消下载多媒体文件。

涉及的几个主要对象

Message:发送消息的实体
MediaMessageContent:多媒体消息
ISendMediaMessageCallback:发送消息的回调
RongIMClient:IM 客户端核心类

具体实现

1.发送文件(如果用的是IMLib接口,要 用_RongIMClient.getInstance().sendMediaMessage_)

Uri filePath = Uri.parse("file://" + 文件路径);
FileMessage fileMessage = FileMessage.obtain(filePath);
final Message message = Message.obtain(targetId, Conversation.ConversationType.PRIVATE, fileMessage);
RongIM.getInstance().sendMediaMessage(message, "文件类型", "推送显示的内容", (IRongCallback.ISendMediaMessageCallback) null);

2.发送图文消息

RichContentMessage richContentMessage = RichContentMessage.obtain("标题", "内容", "http://rongcloud.cn/images/logo.png");
Message myMessage = Message.obtain(targetId, Conversation.ConversationType.PRIVATE, richContentMessage);
RongIM.getInstance().sendMessage(myMessage, null, null, new (IRongCallback.ISendMessageCallback)null);

3.取消发送

RongIM.getInstance().cancelSendMediaMessage(mMessage, new RongIMClient.OperationCallback() {
                    @Override
                    public void onSuccess() {
                    }
                    @Override
                    public void                     onError(RongIMClient.ErrorCode errorCode) {

                    }
                });

4.暂停发送

RongIM.getInstance().cancelDownloadMediaMessage(mMessage, new RongIMClient.OperationCallback() {
                    @Override
                    public void onSuccess() {   
                    }
                    @Override
                    public void onError(RongIMClient.ErrorCode errorCode) {
                    }
                });

5压缩,编码。

发送消息,会获取message的MessageTag,获取message所对应的MessageHandler,来进行编解码操作。

encodeMessage

1.获取messgeid ,给图片命名。

2.获取rc_configuration.xml 预设的压缩比例最大尺寸。

3.如果缩略图路径不为空,则压缩,转base64存入ImageMessage中。

4.如果本地路径不为空,且文件存在,则存入ImageMessage。文件不存在在新建文件,压缩,存入ImageMessage中。