1package com.netease.nimlib.sdk.v2.message;
3import android.text.TextUtils;
4import com.netease.nimlib.SDKCacheUI;
5import com.netease.nimlib.report.utils.NtpTimeUtil;
6import com.netease.nimlib.sdk.msg.constant.MsgDirectionEnum;
7import com.netease.nimlib.sdk.msg.constant.MsgStatusEnum;
8import com.netease.nimlib.sdk.v2.message.enums.V2NIMMessageType;
9import com.netease.nimlib.sdk.v2.message.model.V2NIMMessageCallDuration;
10import com.netease.nimlib.sdk.v2.storage.V2NIMStorageSceneConfig;
11import com.netease.nimlib.util.StringUtil;
12import com.netease.nimlib.v2.message.impl.V2NIMMessageImpl;
13import com.netease.nimlib.v2.message.impl.attachment.V2NIMMessageAttachmentImpl;
14import com.netease.nimlib.v2.message.impl.attachment.V2NIMMessageAudioAttachmentImpl.V2NIMMessageAudioAttachmentBuilder;
15import com.netease.nimlib.v2.message.impl.attachment.V2NIMMessageCallAttachmentImpl;
16import com.netease.nimlib.v2.message.impl.attachment.V2NIMMessageFileAttachmentImpl.V2NIMMessageFileAttachmentBuilder;
17import com.netease.nimlib.v2.message.impl.attachment.V2NIMMessageImageAttachmentImpl.V2NIMMessageImageAttachmentBuilder;
18import com.netease.nimlib.v2.message.impl.attachment.V2NIMMessageLocationAttachmentImpl;
19import com.netease.nimlib.v2.message.impl.attachment.V2NIMMessageVideoAttachmentImpl.V2NIMMessageVideoAttachmentBuilder;
24 private static final String TAG =
"V2NIMMessageCreator";
26 private static V2NIMMessageImpl createV2Message(
V2NIMMessageType messageType) {
27 V2NIMMessageImpl message =
new V2NIMMessageImpl();
28 message.setMessageClientId(StringUtil.get32UUID());
29 message.setMessageType(messageType);
30 message.setCreateTime(NtpTimeUtil.getServerNow());
42 message.setText(text);
59 V2NIMMessageImageAttachmentBuilder builder = V2NIMMessageImageAttachmentBuilder.builder();
60 if (!TextUtils.isEmpty(imagePath)) {
61 builder.withPath(imagePath);
63 if (!TextUtils.isEmpty(name)) {
64 builder.withName(name);
66 if (!TextUtils.isEmpty(sceneName)) {
67 builder.withSceneName(sceneName);
72 builder.withWidth(width);
75 builder.withHeight(height);
77 message.setAttachment(builder.build());
96 V2NIMMessageAudioAttachmentBuilder builder = V2NIMMessageAudioAttachmentBuilder.builder();
97 if (!TextUtils.isEmpty(audioPath)) {
98 builder.withPath(audioPath);
100 if (!TextUtils.isEmpty(name)) {
101 builder.withName(name);
103 if (!TextUtils.isEmpty(sceneName)) {
104 builder.withSceneName(sceneName);
108 if (duration !=
null) {
109 builder.withDuration(duration);
111 message.setAttachment(builder.build());
132 V2NIMMessageVideoAttachmentBuilder builder = V2NIMMessageVideoAttachmentBuilder.builder();
133 if (!TextUtils.isEmpty(videoPath)) {
134 builder.withPath(videoPath);
136 if (!TextUtils.isEmpty(name)) {
137 builder.withName(name);
139 if (!TextUtils.isEmpty(sceneName)) {
140 builder.withSceneName(sceneName);
144 if (duration !=
null) {
145 builder.withDuration(duration);
148 builder.withWidth(width);
150 if (height !=
null) {
151 builder.withHeight(height);
153 message.setAttachment(builder.build());
171 V2NIMMessageFileAttachmentBuilder builder = V2NIMMessageFileAttachmentBuilder.builder();
172 if (!TextUtils.isEmpty(filePath)) {
173 builder.withPath(filePath);
175 if (!TextUtils.isEmpty(name)) {
176 builder.withName(name);
178 if (!TextUtils.isEmpty(sceneName)) {
179 builder.withSceneName(sceneName);
183 message.setAttachment(builder.build());
199 V2NIMMessageLocationAttachmentImpl locationAttachment =
new V2NIMMessageLocationAttachmentImpl(latitude, longitude, address);
200 message.setAttachment(locationAttachment);
214 message.setText(text);
215 message.setAttachment(
new V2NIMMessageAttachmentImpl(rawAttachment));
228 if (!(message instanceof V2NIMMessageImpl)) {
244 V2NIMMessageImpl deepClone = ((V2NIMMessageImpl) message).deepClone();
245 if (deepClone ==
null) {
249 V2NIMMessageImpl forward = createV2Message(deepClone.getMessageType());
250 forward.setSenderId(SDKCacheUI.getAccount());
253 forward.setText(deepClone.getText());
254 forward.setServerExtension(deepClone.getServerExtension());
255 forward.setLocalExtension(deepClone.getLocalExtension());
256 forward.setSubType(deepClone.getSubType());
257 forward.setAttachment(deepClone.getAttachment());
271 message.setText(text);
295 message.setText(text);
296 V2NIMMessageCallAttachmentImpl callAttachment =
new V2NIMMessageCallAttachmentImpl(type, channelId, status, durations);
297 message.setAttachment(callAttachment);
static V2NIMMessage createLocationMessage(double latitude, double longitude, String address)
构造地理位置消息
static V2NIMMessage createCallMessage(int type, String channelId, int status, List< V2NIMMessageCallDuration > durations, String text)
构造话单消息
static V2NIMMessage createTextMessage(String text)
构造文本消息
static V2NIMMessage createImageMessage(String imagePath, String name, String sceneName, Integer width, Integer height)
构造图片消息
static V2NIMMessage createFileMessage(String filePath, String name, String sceneName)
构造文件消息
static V2NIMMessage createCustomMessage(String text, String rawAttachment)
构造自定义消息消息
static V2NIMMessage createAudioMessage(String audioPath, String name, String sceneName, Integer duration)
构造语音消息
static V2NIMMessage createTipsMessage(String text)
构造提示消息
static V2NIMMessage createVideoMessage(String videoPath, String name, String sceneName, Integer duration, Integer width, Integer height)
构造视频消息
static V2NIMMessage createForwardMessage(V2NIMMessage message)
构造转发消息,消息内容与原消息一样 转发消息类型不能为:V2NIM_MESSAGE_TYPE_NOTIFICATION,V2NIM_MESSAGE_TYPE_ROBOT,V2NIM_MESSAGE_TY...
static final V2NIMStorageScene DEFAULT_IM
默认文件类型等场景 默认不过期
消息本身发送/接收状态,附件状态见AttachStatusEnum
V2NIM_MESSAGE_TYPE_CUSTOM
V2NIM_MESSAGE_TYPE_AVCHAT
V2NIM_MESSAGE_TYPE_NOTIFICATION
V2NIM_MESSAGE_TYPE_LOCATION
V2NIMMessageType getMessageType()
获取消息类型
String getSceneName()
返回场景名