Skip to content

Commit

Permalink
SDK: Update version to 4.8.1:增加 api2.0 消息解析示例代码
Browse files Browse the repository at this point in the history
  • Loading branch information
vinsonswang committed May 7, 2020
1 parent cdedf1d commit e1287cd
Showing 1 changed file with 211 additions and 0 deletions.
211 changes: 211 additions & 0 deletions Android/tuikit/sampleCode/message.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@

@Override
public void onRecvNewMessage(V2TIMMessage msg) {
int elemType = msg.getElemType();
if (elemType == V2TIMMessage.V2TIM_ELEM_TYPE_TEXT) {
// 文本消息
V2TIMTextElem v2TIMTextElem = msg.getTextElem();
String text = v2TIMTextElem.getText();
} else if (elemType == V2TIMMessage.V2TIM_ELEM_TYPE_CUSTOM) {
// 自定义消息
V2TIMCustomElem v2TIMCustomElem = msg.getCustomElem();
byte[] customData = v2TIMCustomElem.getData();
} else if (elemType == V2TIMMessage.V2TIM_ELEM_TYPE_IMAGE) {
// 图片消息
V2TIMImageElem v2TIMImageElem = msg.getImageElem();
// 一个图片消息会包含三种格式大小的图片,分别为原图、大图、微缩图(SDK 会在发送图片消息的时候自动生成微缩图、大图,客户不需要关心)
// 大图:是将原图等比压缩,压缩后宽、高中较小的一个等于720像素。
// 缩略图:是将原图等比压缩,压缩后宽、高中较小的一个等于198像素。
List<V2TIMImageElem.V2TIMImage> imageList = v2TIMImageElem.getImageList();
for (V2TIMImageElem.V2TIMImage v2TIMImage : imageList) {
// 图片 ID,内部标识,可用于外部缓存 key
String uuid = v2TIMImage.getUUID();
// 图片类型
int imageType = v2TIMImage.getType();
// 图片大小(字节)
int size = v2TIMImage.getSize();
// 图片宽度
int width = v2TIMImage.getWidth();
// 图片高度
int height = v2TIMImage.getHeight();
// 设置图片下载路径 imagePath,这里可以用 uuid 作为标识,避免重复下载
String imagePath = "/sdcard/im/image/" + "myUserID" + uuid;
File imageFile = new File(imagePath);
// 判断 imagePath 下有没有已经下载过的图片文件
if (!imageFile.exists()) {
// 下载图片
v2TIMImage.downloadImage(imagePath, new V2TIMDownloadCallback() {
@Override
public void onProgress(V2TIMElem.V2ProgressInfo progressInfo) {
// 下载进度回调:已下载大小 v2ProgressInfo.getCurrentSize();总文件大小 v2ProgressInfo.getTotalSize()
}
@Override
public void onError(int code, String desc) {
// 下载失败
}
@Override
public void onSuccess() {
// 下载完成
}
});
} else {
// 图片已存在
}
}
} else if (elemType == V2TIMMessage.V2TIM_ELEM_TYPE_SOUND) {
// 语音消息
V2TIMSoundElem v2TIMSoundElem = msg.getSoundElem();
// 语音 ID,内部标识,可用于外部缓存 key
String uuid = v2TIMSoundElem.getUUID();
// 语音文件大小
int dataSize = v2TIMSoundElem.getDataSize();
// 语音时长
int duration = v2TIMSoundElem.getDuration();
// 设置语音文件路径 soundPath,这里可以用 uuid 作为标识,避免重复下载
String soundPath = "/sdcard/im/sound/" + "myUserID" + uuid;
File imageFile = new File(soundPath);
// 判断 soundPath 下有没有已经下载过的语音文件
if (!imageFile.exists()) {
v2TIMSoundElem.downloadSound(soundPath, new V2TIMDownloadCallback() {
@Override
public void onProgress(V2TIMElem.V2ProgressInfo progressInfo) {
// 下载进度回调:已下载大小 v2ProgressInfo.getCurrentSize();总文件大小 v2ProgressInfo.getTotalSize()
}
@Override
public void onError(int code, String desc) {
// 下载失败
}
@Override
public void onSuccess() {
// 下载完成
}
});
} else {
// 文件已存在
}
} else if (elemType == V2TIMMessage.V2TIM_ELEM_TYPE_VIDEO) {
// 视频消息
V2TIMVideoElem v2TIMVideoElem = msg.getVideoElem();
// 视频截图 ID,内部标识,可用于外部缓存 key
String snapshotUUID = v2TIMVideoElem.getSnapshotUUID();
// 视频截图文件大小
int snapshotSize = v2TIMVideoElem.getSnapshotSize();
// 视频截图宽
int snapshotWidth = v2TIMVideoElem.getSnapshotWidth();
// 视频截图高
int snapshotHeight = v2TIMVideoElem.getSnapshotHeight();
// 视频 ID,内部标识,可用于外部缓存 key
String videoUUID = v2TIMVideoElem.getVideoUUID();
// 视频文件大小
int videoSize = v2TIMVideoElem.getVideoSize();
// 视频时长
int duration = v2TIMVideoElem.getDuration();
// 设置视频截图文件路径,这里可以用 uuid 作为标识,避免重复下载
String snapshotPath = "/sdcard/im/snapshot/" + "myUserID" + snapshotUUID;
File snapshotFile = new File(snapshotPath);
if (!snapshotFile.exists()) {
v2TIMVideoElem.downloadSnapshot(snapshotPath, new V2TIMDownloadCallback() {
@Override
public void onProgress(V2TIMElem.V2ProgressInfo progressInfo) {
// 下载进度回调:已下载大小 v2ProgressInfo.getCurrentSize();总文件大小 v2ProgressInfo.getTotalSize()
}
@Override
public void onError(int code, String desc) {
// 下载失败
}
@Override
public void onSuccess() {
// 下载完成
}
});
} else {
// 文件已存在
}

// 设置视频文件路径,这里可以用 uuid 作为标识,避免重复下载
String videoPath = "/sdcard/im/video/" + "myUserID" + snapshotUUID;
File videoFile = new File(videoPath);
if (!snapshotFile.exists()) {
v2TIMVideoElem.downloadSnapshot(videoPath, new V2TIMDownloadCallback() {
@Override
public void onProgress(V2TIMElem.V2ProgressInfo progressInfo) {
// 下载进度回调:已下载大小 v2ProgressInfo.getCurrentSize();总文件大小 v2ProgressInfo.getTotalSize()
}
@Override
public void onError(int code, String desc) {
// 下载失败
}
@Override
public void onSuccess() {
// 下载完成
}
});
} else {
// 文件已存在
}
} else if (elemType == V2TIMMessage.V2TIM_ELEM_TYPE_FILE) {
// 文件消息
V2TIMFileElem v2TIMFileElem = msg.getFileElem();
// 文件 ID,内部标识,可用于外部缓存 key
String uuid = v2TIMFileElem.getUUID();
// 文件名称
String fileName = v2TIMFileElem.getFileName();
// 文件大小
int fileSize = v2TIMFileElem.getFileSize();
// 设置文件路径,这里可以用 uuid 作为标识,避免重复下载
String filePath = "/sdcard/im/file/" + "myUserID" + uuid;
File file = new File(filePath);
if (!file.exists()) {
v2TIMFileElem.downloadFile(filePath, new V2TIMDownloadCallback() {
@Override
public void onProgress(V2TIMElem.V2ProgressInfo progressInfo) {
// 下载进度回调:已下载大小 v2ProgressInfo.getCurrentSize();总文件大小 v2ProgressInfo.getTotalSize()
}
@Override
public void onError(int code, String desc) {
// 下载失败
}
@Override
public void onSuccess() {
// 下载完成
}
});
} else {
// 文件已存在
}
} else if (elemType == V2TIMMessage.V2TIM_ELEM_TYPE_LOCATION) {
// 地理位置消息
V2TIMLocationElem v2TIMLocationElem = msg.getLocationElem();
// 地理位置信息描述
String desc = v2TIMLocationElem.getDesc();
// 经度
double longitude = v2TIMLocationElem.getLongitude();
// 纬度
double latitude = v2TIMLocationElem.getLatitude();
} else if (elemType == V2TIMMessage.V2TIM_ELEM_TYPE_FACE) {
// 表情消息
V2TIMFaceElem v2TIMFaceElem = msg.getFaceElem();
// 表情所在的位置
int index = v2TIMFaceElem.getIndex();
// 表情自定义数据
byte[] data = v2TIMFaceElem.getData();
} else if (elemType == V2TIMMessage.V2TIM_ELEM_TYPE_GROUP_TIPS) {
// 群 tips 消息
V2TIMGroupTipsElem v2TIMGroupTipsElem = msg.getGroupTipsElem();
// 所属群组
String groupId = v2TIMGroupTipsElem.getGroupID();
// 群Tips类型
int type = v2TIMGroupTipsElem.getType();
// 操作人资料
V2TIMGroupMemberInfo opMember = v2TIMGroupTipsElem.getOpMember();
// 被操作人资料
List<V2TIMGroupMemberInfo> memberList = v2TIMGroupTipsElem.getMemberList();
// 群信息变更详情
List<V2TIMGroupChangeInfo> groupChangeInfoList = v2TIMGroupTipsElem.getGroupChangeInfoList();
// 群成员变更信息
List<V2TIMGroupMemberChangeInfo> memberChangeInfoList v2TIMGroupTipsElem.getMemberChangeInfoList();
// 当前群在线人数
int memberCount = v2TIMGroupTipsElem.getMemberCount();
}
}

0 comments on commit e1287cd

Please sign in to comment.