Commit f0d97809 authored by liusheng's avatar liusheng

聊天增加扩展字段

parent 44c81c01
......@@ -74,7 +74,7 @@ public class ChannelMsgAdapter extends BaseAdapter {
mHolder.msg_content.setVisibility(View.VISIBLE);
// mHolder.msg_content_send.setVisibility(View.GONE);
if (messageContent.getMsgType() == MessageContent.MessageType.MESSAGE_TYPE_TEXT) {
mHolder.msg_content.setText(messageContent.getContent());
mHolder.msg_content.setText(messageContent.getContent()+"\next_data:"+messageContent.getExtData());
} else {
// mHolder..setText(messageContent.getVoiceContent());
}
......
......@@ -80,7 +80,7 @@ public class PrivateMsgAdapter extends BaseAdapter {
mHolder.msg_content_send.setVisibility(View.VISIBLE);
}
if (message.getMsgType() == MessageContent.MessageType.MESSAGE_TYPE_TEXT) {
mHolder.msg_content.setText(message.getContent());
mHolder.msg_content.setText(message.getContent()+"\next_data:"+message.getExtData());
} else {
mHolder.msg_content.setText("语音消息");
}
......
......@@ -62,7 +62,9 @@ public class ConnectActivity extends AppCompatActivity {
@Override
public void onClick(View v) {
String content = binding.sendEdit.getText().toString();
CCIMClient.getInstance().sendTextMessage(content, contact.getContactUserId(), contact.getContactUserName(), new ResultEventCallback<MessageContent>() {
String extData=binding.extDateEdit.getText().toString();
CCIMClient.getInstance().sendTextMessage(content,extData, contact.getContactUserId(), contact.getContactUserName(), new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent messageContent) {
binding.sendEdit.setText("");
......@@ -81,7 +83,8 @@ public class ConnectActivity extends AppCompatActivity {
binding.startVoice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CCIMClient.getInstance().startRecordAudioMessage(ConnectActivity.this, contact.getContactUserId(), contact.getContactUserName(), new ResultEventCallback<Void>() {
String extData=binding.extDateEdit.getText().toString();
CCIMClient.getInstance().startRecordAudioMessage(ConnectActivity.this,extData, contact.getContactUserId(), contact.getContactUserName(), new ResultEventCallback<Void>() {
@Override
public void onSuccess(Void unused) {
isSuccess = true;
......@@ -111,8 +114,9 @@ public class ConnectActivity extends AppCompatActivity {
binding.sendVoice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isSuccess)
CCIMClient.getInstance().stopAndSendAudioMessage(contact.getContactUserId(), contact.getContactUserName(), new ResultEventCallback<MessageContent>() {
if (isSuccess){
String extData=binding.extDateEdit.getText().toString();
CCIMClient.getInstance().stopAndSendAudioMessage(extData,contact.getContactUserId(), contact.getContactUserName(), new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent message) {
binding.sendEdit.setText("");
......@@ -126,6 +130,7 @@ public class ConnectActivity extends AppCompatActivity {
}
});
}
}
});
CCIMClient.getInstance().getPrivateMessage(contact.getContactUserId(), new ResultEventCallback<List<MessageContent>>() {
......
......@@ -61,7 +61,8 @@ public class ConnectChannelActivity extends AppCompatActivity {
@Override
public void onClick(View v) {
String content = binding.sendEdit.getText().toString();
CCIMClient.getInstance().sendChannelMessage(content, channelId, new ResultEventCallback<MessageContent>() {
String extData=binding.extDateEdit.getText().toString();
CCIMClient.getInstance().sendChannelMessage(content, extData,channelId, new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent messageContent) {
binding.sendEdit.setText("");
......@@ -94,7 +95,8 @@ public class ConnectChannelActivity extends AppCompatActivity {
binding.startVoice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CCIMClient.getInstance().startRecordChannelAudioMessage(ConnectChannelActivity.this, channelId,
String extData=binding.extDateEdit.getText().toString();
CCIMClient.getInstance().startRecordChannelAudioMessage(ConnectChannelActivity.this,extData, channelId,
new ResultEventCallback<Void>() {
@Override
public void onSuccess(Void unused) {
......@@ -124,8 +126,9 @@ public class ConnectChannelActivity extends AppCompatActivity {
@Override
public void onClick(View v) {
if (isSuccess)
CCIMClient.getInstance().stopAndSendChannelAudioMessage(channelId, new ResultEventCallback<MessageContent>() {
if (isSuccess){
String extData=binding.extDateEdit.getText().toString();
CCIMClient.getInstance().stopAndSendChannelAudioMessage(extData,channelId, new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent message) {
binding.sendEdit.setText("");
......@@ -139,6 +142,7 @@ public class ConnectChannelActivity extends AppCompatActivity {
}
});
}
}
});
EventBus.getDefault().register(this);
}
......
......@@ -15,6 +15,7 @@
tools:layout_editor_absoluteX="1dp"
tools:layout_editor_absoluteY="1dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
......@@ -41,6 +42,13 @@
android:gravity="center"
android:layout_marginBottom="100dp"
android:orientation="horizontal">
<EditText
android:id="@+id/ext_date_edit"
android:hint="ext_data"
android:layout_width="100dp"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/start_voice"
android:layout_width="wrap_content"
......
......@@ -43,6 +43,12 @@
android:gravity="center"
android:layout_marginBottom="100dp"
android:orientation="horizontal">
<EditText
android:id="@+id/ext_date_edit"
android:hint="ext_data"
android:layout_width="100dp"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/start_voice"
android:layout_width="wrap_content"
......
......@@ -443,7 +443,7 @@ public class CCIMClient {
/**
* 发送消息
*/
public void sendTextMessage(String content, Long receiveUserId, String receiveUserName, ResultEventCallback<MessageContent> callback) {
public void sendTextMessage(String content,String extData, Long receiveUserId, String receiveUserName, ResultEventCallback<MessageContent> callback) {
if (TextUtils.isEmpty(content)) {
callback.onFailed(ErrorCode.MSG_CONTENT_IS_EMPTY);
return;
......@@ -459,7 +459,7 @@ public class CCIMClient {
return;
}
messageManager.sendPrivateMessage(content, receiveUserId, MessageSpec.MessageType.MESSAGE_TYPE_TEXT, new ResultEventCallback<MessageContent>() {
messageManager.sendPrivateMessage(content,extData, receiveUserId, MessageSpec.MessageType.MESSAGE_TYPE_TEXT, new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent messageContent) {
......@@ -477,7 +477,7 @@ public class CCIMClient {
/**
* 发送频道消息
*/
public void sendChannelMessage(String content, Long channelId, ResultEventCallback<MessageContent> callback) {
public void sendChannelMessage(String content, String extData,Long channelId, ResultEventCallback<MessageContent> callback) {
if (TextUtils.isEmpty(content)) {
callback.onFailed(ErrorCode.MSG_CONTENT_IS_EMPTY);
return;
......@@ -491,7 +491,7 @@ public class CCIMClient {
callback.onFailed(Common.StatusCode.STATUS_CODE_USER_MUTED_ERROR.getNumber());
return;
}
messageManager.sendChannelMessage(content, channelId, MessageSpec.MessageType.MESSAGE_TYPE_TEXT, callback);
messageManager.sendChannelMessage(content, extData,channelId, MessageSpec.MessageType.MESSAGE_TYPE_TEXT, callback);
}
/**
......@@ -538,7 +538,7 @@ public class CCIMClient {
/**
* 开始录音
*/
public void startRecordAudioMessage(Context context, Long receiveUserId, String receiveUserName, ResultEventCallback<Void> resultCallback, RecordAutoSendCallback callback) {
public void startRecordAudioMessage(Context context, String extData,Long receiveUserId, String receiveUserName, ResultEventCallback<Void> resultCallback, RecordAutoSendCallback callback) {
if (!checkMutedExpired()) {
resultCallback.onFailed(Common.StatusCode.STATUS_CODE_USER_MUTED_ERROR.getNumber());
return;
......@@ -553,7 +553,7 @@ public class CCIMClient {
logger.info("time out ,auto send");
Long release = MediaHelper.getInstance().release();
if (release / 1000 >= maxAudioDuration) {
uploadAndSendMessage(receiveUserId, receiveUserName, new ResultEventCallback<MessageContent>() {
uploadAndSendMessage(extData,receiveUserId, receiveUserName, new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent messageContent) {
callback.onSuccess(messageContent);
......@@ -582,18 +582,18 @@ public class CCIMClient {
/**
* 停止录音并上传 私聊
*/
public void stopAndSendAudioMessage(Long receiveUserId, String receiveUserName, ResultEventCallback<MessageContent> callback) {
public void stopAndSendAudioMessage(String extData,Long receiveUserId, String receiveUserName, ResultEventCallback<MessageContent> callback) {
if (checkAudio(callback)) {
return;
}
uploadAndSendMessage(receiveUserId, receiveUserName, callback);
uploadAndSendMessage(extData,receiveUserId, receiveUserName, callback);
}
private void uploadAndSendMessage(Long receiveUserId, String receiveUserName, ResultEventCallback<MessageContent> callback) {
private void uploadAndSendMessage(String extData,Long receiveUserId, String receiveUserName, ResultEventCallback<MessageContent> callback) {
messageManager.uploadFileMessage(cachePath, new ResultEventCallback<String>() {
@Override
public void onSuccess(String fileName) {
messageManager.sendPrivateMessage(fileName, receiveUserId, MessageSpec.MessageType.MESSAGE_TYPE_VOICE, new ResultEventCallback<MessageContent>() {
messageManager.sendPrivateMessage(fileName,extData, receiveUserId, MessageSpec.MessageType.MESSAGE_TYPE_VOICE, new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent messageContent) {
contactManager.putContactDialog(receiveUserId, receiveUserName);
......@@ -619,7 +619,7 @@ public class CCIMClient {
/**
* 开始录音
*/
public void startRecordChannelAudioMessage(Context context, Long channelID, ResultEventCallback<Void> resultCallback, RecordAutoSendCallback callback) {
public void startRecordChannelAudioMessage(Context context,String extData, Long channelID, ResultEventCallback<Void> resultCallback, RecordAutoSendCallback callback) {
if (!checkMutedExpired()) {
resultCallback.onFailed(Common.StatusCode.STATUS_CODE_USER_MUTED_ERROR.getNumber());
return;
......@@ -634,7 +634,7 @@ public class CCIMClient {
logger.info("time out ,auto send");
Long release = MediaHelper.getInstance().release();
if (release / 1000 >= maxAudioDuration) {
uploadAndSendChannelMessage(channelID, new ResultEventCallback<MessageContent>() {
uploadAndSendChannelMessage(extData,channelID, new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent messageContent) {
callback.onSuccess(messageContent);
......@@ -663,18 +663,18 @@ public class CCIMClient {
/**
* 停止录音并上传 频道
*/
public void stopAndSendChannelAudioMessage(Long channelID, ResultEventCallback<MessageContent> callback) {
public void stopAndSendChannelAudioMessage(String extData,Long channelID, ResultEventCallback<MessageContent> callback) {
if (checkAudio(callback)) {
return;
}
uploadAndSendChannelMessage(channelID, callback);
uploadAndSendChannelMessage(extData,channelID, callback);
}
private void uploadAndSendChannelMessage(Long channelID, ResultEventCallback<MessageContent> callback) {
private void uploadAndSendChannelMessage(String extData,Long channelID, ResultEventCallback<MessageContent> callback) {
messageManager.uploadFileMessage(cachePath, new ResultEventCallback<String>() {
@Override
public void onSuccess(String fileName) {
messageManager.sendChannelMessage(fileName, channelID, MessageSpec.MessageType.MESSAGE_TYPE_VOICE, callback);
messageManager.sendChannelMessage(fileName,extData, channelID, MessageSpec.MessageType.MESSAGE_TYPE_VOICE, callback);
}
@Override
......
......@@ -4,7 +4,7 @@ import androidx.room.Database;
import androidx.room.RoomDatabase;
import com.ccwangluo.ccim.modle.MessageContent;
@Database(entities = {MessageContent.class}, version = 1,exportSchema = false)
@Database(entities = {MessageContent.class}, version = 2,exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
public abstract MessageDao messageDao();
}
......@@ -3,7 +3,10 @@ package com.ccwangluo.ccim.manage;
import android.content.Context;
import android.media.MediaMetadataRetriever;
import androidx.annotation.NonNull;
import androidx.room.Room;
import androidx.room.migration.Migration;
import androidx.sqlite.db.SupportSQLiteDatabase;
import com.ccwangluo.ccim.CCIMClient;
import com.ccwangluo.ccim.database.AppDatabase;
......@@ -48,10 +51,20 @@ public class MessageManager {
public void init(Context context, Long userId) {
this.userId = userId;
if (db == null) {
db = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "ccim_db").build();
//添加1到2的迁移策略
db = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "ccim_db").addMigrations(MIGRATION_1_2).build();
}
}
//删除原有表中的字段 具体的版本迁移策略
public static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
//添加ext_data字段
database.execSQL("alter table `MessageContent` add column `extData` varchar(2048) ");
}
};
private List<MessageContent> messageContentList = new ArrayList<>();
......@@ -131,10 +144,11 @@ public class MessageManager {
/**
* 发送消息
*/
public void sendPrivateMessage(String content, Long reciveUserId, MessageSpec.MessageType messageType, ResultEventCallback<MessageContent> callback) {
public void sendPrivateMessage(String content,String extData, Long reciveUserId, MessageSpec.MessageType messageType, ResultEventCallback<MessageContent> callback) {
Chat.ChatRequestMessage.Builder builder = Chat.ChatRequestMessage.newBuilder();
Message.SendMessageRequest messageRequest = Message.SendMessageRequest.newBuilder()
.setContent(content)
.setExtData(extData)
.setMsgType(messageType)
.setReceiverUserId(reciveUserId).build();
builder.setSendMsgReq(messageRequest);
......@@ -156,6 +170,7 @@ public class MessageManager {
message.setReciveUserId(reciveUserId);
message.setMsgId(msgId);
message.setContent(text);
message.setExtData(extData);
message.setMsgType(MessageContent.MessageType.valueOf(messageType.name()));
message.setCreatedDate(sendMsgRes.getSendDate());
message.setMsgSrcType(MessageContent.MessageSourceType.MESSAGE_SOURCE_TYPE_PRIVATE);
......@@ -174,10 +189,11 @@ public class MessageManager {
/**
* 发送频道消息
*/
public void sendChannelMessage(String content, Long channelId, MessageSpec.MessageType messageType, ResultEventCallback<MessageContent> callback) {
public void sendChannelMessage(String content,String extData, Long channelId, MessageSpec.MessageType messageType, ResultEventCallback<MessageContent> callback) {
Chat.ChatRequestMessage.Builder builder = Chat.ChatRequestMessage.newBuilder();
Message.SendChannelMessageRequest sendChannelMessageRequest = Message.SendChannelMessageRequest.newBuilder()
.setContent(content)
.setExtData(extData)
.setMsgType(messageType)
.setChannelId(channelId)
.build();
......@@ -200,6 +216,7 @@ public class MessageManager {
message.setChannelId(channelId);
message.setMsgId(msgId);
message.setContent(text);
message.setExtData(extData);
message.setMsgType(MessageContent.MessageType.valueOf(messageType.name()));
message.setCreatedDate(sendMsgRes.getSendDate());
message.setMsgSrcType(MessageContent.MessageSourceType.MESSAGE_SOURCE_TYPE_PRIVATE);
......
......@@ -23,6 +23,8 @@ public class MessageContent {
private User senderUser;
private String voiceContent;//音频的语音转文字
private String extData;//扩展字段 verison:2 添加
public User getSenderUser() {
return senderUser;
}
......@@ -120,4 +122,12 @@ public class MessageContent {
public void setReciveUserId(Long reciveUserId) {
this.reciveUserId = reciveUserId;
}
public String getExtData() {
return extData;
}
public void setExtData(String extData) {
this.extData = extData;
}
}
......@@ -10,6 +10,7 @@ message SendMessageRequest {
int64 receiver_user_id = 1;
string content = 2;
MessageType msg_type = 3;
string ext_data = 4;
}
message SendMessageResponse {
......@@ -22,6 +23,7 @@ message SendChannelMessageRequest {
int64 channel_id = 1;
string content = 2;
MessageType msg_type = 3;
string ext_data = 4;
}
message SendChannelMessageResponse {
......
......@@ -33,4 +33,5 @@ message ChatMessage {
UserInfo sender_user = 9;
string voice_content = 10;
string ext_data = 11;
}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment