修复测试反馈问题

This commit is contained in:
zlzw 2023-10-27 17:53:28 +08:00
parent 4bd1e8eccc
commit 9d0f8cb060
43 changed files with 441 additions and 192 deletions

View File

@ -15,6 +15,74 @@ android {
compileSdkVersion rootProject.ext.android.compileSdkVersion compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion buildToolsVersion rootProject.ext.android.buildToolsVersion
packagingOptions {
pickFirst "lib/armeabi/libyuvutils.so"
pickFirst "lib/arm64-v8a/libyuvutils.so"
pickFirst "lib/armeabi-v7a/libyuvutils.so"
pickFirst "lib/armeabi/libyuvtools.so"
pickFirst "lib/arm64-v8a/libyuvtools.so"
pickFirst "lib/armeabi-v7a/libyuvtools.so"
exclude "lib/arm64-v8a/libmmcv_api_handgesture.so"
exclude "lib/arm64-v8a/libmmcv_api_express.so"
exclude "lib/arm64-v8a/libMediaEncoder.so"
exclude "lib/arm64-v8a/libarcore_sdk_c.so"
exclude "lib/arm64-v8a/libmediadecoder.so"
exclude "lib/arm64-v8a/libMediaMuxer.so"
exclude "lib/arm64-v8a/libarcore_sdk_jni.so"
exclude "lib/arm64-v8a/libMediaUtils.so"
exclude "lib/arm64-v8a/libcosmosffmpeg.so"
//so
exclude 'lib/arm64-v8a/libxeengine.so'
exclude 'lib/arm64-v8a/libmmcv_base.so'
exclude 'lib/arm64-v8a/libmmcrypto.so'
exclude 'lib/arm64-v8a/libMNN.so'
// exclude 'lib/arm64-v8a/libc++_shared.so'
exclude 'lib/arm64-v8a/libmmcv_api_base.so'
exclude 'lib/arm64-v8a/libmmcv_api_beauty.so'
exclude 'lib/arm64-v8a/libmmcv_api_bodylandmark.so'
exclude 'lib/arm64-v8a/libmmcv_api_express.so'
exclude 'lib/arm64-v8a/libmmcv_api_faceattributes.so'
exclude 'lib/arm64-v8a/libmmcv_api_facefeatures.so'
exclude 'lib/arm64-v8a/libmmcv_api_faceprocessor.so'
exclude 'lib/arm64-v8a/libmmcv_api_facerecognition.so'
exclude 'lib/arm64-v8a/libmmcv_api_handgesture.so'
exclude 'lib/arm64-v8a/libmmcv_api_imagequality.so'
exclude 'lib/arm64-v8a/libmmcv_api_objectdetect.so'
exclude 'lib/arm64-v8a/libmmcv_api_segmentation.so'
exclude 'lib/arm64-v8a/libmmcv_api_videoprocessor.so'
exclude 'lib/arm64-v8a/libmmlic.so'
exclude 'lib/arm64-v8a/libMNN_CL.so'
exclude 'lib/arm64-v8a/libMNN_Express.so'
exclude 'lib/armeabi-v7a/libxeengine.so'
exclude 'lib/armeabi-v7a/libmmcv_base.so'
exclude 'lib/armeabi-v7a/libmmcrypto.so'
exclude 'lib/armeabi-v7a/libMNN.so'
// exclude 'lib/armeabi-v7a/libc++_shared.so'
exclude 'lib/armeabi-v7a/libmmcv_api_base.so'
exclude 'lib/armeabi-v7a/libmmcv_api_beauty.so'
exclude 'lib/armeabi-v7a/libmmcv_api_bodylandmark.so'
exclude 'lib/armeabi-v7a/libmmcv_api_express.so'
exclude 'lib/armeabi-v7a/libmmcv_api_faceattributes.so'
exclude 'lib/armeabi-v7a/libmmcv_api_facefeatures.so'
exclude 'lib/armeabi-v7a/libmmcv_api_faceprocessor.so'
exclude 'lib/armeabi-v7a/libmmcv_api_facerecognition.so'
exclude 'lib/armeabi-v7a/libmmcv_api_handgesture.so'
exclude 'lib/armeabi-v7a/libmmcv_api_imagequality.so'
exclude 'lib/armeabi-v7a/libmmcv_api_objectdetect.so'
exclude 'lib/armeabi-v7a/libmmcv_api_segmentation.so'
exclude 'lib/armeabi-v7a/libmmcv_api_videoprocessor.so'
exclude 'lib/armeabi-v7a/libmmlic.so'
exclude 'lib/armeabi-v7a/libMNN_CL.so'
exclude 'lib/armeabi-v7a/libMNN_Express.so'
//
if (rootProject.ext.manifestPlaceholders.isPluginModel) {
exclude 'lib/armeabi-v7a/libCNamaSDK.so'
exclude 'lib/arm64-v8a/libCNamaSDK.so'
exclude 'lib/armeabi-v7a/libfuai.so'
exclude 'lib/arm64-v8a/libfuai.so'
}
}
defaultConfig { defaultConfig {
applicationId "com.shayu.onetoonenew" applicationId "com.shayu.onetoonenew"

View File

@ -236,7 +236,7 @@
<provider <provider
android:name="androidx.core.content.FileProvider" android:name="androidx.core.content.FileProvider"
android:authorities="com.shayu.onetoone.fileprovider" android:authorities="${packageName}.fileprovider"
android:exported="false" android:exported="false"
android:grantUriPermissions="true"> android:grantUriPermissions="true">
<meta-data <meta-data

View File

@ -20,6 +20,7 @@ import com.shayu.onetoone.provider.MessageChatAutoItemProvider;
import com.shayu.onetoone.provider.MessageChatReceiveGiftItemProvider; import com.shayu.onetoone.provider.MessageChatReceiveGiftItemProvider;
import com.shayu.onetoone.provider.MessageChatTipsItemProvider; import com.shayu.onetoone.provider.MessageChatTipsItemProvider;
import com.shayu.onetoone.provider.OTOCallEndMessageItemProvider; import com.shayu.onetoone.provider.OTOCallEndMessageItemProvider;
import com.shayu.onetoone.utils.ChatPluginExtensionConfig;
import com.shayu.onetoone.utils.NeverCrashUtils; import com.shayu.onetoone.utils.NeverCrashUtils;
import com.yunbao.common.BuildConfig; import com.yunbao.common.BuildConfig;
import com.yunbao.common.CommonAppContext; import com.yunbao.common.CommonAppContext;
@ -38,6 +39,8 @@ import java.util.ArrayList;
import io.rong.callkit.CallEndMessageItemProvider; import io.rong.callkit.CallEndMessageItemProvider;
import io.rong.imkit.RongIM; import io.rong.imkit.RongIM;
import io.rong.imkit.config.RongConfigCenter; import io.rong.imkit.config.RongConfigCenter;
import io.rong.imkit.conversation.extension.RongExtension;
import io.rong.imkit.conversation.extension.RongExtensionManager;
import io.rong.imkit.conversationlist.model.BaseUiConversation; import io.rong.imkit.conversationlist.model.BaseUiConversation;
import io.rong.imkit.conversationlist.provider.PrivateConversationProvider; import io.rong.imkit.conversationlist.provider.PrivateConversationProvider;
import io.rong.imkit.utils.RouteUtils; import io.rong.imkit.utils.RouteUtils;
@ -124,6 +127,7 @@ public class AppContext extends CommonAppContext {
RongConfigCenter.conversationConfig().replaceMessageProvider(CallEndMessageItemProvider.class,new OTOCallEndMessageItemProvider()); RongConfigCenter.conversationConfig().replaceMessageProvider(CallEndMessageItemProvider.class,new OTOCallEndMessageItemProvider());
RongExtensionManager.getInstance().setExtensionConfig(new ChatPluginExtensionConfig());
} }

View File

@ -1,6 +1,5 @@
package com.shayu.onetoone.activity; package com.shayu.onetoone.activity;
import android.app.Dialog;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
@ -20,30 +19,23 @@ import com.shayu.onetoone.activity.fragments.DynamicFragment;
import com.shayu.onetoone.activity.fragments.FriendsFragment; import com.shayu.onetoone.activity.fragments.FriendsFragment;
import com.shayu.onetoone.activity.fragments.MessageFragment; import com.shayu.onetoone.activity.fragments.MessageFragment;
import com.shayu.onetoone.activity.fragments.MyFragment; import com.shayu.onetoone.activity.fragments.MyFragment;
import com.shayu.onetoone.activity.fragments.message.MsgMessageFragment;
import com.shayu.onetoone.activity.message.ChatActivity; import com.shayu.onetoone.activity.message.ChatActivity;
import com.shayu.onetoone.bean.JoinAnchorBean;
import com.shayu.onetoone.bean.MatchingItemSizeBean; import com.shayu.onetoone.bean.MatchingItemSizeBean;
import com.shayu.onetoone.bean.OfficialNoticeBean;
import com.shayu.onetoone.bean.SendConsumeBean; import com.shayu.onetoone.bean.SendConsumeBean;
import com.shayu.onetoone.dialog.FirstTipsDialog; import com.shayu.onetoone.dialog.FirstTipsDialog;
import com.shayu.onetoone.dialog.TipsDialog;
import com.shayu.onetoone.event.HomeBusEvent; import com.shayu.onetoone.event.HomeBusEvent;
import com.shayu.onetoone.event.MessageMsgBusEvent; import com.shayu.onetoone.event.MessageMsgBusEvent;
import com.shayu.onetoone.listener.OnDialogClickListener;
import com.shayu.onetoone.listener.OnSendMessageListener; import com.shayu.onetoone.listener.OnSendMessageListener;
import com.shayu.onetoone.manager.CallClientManager; import com.shayu.onetoone.manager.CallClientManager;
import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.RouteManager; import com.shayu.onetoone.manager.RouteManager;
import com.shayu.onetoone.manager.SendMessageManager; import com.shayu.onetoone.manager.SendMessageManager;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.NoviceInstructorManager;
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager; import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.Subscribe;
@ -52,12 +44,9 @@ import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import io.rong.imkit.RongIM;
import io.rong.imkit.manager.UnReadMessageManager; import io.rong.imkit.manager.UnReadMessageManager;
import io.rong.imkit.userinfo.RongUserInfoManager;
import io.rong.imlib.RongIMClient; import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation; import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.UserInfo;
import kotlin.Unit; import kotlin.Unit;
import kotlin.jvm.functions.Function1; import kotlin.jvm.functions.Function1;
import kotlin.jvm.functions.Function4; import kotlin.jvm.functions.Function4;
@ -173,10 +162,10 @@ public class MainActivity extends AbsOTOActivity {
RouteManager.forwardActivity(RouteManager.ACTIVITY_MATCHING); RouteManager.forwardActivity(RouteManager.ACTIVITY_MATCHING);
} }
}); });
OTONetManager.getInstance(mContext).setFiled("is_login","1",null); OTONetManager.getInstance(mContext).setFiled("is_login", "1", null);
} else { } else {
viewPager.setCurrentItem(2); viewPager.setCurrentItem(2);
OTONetManager.getInstance(mContext).setFiled("is_chat","1",null); OTONetManager.getInstance(mContext).setFiled("is_chat", "1", null);
} }
dialog.dismiss(); dialog.dismiss();
} }
@ -197,6 +186,7 @@ public class MainActivity extends AbsOTOActivity {
super.onResume(); super.onResume();
checkUserInfoIsSet(); checkUserInfoIsSet();
initFirstLoginTips(); initFirstLoginTips();
ToastUtil.showDebug("2");
} }
/** /**
@ -219,35 +209,21 @@ public class MainActivity extends AbsOTOActivity {
} }
private void showRedPoint(int count) { private void showRedPoint(int count) {
OTONetManager.getInstance(mContext).getMessageSystemLists(new HttpCallback<List<OfficialNoticeBean>>() { //大于0则是通过会话未读监听器获取到的数则不用再调用获取未读数接口了
int point = 0; if (count >= 0) {
updateUnreadCount(MsgMessageFragment.systemPoint + count);
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_POINT, MsgMessageFragment.systemPoint + count));
return;
}
RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback<Integer>() {
@Override @Override
public void onSuccess(List<OfficialNoticeBean> data) { public void onSuccess(Integer integer) {
for (OfficialNoticeBean datum : data) { updateUnreadCount(MsgMessageFragment.systemPoint + integer);
point += datum.getNum(); Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_POINT, MsgMessageFragment.systemPoint + integer));
}
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_SYSTEM, point + count));
//大于0则是通过会话未读监听器获取到的数则不用再调用获取未读数接口了
if (count >= 0) {
updateUnreadCount(point + count);
return;
}
RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback<Integer>() {
@Override
public void onSuccess(Integer integer) {
updateUnreadCount(point + integer);
}
@Override
public void onError(RongIMClient.ErrorCode e) {
}
});
} }
@Override @Override
public void onError(String error) { public void onError(RongIMClient.ErrorCode e) {
} }
}); });
@ -278,6 +254,10 @@ public class MainActivity extends AbsOTOActivity {
public void busEvent(MessageMsgBusEvent event) { public void busEvent(MessageMsgBusEvent event) {
if (event.getType() == MessageMsgBusEvent.TYPE_ALL_READ) { if (event.getType() == MessageMsgBusEvent.TYPE_ALL_READ) {
updateUnreadCount(0); updateUnreadCount(0);
} else if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_POINT) {
if (event.getNum() == -1) {
showRedPoint(-1);
}
} }
} }
} }

View File

@ -190,6 +190,7 @@ public class HomeRankFragment extends BaseFragment {
void setData(HomeRankBean user, int position) { void setData(HomeRankBean user, int position) {
getItem(position,mItem1,mItem2,mItem3).setVisibility(View.VISIBLE); getItem(position,mItem1,mItem2,mItem3).setVisibility(View.VISIBLE);
getItem(position,diamond1,diamond2,diamond3).setVisibility(View.VISIBLE);
getItem(position, mName1, mName2, mName3).setText(user.getUserNicename()); getItem(position, mName1, mName2, mName3).setText(user.getUserNicename());
getItem(position, mVotes1, mVotes2, mVotes3).setText(user.getMoney()); getItem(position, mVotes1, mVotes2, mVotes3).setText(user.getMoney());
if (user.isFollow()) { if (user.isFollow()) {

View File

@ -7,6 +7,7 @@ import android.content.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -19,6 +20,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.content.FileProvider;
import com.lxj.xpopup.XPopup; import com.lxj.xpopup.XPopup;
import com.makeramen.roundedimageview.RoundedImageView; import com.makeramen.roundedimageview.RoundedImageView;
@ -27,9 +29,7 @@ import com.shayu.onetoone.adapter.MsgChatMessageListAdapter;
import com.shayu.onetoone.bean.FollowBean; import com.shayu.onetoone.bean.FollowBean;
import com.shayu.onetoone.bean.GiftBean; import com.shayu.onetoone.bean.GiftBean;
import com.shayu.onetoone.bean.MessageChatAuthContent; import com.shayu.onetoone.bean.MessageChatAuthContent;
import com.shayu.onetoone.bean.MessageChatTipsContent;
import com.shayu.onetoone.bean.MessageConsumeConfigBean; import com.shayu.onetoone.bean.MessageConsumeConfigBean;
import com.shayu.onetoone.bean.OfficialNoticeBean;
import com.shayu.onetoone.bean.SendConsumeBean; import com.shayu.onetoone.bean.SendConsumeBean;
import com.shayu.onetoone.bean.UserBean; import com.shayu.onetoone.bean.UserBean;
import com.shayu.onetoone.dialog.BottomListDialog; import com.shayu.onetoone.dialog.BottomListDialog;
@ -53,7 +53,6 @@ import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.ProcessImageUtil; import com.yunbao.common.utils.ProcessImageUtil;
import com.yunbao.common.utils.SpUtil;
import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil; import com.yunbao.common.utils.WordUtil;
@ -70,6 +69,8 @@ import java.util.List;
import io.rong.imkit.IMCenter; import io.rong.imkit.IMCenter;
import io.rong.imkit.config.RongConfigCenter; import io.rong.imkit.config.RongConfigCenter;
import io.rong.imkit.conversation.MessageListAdapter; import io.rong.imkit.conversation.MessageListAdapter;
import io.rong.imkit.conversation.extension.InputMode;
import io.rong.imkit.conversation.extension.RongExtensionViewModel;
import io.rong.imkit.model.UiMessage; import io.rong.imkit.model.UiMessage;
import io.rong.imkit.picture.PictureSelector; import io.rong.imkit.picture.PictureSelector;
import io.rong.imkit.picture.config.PictureMimeType; import io.rong.imkit.picture.config.PictureMimeType;
@ -89,7 +90,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
View mInputPanel; View mInputPanel;
View numLayout; View numLayout;
EditText mEditText; EditText mEditText;
ImageView img, call, video, gift; ImageView img, call, video, gift,mEmojiToggleBtn;
ProcessImageUtil cameraUtil; ProcessImageUtil cameraUtil;
String targetId; String targetId;
Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE;
@ -103,6 +104,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
ImageView status; ImageView status;
TextView num; TextView num;
Button follow; Button follow;
RongExtensionViewModel mExtensionViewModel;
private String token; private String token;
@ -126,7 +128,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
initBtn(); initBtn();
initChat(); initChat();
initPriceBean(); initPriceBean();
cameraUtil = new ProcessImageUtil(getActivity(), "com.shayu.onetoone.fileprovider"); cameraUtil = new ProcessImageUtil(getActivity(), "${packageName}.fileprovider");
mRongExtension.setVisibility(View.VISIBLE); mRongExtension.setVisibility(View.VISIBLE);
// img.setOnClickListener(v -> cameraUtil.getImageByCamera()); // img.setOnClickListener(v -> cameraUtil.getImageByCamera());
@ -202,19 +204,25 @@ public class ChatMessageFragment extends AbsConversationFragment {
MsgInputPanelForAudio audio; MsgInputPanelForAudio audio;
MsgInputPanelForGift giftPanel; MsgInputPanelForGift giftPanel;
/**
* 反射拿融云的view
*/
private void initBtn() { private void initBtn() {
try { try {
Field field = mRongExtension.getInputPanel().getClass().getDeclaredField("mInputPanel"); Field field = mRongExtension.getInputPanel().getClass().getDeclaredField("mInputPanel");
field.setAccessible(true); field.setAccessible(true);
mInputPanel = (View) field.get(mRongExtension.getInputPanel()); mInputPanel = (View) field.get(mRongExtension.getInputPanel());
assert mInputPanel != null; assert mInputPanel != null;
field=mRongExtension.getInputPanel().getClass().getDeclaredField("mExtensionViewModel");
field.setAccessible(true);
mExtensionViewModel= (RongExtensionViewModel) field.get(mRongExtension.getInputPanel());
mSendBtn = mInputPanel.getRootView().findViewById(R.id.send_btn); mSendBtn = mInputPanel.getRootView().findViewById(R.id.send_btn);
img = mInputPanel.getRootView().findViewById(R.id.input_panel_image_btn); img = mInputPanel.getRootView().findViewById(R.id.input_panel_image_btn);
video = mInputPanel.getRootView().findViewById(R.id.input_panel_video_btn); video = mInputPanel.getRootView().findViewById(R.id.input_panel_video_btn);
call = mInputPanel.getRootView().findViewById(R.id.input_panel_call_btn); call = mInputPanel.getRootView().findViewById(R.id.input_panel_call_btn);
gift = mInputPanel.getRootView().findViewById(R.id.input_panel_gift_btn); gift = mInputPanel.getRootView().findViewById(R.id.input_panel_gift_btn);
mEditText = mInputPanel.getRootView().findViewById(R.id.edit_btn); mEditText = mInputPanel.getRootView().findViewById(R.id.edit_btn);
mEmojiToggleBtn = mInputPanel.findViewById(R.id.input_panel_emoji_btn);
ImageView mVoiceToggleBtn = (ImageView) mInputPanel.getRootView().findViewById(R.id.input_panel_voice_toggle); ImageView mVoiceToggleBtn = (ImageView) mInputPanel.getRootView().findViewById(R.id.input_panel_voice_toggle);
assert mVoiceToggleBtn != null; assert mVoiceToggleBtn != null;
audio = new MsgInputPanelForAudio(targetId, getActivity(), mRongExtension); audio = new MsgInputPanelForAudio(targetId, getActivity(), mRongExtension);
@ -230,12 +238,25 @@ public class ChatMessageFragment extends AbsConversationFragment {
} }
}); });
mVoiceToggleBtn.setOnClickListener(view -> { mVoiceToggleBtn.setOnClickListener(view -> {
mExtensionViewModel.getInputModeLiveData().setValue(InputMode.TextInput);
giftPanel.hide();
audio.show(); audio.show();
}); });
gift.setOnClickListener(v -> { gift.setOnClickListener(v -> {
mExtensionViewModel.getInputModeLiveData().setValue(InputMode.TextInput);
audio.hide();
giftPanel.show(); giftPanel.show();
}); });
mEmojiToggleBtn.setOnClickListener(v -> {
if(mExtensionViewModel.getInputModeLiveData().getValue()==InputMode.TextInput){
audio.hide();
giftPanel.hide();
mExtensionViewModel.getInputModeLiveData().setValue(InputMode.EmoticonMode);
}else{
mExtensionViewModel.getInputModeLiveData().setValue(InputMode.TextInput);
}
});
video.setOnClickListener(v -> { video.setOnClickListener(v -> {
if (call.getTag() != null) { if (call.getTag() != null) {
@ -281,7 +302,9 @@ public class ChatMessageFragment extends AbsConversationFragment {
@Override @Override
public void onError(int status, String msg) { public void onError(int status, String msg) {
super.onError(status, msg); super.onError(status, msg);
sendAuthRequest(); if(status==1) {
sendAuthRequest();
}
} }
}); });
}); });
@ -328,7 +351,9 @@ public class ChatMessageFragment extends AbsConversationFragment {
@Override @Override
public void onError(int status, String msg) { public void onError(int status, String msg) {
super.onError(status, msg); super.onError(status, msg);
sendAuthRequest(); if(status==1) {
sendAuthRequest();
}
} }
}); });
}); });
@ -380,10 +405,10 @@ public class ChatMessageFragment extends AbsConversationFragment {
.getTargetUserInfo(Integer.parseInt(targetId), new HttpCallback<UserBean>() { .getTargetUserInfo(Integer.parseInt(targetId), new HttpCallback<UserBean>() {
@Override @Override
public void onSuccess(UserBean data) { public void onSuccess(UserBean data) {
if (data.getInfo().getName_auth() == 1) { if (data.getInfo().getName_auth() == 2) {
listener.onError(0, "");
} else {
listener.onSuccess("", null); listener.onSuccess("", null);
} else {
listener.onError(data.getInfo().getName_auth(), "");
} }
} }
@ -657,7 +682,14 @@ public class ChatMessageFragment extends AbsConversationFragment {
for (LocalMedia item : selectList) { for (LocalMedia item : selectList) {
String mimeType = item.getMimeType(); String mimeType = item.getMimeType();
if (mimeType.startsWith("image")) { if (mimeType.startsWith("image")) {
ImageMessage imageMessage = ImageMessage.obtain(Uri.parse(item.getPath()), sendOrigin); Uri uri;
//判断安卓版本小于10
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
uri= FileProvider.getUriForFile(mContext,mContext.getPackageName()+".fileprovider",new File(item.getPath()));
}else{
uri=Uri.parse(item.getPath());
}
ImageMessage imageMessage = ImageMessage.obtain(uri, sendOrigin);
Message message = Message.obtain(targetId, conversationType, imageMessage); Message message = Message.obtain(targetId, conversationType, imageMessage);
message.setSenderUserId(CommonAppConfig.getInstance().getUid()); message.setSenderUserId(CommonAppConfig.getInstance().getUid());
message.setObjectName("RC:ImgMsg"); message.setObjectName("RC:ImgMsg");
@ -714,35 +746,20 @@ public class ChatMessageFragment extends AbsConversationFragment {
} }
private void showRedPoint() { private void showRedPoint() {
OTONetManager.getInstance(mContext).getMessageSystemLists(new HttpCallback<List<OfficialNoticeBean>>() { RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback<Integer>() {
int point = 0;
@Override @Override
public void onSuccess(List<OfficialNoticeBean> data) { public void onSuccess(Integer integer) {
for (OfficialNoticeBean datum : data) { Integer tmp = integer + MsgMessageFragment.systemPoint;
point += datum.getNum(); if (tmp <= 0) {
numLayout.setVisibility(View.INVISIBLE);
return;
} }
RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback<Integer>() { numLayout.setVisibility(View.VISIBLE);
@Override num.setText(tmp + "");
public void onSuccess(Integer integer) {
Integer tmp = integer + point;
if (tmp <= 0) {
numLayout.setVisibility(View.INVISIBLE);
return;
}
numLayout.setVisibility(View.VISIBLE);
num.setText(tmp + "");
}
@Override
public void onError(RongIMClient.ErrorCode e) {
}
});
} }
@Override @Override
public void onError(String error) { public void onError(RongIMClient.ErrorCode e) {
} }
}); });
@ -757,7 +774,7 @@ public class ChatMessageFragment extends AbsConversationFragment {
@Subscribe @Subscribe
public void event(MessageMsgBusEvent event) { public void event(MessageMsgBusEvent event) {
if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_SYSTEM) { if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_POINT) {
if (event.getNum() <= 0) { if (event.getNum() <= 0) {
numLayout.setVisibility(View.INVISIBLE); numLayout.setVisibility(View.INVISIBLE);
return; return;

View File

@ -48,6 +48,13 @@ public class MessageInteractiveFragment extends AbsConversationFragment {
.getSystemMessageList(noticeBean.getType(), new HttpCallback<List<SystemMessageBean>>() { .getSystemMessageList(noticeBean.getType(), new HttpCallback<List<SystemMessageBean>>() {
@Override @Override
public void onSuccess(List<SystemMessageBean> data) { public void onSuccess(List<SystemMessageBean> data) {
if(data.isEmpty()){
mList.setVisibility(View.GONE);
findViewById(R.id.view_empty).setVisibility(View.VISIBLE);
return;
}
mList.setVisibility(View.VISIBLE);
findViewById(R.id.view_empty).setVisibility(View.GONE);
List<UiMessage> list = new ArrayList<>(); List<UiMessage> list = new ArrayList<>();
for (SystemMessageBean item : data) { for (SystemMessageBean item : data) {
SystemNoticeUiMessage message = new SystemNoticeUiMessage(new Message()); SystemNoticeUiMessage message = new SystemNoticeUiMessage(new Message());

View File

@ -46,6 +46,13 @@ public class MessageNoticeFragment extends AbsConversationFragment {
.getSystemMessageList(noticeBean.getType(), new HttpCallback<List<SystemMessageBean>>() { .getSystemMessageList(noticeBean.getType(), new HttpCallback<List<SystemMessageBean>>() {
@Override @Override
public void onSuccess(List<SystemMessageBean> data) { public void onSuccess(List<SystemMessageBean> data) {
if(data.isEmpty()){
mList.setVisibility(View.GONE);
findViewById(R.id.view_empty).setVisibility(View.VISIBLE);
return;
}
mList.setVisibility(View.VISIBLE);
findViewById(R.id.view_empty).setVisibility(View.GONE);
List<UiMessage> list = new ArrayList<>(); List<UiMessage> list = new ArrayList<>();
for (SystemMessageBean item : data) { for (SystemMessageBean item : data) {
SystemNoticeUiMessage message = new SystemNoticeUiMessage(new Message()); SystemNoticeUiMessage message = new SystemNoticeUiMessage(new Message());

View File

@ -1,7 +1,6 @@
package com.shayu.onetoone.activity.fragments.message; package com.shayu.onetoone.activity.fragments.message;
import android.graphics.Color; import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.text.SpannableString; import android.text.SpannableString;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -12,15 +11,12 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.fastjson.JSONObject;
import com.shayu.onetoone.R; import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.fragments.BaseFragment; import com.shayu.onetoone.activity.fragments.BaseFragment;
import com.shayu.onetoone.adapter.MsgMessageRecyclerViewAdapter; import com.shayu.onetoone.adapter.MsgMessageRecyclerViewAdapter;
import com.shayu.onetoone.bean.HomeItemBean; import com.shayu.onetoone.bean.HomeItemBean;
import com.shayu.onetoone.bean.OfficialNoticeBean;
import com.shayu.onetoone.event.MessageMsgBusEvent; import com.shayu.onetoone.event.MessageMsgBusEvent;
import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.OTONetManager;
import com.yanzhenjie.recyclerview.OnItemClickListener;
import com.yanzhenjie.recyclerview.OnItemMenuClickListener; import com.yanzhenjie.recyclerview.OnItemMenuClickListener;
import com.yanzhenjie.recyclerview.OnItemMenuStateListener; import com.yanzhenjie.recyclerview.OnItemMenuStateListener;
import com.yanzhenjie.recyclerview.SwipeMenuBridge; import com.yanzhenjie.recyclerview.SwipeMenuBridge;
@ -31,7 +27,6 @@ import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.WordUtil;
import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.Subscribe;
@ -55,8 +50,6 @@ import io.rong.imkit.widget.refresh.listener.OnRefreshListener;
import io.rong.imkit.widget.refresh.wrapper.RongRefreshHeader; import io.rong.imkit.widget.refresh.wrapper.RongRefreshHeader;
import io.rong.imlib.RongIMClient; import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation; import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.Message;
import io.rong.imlib.model.UserInfo;
/** /**
* 消息-好友 * 消息-好友
@ -238,7 +231,7 @@ public class MsgFriendFragment extends BaseFragment implements BaseAdapter.OnIte
@Subscribe @Subscribe
public void event(MessageMsgBusEvent event) { public void event(MessageMsgBusEvent event) {
if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_SYSTEM) { if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_POINT) {
page = 1; page = 1;
initData(); initData();
} }

View File

@ -1,7 +1,6 @@
package com.shayu.onetoone.activity.fragments.message; package com.shayu.onetoone.activity.fragments.message;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
@ -24,19 +23,16 @@ import com.shayu.onetoone.bean.OfficialNoticeBean;
import com.shayu.onetoone.bean.TargetUserInfoBean; import com.shayu.onetoone.bean.TargetUserInfoBean;
import com.shayu.onetoone.event.MessageMsgBusEvent; import com.shayu.onetoone.event.MessageMsgBusEvent;
import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.RouteManager;
import com.yanzhenjie.recyclerview.OnItemMenuClickListener; import com.yanzhenjie.recyclerview.OnItemMenuClickListener;
import com.yanzhenjie.recyclerview.OnItemMenuStateListener; import com.yanzhenjie.recyclerview.OnItemMenuStateListener;
import com.yanzhenjie.recyclerview.SwipeMenuBridge; import com.yanzhenjie.recyclerview.SwipeMenuBridge;
import com.yanzhenjie.recyclerview.SwipeMenuCreator; import com.yanzhenjie.recyclerview.SwipeMenuCreator;
import com.yanzhenjie.recyclerview.SwipeMenuItem; import com.yanzhenjie.recyclerview.SwipeMenuItem;
import com.yanzhenjie.recyclerview.SwipeRecyclerView; import com.yanzhenjie.recyclerview.SwipeRecyclerView;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.RandomUtil;
import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.SpUtil;
import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
@ -90,6 +86,7 @@ import io.rong.imlib.model.UserInfo;
* copy {@link io.rong.imkit.conversationlist.ConversationListFragment} * copy {@link io.rong.imkit.conversationlist.ConversationListFragment}
*/ */
public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnItemClickListener { public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnItemClickListener {
public static int systemPoint = 0;
private static final String TAG = MsgMessageFragment.class.getSimpleName(); private static final String TAG = MsgMessageFragment.class.getSimpleName();
SwipeRecyclerView mList; SwipeRecyclerView mList;
SmartRefreshLayout mRefreshLayout; SmartRefreshLayout mRefreshLayout;
@ -174,13 +171,13 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
private void initSystemNotice() { private void initSystemNotice() {
systemPoint = 0;
OTONetManager.getInstance(mContext) OTONetManager.getInstance(mContext)
.getMessageSystemLists(new HttpCallback<List<OfficialNoticeBean>>() { .getMessageSystemLists(new HttpCallback<List<OfficialNoticeBean>>() {
@Override @Override
public void onSuccess(List<OfficialNoticeBean> data) { public void onSuccess(List<OfficialNoticeBean> data) {
for (OfficialNoticeBean datum : data) { for (OfficialNoticeBean datum : data) {
systemPoint += datum.getNum();
if (datum.getType() == 3) { if (datum.getType() == 3) {
SpUtil.setStringValue("customerService", JSONObject.toJSONString(datum)); SpUtil.setStringValue("customerService", JSONObject.toJSONString(datum));
continue; continue;
@ -196,6 +193,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
} }
onConversationListRefresh(mRefreshLayout); onConversationListRefresh(mRefreshLayout);
mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetChanged();
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_POINT, -1));
} }
@Override @Override
@ -209,7 +207,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
} }
private SingleConversation setTopData(String title, String content, long time, String avatar, int num, int id, String exp) { private SingleConversation setTopData(String title, String content, long time, String avatar, int num, int id, String exp) {
if(StringUtil.isEmpty(content)){ if (StringUtil.isEmpty(content)) {
content = ""; content = "";
} }
SingleConversation conversation = new SingleConversation(getContext(), new Conversation()); SingleConversation conversation = new SingleConversation(getContext(), new Conversation());
@ -241,7 +239,9 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
* 全部标记已读 * 全部标记已读
*/ */
public void allRead() { public void allRead() {
// clearTopData(); // clearTopData();
OTONetManager.getInstance(mContext)
.messageReadAll(null);
RongCoreClient.getInstance().getUnreadConversationList(new IRongCoreCallback.ResultCallback<List<Conversation>>() { RongCoreClient.getInstance().getUnreadConversationList(new IRongCoreCallback.ResultCallback<List<Conversation>>() {
@Override @Override
public void onSuccess(List<Conversation> conversations) { public void onSuccess(List<Conversation> conversations) {
@ -350,7 +350,9 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
initSystemNotice();
if (this.mConversationListViewModel != null) { if (this.mConversationListViewModel != null) {
mConversationListViewModel.getConversationList(false, true, 0L);
this.mConversationListViewModel.clearAllNotification(); this.mConversationListViewModel.clearAllNotification();
} }
@ -426,6 +428,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
protected void onConversationListRefresh(RefreshLayout refreshLayout) { protected void onConversationListRefresh(RefreshLayout refreshLayout) {
if (this.mConversationListViewModel != null) { if (this.mConversationListViewModel != null) {
Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_POINT, -1));
this.mConversationListViewModel.getConversationList(false, true, 0L); this.mConversationListViewModel.getConversationList(false, true, 0L);
} }
} }
@ -489,7 +492,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putInt("model", noticeBean.getType()); bundle.putInt("model", noticeBean.getType());
bundle.putString("data", JSONObject.toJSONString(noticeBean)); bundle.putString("data", JSONObject.toJSONString(noticeBean));
RouteUtils.routeToConversationActivity(getContext(), conversationIdentifier,bundle); RouteUtils.routeToConversationActivity(getContext(), conversationIdentifier, bundle);
} }
} }

View File

@ -93,6 +93,13 @@ public class SystemMessageFragment extends AbsConversationFragment {
.getSystemMessageList(SystemMessageBean.TYPE_SYSTEM, new HttpCallback<List<SystemMessageBean>>() { .getSystemMessageList(SystemMessageBean.TYPE_SYSTEM, new HttpCallback<List<SystemMessageBean>>() {
@Override @Override
public void onSuccess(List<SystemMessageBean> data) { public void onSuccess(List<SystemMessageBean> data) {
if(data.isEmpty()){
mList.setVisibility(View.GONE);
findViewById(R.id.view_empty).setVisibility(View.VISIBLE);
return;
}
mList.setVisibility(View.VISIBLE);
findViewById(R.id.view_empty).setVisibility(View.GONE);
for (SystemMessageBean item : data) { for (SystemMessageBean item : data) {
sendMessage(item); sendMessage(item);
} }

View File

@ -87,7 +87,7 @@ public class CompleteActivity extends AbsOTOActivity {
} }
private void initCamera() { private void initCamera() {
cameraUtil = new ProcessImageUtil(this, "com.shayu.onetoone.fileprovider"); cameraUtil = new ProcessImageUtil(this, "${packageName}.fileprovider");
cameraUtil.setImageResultCallback(new ImageResultCallback() { cameraUtil.setImageResultCallback(new ImageResultCallback() {
@Override @Override
public void beforeCamera() { public void beforeCamera() {

View File

@ -18,51 +18,29 @@ import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.DeviceUtils; import com.blankj.utilcode.util.DeviceUtils;
import com.blankj.utilcode.util.GsonUtils;
import com.fm.openinstall.OpenInstall; import com.fm.openinstall.OpenInstall;
import com.fm.openinstall.listener.AppInstallAdapter; import com.fm.openinstall.listener.AppInstallAdapter;
import com.fm.openinstall.model.AppData; import com.fm.openinstall.model.AppData;
import com.lzy.okgo.model.Response;
import com.shayu.onetoone.R; import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.AbsOTOActivity; import com.shayu.onetoone.activity.AbsOTOActivity;
import com.shayu.onetoone.activity.MainActivity;
import com.shayu.onetoone.bean.JoinAnchorBean;
import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.RouteManager; import com.shayu.onetoone.manager.RouteManager;
import com.shayu.onetoone.utils.MainHttpUtil;
import com.yunbao.common.CommonAppConfig; import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.Constants; import com.yunbao.common.Constants;
import com.yunbao.common.HtmlConfig; import com.yunbao.common.HtmlConfig;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.activity.WebViewActivity; import com.yunbao.common.activity.WebViewActivity;
import com.yunbao.common.bean.ConfigBean; import com.yunbao.common.bean.ConfigBean;
import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.bean.UserAreaBean; import com.yunbao.common.bean.UserAreaBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.fragment.LoadingDialog; import com.yunbao.common.fragment.LoadingDialog;
import com.yunbao.common.http.CommonHttpConsts;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.http.JsonBean;
import com.yunbao.common.http.LiveHttpUtil;
import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.CommonCallback;
import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.NoviceInstructorManager;
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager; import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake; import com.yunbao.common.views.weight.ViewClicksAntiShake;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode; import org.greenrobot.eventbus.ThreadMode;
@ -160,7 +138,7 @@ public class LoginActivity extends AbsOTOActivity {
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
String phone = mEditPhone.getText().toString(); String phone = mEditPhone.getText().toString();
String pwd = mEditPwd.getText().toString(); String pwd = mEditPwd.getText().toString();
mBtnLogin.setEnabled(!TextUtils.isEmpty(phone) && !TextUtils.isEmpty(pwd)); // mBtnLogin.setEnabled(!TextUtils.isEmpty(phone) && !TextUtils.isEmpty(pwd));
} }
@Override @Override
@ -373,6 +351,6 @@ public class LoginActivity extends AbsOTOActivity {
@Override @Override
public void onBackPressed() { public void onBackPressed() {
super.onBackPressed(); super.onBackPressed();
RouteUtil.forwardEntry2(); RouteManager.forwardEntryActivity();
} }
} }

View File

@ -104,6 +104,10 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis
CallClientManager.getManager().removeOnVoIPCallListener(onCallStatusListener); CallClientManager.getManager().removeOnVoIPCallListener(onCallStatusListener);
} }
@Override
public void onBackPressed() {
}
private void initView() { private void initView() {
// 获取全局变量 // 获取全局变量
vague = findViewById(R.id.vague); vague = findViewById(R.id.vague);

View File

@ -149,7 +149,7 @@ public class AuthActivity extends AbsActivity {
} }
private void initCamera() { private void initCamera() {
cameraUtil = new ProcessImageUtil(this, "com.shayu.onetoone.fileprovider"); cameraUtil = new ProcessImageUtil(this, "${packageName}.fileprovider");
cameraUtil.setImageResultCallback(new ImageResultCallback() { cameraUtil.setImageResultCallback(new ImageResultCallback() {
@Override @Override
public void beforeCamera() { public void beforeCamera() {

View File

@ -172,7 +172,7 @@ public class AuthBloggerActivity extends AbsActivity {
}; };
private void initCamera() { private void initCamera() {
cameraUtil = new ProcessImageUtil(this, "com.shayu.onetoone.fileprovider"); cameraUtil = new ProcessImageUtil(this, "${packageName}.fileprovider");
cameraUtil.setImageResultCallback(new ImageResultCallback() { cameraUtil.setImageResultCallback(new ImageResultCallback() {
@Override @Override
public void beforeCamera() { public void beforeCamera() {

View File

@ -138,7 +138,7 @@ public class EditProfileActivity extends AbsActivity {
} }
private void initCamera() { private void initCamera() {
cameraUtil = new ProcessImageUtil(this, "com.shayu.onetoone.fileprovider"); cameraUtil = new ProcessImageUtil(this, "${packageName}.fileprovider");
cameraUtil.setImageResultCallback(new ImageResultCallback() { cameraUtil.setImageResultCallback(new ImageResultCallback() {
@Override @Override
public void beforeCamera() { public void beforeCamera() {

View File

@ -57,6 +57,9 @@ public class OfficialNoticeBean extends BaseModel {
} }
public int getNum() { public int getNum() {
if (num < 0) {
num = 0;
}
return num; return num;
} }

View File

@ -69,7 +69,7 @@ public class UserBean extends BaseModel {
private int b_y; private int b_y;
private int b_ym; private int b_ym;
private int b_ymd; private int b_ymd;
private int name_auth; private int name_auth;//1 未提交 2 已认证 3已提交
private long name_auth_time; private long name_auth_time;
private String auth_front; private String auth_front;
private String auth_back; private String auth_back;

View File

@ -2,7 +2,8 @@ package com.shayu.onetoone.event;
public class MessageMsgBusEvent extends AbsBusEvent { public class MessageMsgBusEvent extends AbsBusEvent {
public static final int TYPE_ALL_READ = 0; public static final int TYPE_ALL_READ = 0;
public static final int TYPE_UPDATE_SYSTEM=1; public static final int TYPE_UPDATE_POINT =1;
public static final int TYPE_UPDATE_SYSTEM =2;
private int num; private int num;

View File

@ -85,6 +85,37 @@ public class CallClientManager {
public void addOnVoIPCallListener(OnCallStatusListener statusListener) { public void addOnVoIPCallListener(OnCallStatusListener statusListener) {
listeners.add(statusListener); listeners.add(statusListener);
RongCallClient.getInstance().setVoIPCallListener(new CallStatusListener(new OnCallStatusListener() {
@Override
public void onCallWait(SurfaceView localVideo) {
for (OnCallStatusListener listener : listeners) {
listener.onCallWait(localVideo);
}
}
@Override
public void onCallStart(String userId, SurfaceView remoteVideo) {
for (OnCallStatusListener listener : listeners) {
listener.onCallStart(userId, remoteVideo);
}
startTimer(null);
}
@Override
public void onCallEnd() {
for (OnCallStatusListener listener : listeners) {
listener.onCallEnd();
}
endTimer();
}
@Override
public void onStartFirstFrame() {
for (OnCallStatusListener listener : listeners) {
listener.onStartFirstFrame();
}
}
}));
} }
public void removeOnVoIPCallListener(OnCallStatusListener statusListener) { public void removeOnVoIPCallListener(OnCallStatusListener statusListener) {
@ -193,37 +224,6 @@ public class CallClientManager {
} }
public void acceptCall(String callId) { public void acceptCall(String callId) {
RongCallClient.getInstance().setVoIPCallListener(new CallStatusListener(new OnCallStatusListener() {
@Override
public void onCallWait(SurfaceView localVideo) {
for (OnCallStatusListener listener : listeners) {
listener.onCallWait(localVideo);
}
}
@Override
public void onCallStart(String userId, SurfaceView remoteVideo) {
for (OnCallStatusListener listener : listeners) {
listener.onCallStart(userId, remoteVideo);
}
startTimer(null);
}
@Override
public void onCallEnd() {
for (OnCallStatusListener listener : listeners) {
listener.onCallEnd();
}
endTimer();
}
@Override
public void onStartFirstFrame() {
for (OnCallStatusListener listener : listeners) {
listener.onStartFirstFrame();
}
}
}));
RongCallClient.getInstance().acceptCall(callId); RongCallClient.getInstance().acceptCall(callId);
} }

View File

@ -88,7 +88,7 @@ public class OTONetManager {
@Override @Override
public void accept(ResponseModel<IMLoginModel> imLoginModelResponseModel) throws Exception { public void accept(ResponseModel<IMLoginModel> imLoginModelResponseModel) throws Exception {
if (callback != null) { if (callback != null) {
if(imLoginModelResponseModel.isError()){ if (imLoginModelResponseModel.isError()) {
JSONObject jsonSrc = imLoginModelResponseModel.getSrcJSONOBject(); JSONObject jsonSrc = imLoginModelResponseModel.getSrcJSONOBject();
callback.onError(jsonSrc.getJSONObject("data").getString("msg")); callback.onError(jsonSrc.getJSONObject("data").getString("msg"));
return; return;
@ -1370,7 +1370,7 @@ public class OTONetManager {
} }
public void getMenu( HttpCallback<List<UserItemBean>> callback) { public void getMenu(HttpCallback<List<UserItemBean>> callback) {
API.get().otoApi(mContext). API.get().otoApi(mContext).
getMenu() getMenu()
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
@ -1394,5 +1394,27 @@ public class OTONetManager {
}).isDisposed(); }).isDisposed();
} }
public void messageReadAll(HttpCallback<HttpCallbackModel> callback) {
API.get().otoApi(mContext).
messageReadAll()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(listResponseModel -> {
if (listResponseModel.getData().getCode() == 0) {
if(callback!=null) {
callback.onSuccess(new HttpCallbackModel(listResponseModel.getData().getCode(), listResponseModel.getData().getMsg()));
}
} else {
if(callback!=null) {
callback.onError(listResponseModel.getData().getMsg());
}
}
}, throwable -> {
if (callback != null) {
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
}
}).isDisposed();
}
} }

View File

@ -363,6 +363,8 @@ public interface OneToOneApi {
*/ */
@GET("/api/public/?service=Friendappinfos.getMenu") @GET("/api/public/?service=Friendappinfos.getMenu")
Observable<ResponseModel<List<UserItemBean>>> getMenu(); Observable<ResponseModel<List<UserItemBean>>> getMenu();
@GET("/api/public/?service=Message.setMessageReadAll")
Observable<ResponseModel<List<BaseModel>>> messageReadAll();
} }

View File

@ -0,0 +1,15 @@
package com.shayu.onetoone.utils;
import java.util.ArrayList;
import java.util.List;
import io.rong.imkit.conversation.extension.DefaultExtensionConfig;
import io.rong.imkit.conversation.extension.component.plugin.IPluginModule;
import io.rong.imlib.model.Conversation;
public class ChatPluginExtensionConfig extends DefaultExtensionConfig {
@Override
public List<IPluginModule> getPluginModules(Conversation.ConversationType conversationType, String targetId) {
return new ArrayList<>();
}
}

View File

@ -10,6 +10,7 @@ import com.yunbao.common.utils.ToastUtil;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import io.rong.imkit.conversation.extension.RongExtension; import io.rong.imkit.conversation.extension.RongExtension;
public abstract class AbsInputPanel { public abstract class AbsInputPanel {
@ -19,6 +20,7 @@ public abstract class AbsInputPanel {
String targetId; String targetId;
ViewGroup rootLayout; ViewGroup rootLayout;
View rootView; View rootView;
boolean isShow = false;
public AbsInputPanel(String targetId, FragmentActivity mContext, RongExtension mRongExtension, int layout) { public AbsInputPanel(String targetId, FragmentActivity mContext, RongExtension mRongExtension, int layout) {
this.mContext = mContext; this.mContext = mContext;
@ -38,16 +40,23 @@ public abstract class AbsInputPanel {
} }
public int show() { public int show() {
if (rootLayout.getVisibility() == View.VISIBLE) { rootLayout.removeAllViews();
if (isShow) {
rootLayout.setVisibility(View.GONE); rootLayout.setVisibility(View.GONE);
isShow = false;
return View.GONE; return View.GONE;
} }
rootLayout.removeAllViews(); isShow = true;
rootLayout.addView(rootView); rootLayout.addView(rootView);
rootLayout.setVisibility(View.VISIBLE); rootLayout.setVisibility(View.VISIBLE);
return View.VISIBLE; return View.VISIBLE;
} }
public void hide() {
rootLayout.removeAllViews();
rootLayout.setVisibility(View.GONE);
}
public abstract void init(View viewGroup); public abstract void init(View viewGroup);
} }

View File

@ -1,5 +1,6 @@
package com.shayu.onetoone.view; package com.shayu.onetoone.view;
import android.app.Dialog;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
@ -16,6 +17,7 @@ import com.shayu.onetoone.bean.PurseBean;
import com.shayu.onetoone.bean.SendConsumeBean; import com.shayu.onetoone.bean.SendConsumeBean;
import com.shayu.onetoone.dialog.TipsDialog; import com.shayu.onetoone.dialog.TipsDialog;
import com.shayu.onetoone.event.MoneyUpdateEvent; import com.shayu.onetoone.event.MoneyUpdateEvent;
import com.shayu.onetoone.listener.OnDialogClickListener;
import com.shayu.onetoone.listener.OnSendMessageListener; import com.shayu.onetoone.listener.OnSendMessageListener;
import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.SendMessageManager; import com.shayu.onetoone.manager.SendMessageManager;
@ -96,8 +98,15 @@ public class MsgInputPanelForGift extends AbsInputPanel {
public void onError(int status, String msg) { public void onError(int status, String msg) {
super.onError(status, msg); super.onError(status, msg);
new TipsDialog(mContext) new TipsDialog(mContext)
.setTitle(WordUtil.getNewString(R.string.not_money)) .setTitle(WordUtil.getNewString(R.string.gift_not_money))
.setApplyText(WordUtil.getNewString(R.string.dialog_apply)) .setApplyText(WordUtil.getNewString(R.string.money_apply))
.setOnDialogClickListener(new OnDialogClickListener() {
@Override
public void onApply(Dialog dialog) {
super.onApply(dialog);
ToastUtil.showDebug("沒有H5頁面");
}
})
.showDialog(); .showDialog();
} }
}); });

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -132,7 +132,7 @@
android:layout_width="18dp" android:layout_width="18dp"
android:layout_height="15dp" android:layout_height="15dp"
android:src="@mipmap/diamond" android:src="@mipmap/diamond"
android:visibility="invisible" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
<TextView <TextView

View File

@ -113,5 +113,14 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<include
android:id="@+id/view_empty"
layout="@layout/view_inter_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -112,5 +112,14 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<include
android:id="@+id/view_empty"
layout="@layout/view_notice_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -55,12 +55,14 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal"> 0
<TextView <TextView
android:id="@+id/user_name" android:id="@+id/user_name"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
tools:text="TextView" tools:text="TextView"
android:textColor="#333333" android:textColor="#333333"
android:textSize="16sp" android:textSize="16sp"

View File

@ -51,7 +51,6 @@
android:id="@+id/rc_unread_message_count" android:id="@+id/rc_unread_message_count"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="@dimen/rc_unread_height" android:layout_height="@dimen/rc_unread_height"
android:layout_marginStart="3dp"
android:layout_marginTop="@dimen/rc_margin_size_30" android:layout_marginTop="@dimen/rc_margin_size_30"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:background="@drawable/rc_unread_msg_bg_style" android:background="@drawable/rc_unread_msg_bg_style"
@ -72,7 +71,6 @@
android:id="@+id/rc_mention_message_count" android:id="@+id/rc_mention_message_count"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="@dimen/rc_unread_height" android:layout_height="@dimen/rc_unread_height"
android:layout_marginStart="3dp"
android:layout_marginTop="@dimen/rc_margin_size_80" android:layout_marginTop="@dimen/rc_margin_size_80"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:background="@drawable/rc_unread_msg_bg_style" android:background="@drawable/rc_unread_msg_bg_style"

View File

@ -9,15 +9,15 @@
<ImageView <ImageView
android:id="@+id/input_panel_voice_toggle" android:id="@+id/input_panel_voice_toggle"
android:layout_width="wrap_content" android:layout_width="81dp"
android:layout_height="wrap_content" android:layout_height="87dp"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
app:layout_constraintBottom_toTopOf="@+id/linearLayout2" app:layout_constraintBottom_toTopOf="@+id/linearLayout2"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/rc_ext_toggle_voice" /> app:srcCompat="@drawable/rc_ext_toggle_voice1" />
<EditText <EditText
android:id="@+id/edit_btn" android:id="@+id/edit_btn"
@ -153,11 +153,11 @@
<ImageView <ImageView
android:id="@+id/input_panel_add_btn" android:id="@+id/input_panel_add_btn"
android:background="@color/yellow"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:visibility="gone" android:background="@color/yellow"
android:src="@mipmap/ic_msg_add" /> android:src="@mipmap/ic_msg_add"
android:visibility="gone" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout

View File

@ -43,6 +43,7 @@
android:gravity="center" android:gravity="center"
android:paddingBottom="5dp" android:paddingBottom="5dp"
android:textColor="#ffffff" android:textColor="#ffffff"
android:visibility="gone"
android:textSize="12dp" android:textSize="12dp"
app:layout_constraintBottom_toBottomOf="@id/rc_refresh" app:layout_constraintBottom_toBottomOf="@id/rc_refresh"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@ -122,4 +123,15 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />
<include
android:id="@+id/view_empty"
layout="@layout/view_system_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/img_mess" />
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/view_friend_empty_text"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@+id/imageView7"
app:layout_constraintHorizontal_bias="0.433"
app:layout_constraintStart_toStartOf="@+id/imageView7"
app:layout_constraintTop_toBottomOf="@+id/imageView7" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/img_no_new" />
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/view_friend_empty_text"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@+id/imageView7"
app:layout_constraintHorizontal_bias="0.433"
app:layout_constraintStart_toStartOf="@+id/imageView7"
app:layout_constraintTop_toBottomOf="@+id/imageView7" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/img_on_official" />
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/view_friend_empty_text"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@+id/imageView7"
app:layout_constraintHorizontal_bias="0.433"
app:layout_constraintStart_toStartOf="@+id/imageView7"
app:layout_constraintTop_toBottomOf="@+id/imageView7" />
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@ -35,11 +35,11 @@
<string name="choose_img_max">最多選&#160;%1$s&#160;張圖片哦</string> <string name="choose_img_max">最多選&#160;%1$s&#160;張圖片哦</string>
<string name="view_friend_empty_text">暫無好友消息~</string> <string name="view_friend_empty_text">暫無好友消息~</string>
<string name="not_money">餘額不足</string> <string name="not_money">餘額不足</string>
<string name="not_money_tips">文字聊天每條續消耗%s鑽您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_tips">文字聊天每條續消耗%s鑽您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_video_tips">與TA視頻聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_video_tips">與TA視頻聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_audio_tips">與TA語音聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_audio_tips">與TA語音聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_text_tips">聊天每條續消耗%s鑽您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_text_tips">聊天每條續消耗%s鑽您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="dialog_cancel_tip">離開</string> <string name="dialog_cancel_tip">離開</string>
<string name="dialog_to_money_tip">去充值</string> <string name="dialog_to_money_tip">去充值</string>
<string name="chat_video_tips">發起視頻通話\n%s鑽/分鐘</string> <string name="chat_video_tips">發起視頻通話\n%s鑽/分鐘</string>
@ -263,4 +263,5 @@
<string name="dialog_call_prop_apply">收下獎勵</string> <string name="dialog_call_prop_apply">收下獎勵</string>
<string name="toast_call_not_unlock">發送任意禮物后即可解鎖</string> <string name="toast_call_not_unlock">發送任意禮物后即可解鎖</string>
<string name="gift_not_money">余额不足,请充值后再进行尝试吧~</string>
</resources> </resources>

View File

@ -35,11 +35,11 @@
<string name="choose_img_max">最多選&#160;%1$s&#160;張圖片哦</string> <string name="choose_img_max">最多選&#160;%1$s&#160;張圖片哦</string>
<string name="view_friend_empty_text">暫無好友消息~</string> <string name="view_friend_empty_text">暫無好友消息~</string>
<string name="not_money">餘額不足</string> <string name="not_money">餘額不足</string>
<string name="not_money_tips">文字聊天每條續消耗%s鑽您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_tips">文字聊天每條續消耗%s鑽您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_video_tips">與TA視頻聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_video_tips">與TA視頻聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_audio_tips">與TA語音聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_audio_tips">與TA語音聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_text_tips">聊天每條續消耗%s鑽您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_text_tips">聊天每條續消耗%s鑽您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="dialog_cancel_tip">離開</string> <string name="dialog_cancel_tip">離開</string>
<string name="dialog_to_money_tip">去充值</string> <string name="dialog_to_money_tip">去充值</string>
<string name="chat_video_tips">發起視頻通話\n%s鑽/分鐘</string> <string name="chat_video_tips">發起視頻通話\n%s鑽/分鐘</string>
@ -263,4 +263,5 @@
<string name="dialog_call_prop_apply">收下獎勵</string> <string name="dialog_call_prop_apply">收下獎勵</string>
<string name="toast_call_not_unlock">發送任意禮物后即可解鎖</string> <string name="toast_call_not_unlock">發送任意禮物后即可解鎖</string>
<string name="gift_not_money">余额不足,请充值后再进行尝试吧~</string>
</resources> </resources>

View File

@ -36,12 +36,12 @@
<string name="view_friend_empty_text">friend empty</string> <string name="view_friend_empty_text">friend empty</string>
<string name="not_money">餘額不足</string> <string name="not_money">餘額不足</string>
<string name="not_money_tips">"文字聊天每條續消耗%s鑽您可通過充值獲取更多鑽石,以便繼續聊天"</string> <string name="not_money_tips">"文字聊天每條續消耗%s鑽您可通過充值獲取更多星幣以便繼續聊天"</string>
<string name="not_money_video_tips">與TA視頻聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_video_tips">與TA視頻聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_audio_tips">與TA语音聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_audio_tips">與TA语音聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_text_tips">聊天每條續消耗%s鑽您可通過充值獲取更多鑽石,以便繼續聊天</string> <string name="not_money_text_tips">聊天每條續消耗%s鑽您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="dialog_cancel_tip">離開</string> <string name="dialog_cancel_tip">離開</string>
<string name="dialog_to_money_tip">去充值</string> <string name="dialog_to_money_tip">去充值</string>
<string name="chat_video_tips">发起视频通话\n%s钻/分钟</string> <string name="chat_video_tips">发起视频通话\n%s钻/分钟</string>
@ -265,4 +265,5 @@
<string name="dialog_call_prop_apply">收下獎勵</string> <string name="dialog_call_prop_apply">收下獎勵</string>
<string name="toast_call_not_unlock">發送任意禮物后即可解鎖</string> <string name="toast_call_not_unlock">發送任意禮物后即可解鎖</string>
<string name="gift_not_money">余额不足,请充值后再进行尝试吧~</string>
</resources> </resources>

View File

@ -3,8 +3,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" android:visibility="gone"
android:layout_height="wrap_content"> tools:visibility="visible">
<ImageView <ImageView
android:id="@+id/input_panel_voice_toggle" android:id="@+id/input_panel_voice_toggle"
@ -12,7 +13,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginBottom="6.5dp" android:layout_marginBottom="6.5dp"
android:src="@drawable/rc_ext_toggle_voice" android:src="@drawable/rc_ext_toggle_voice1"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -32,7 +33,8 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/input_panel_emoji_btn" app:layout_constraintEnd_toStartOf="@+id/input_panel_emoji_btn"
app:layout_constraintStart_toEndOf="@+id/input_panel_voice_toggle" app:layout_constraintStart_toEndOf="@+id/input_panel_voice_toggle"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
<TextView <TextView
android:id="@+id/press_to_speech_btn" android:id="@+id/press_to_speech_btn"
@ -40,8 +42,8 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="@dimen/rc_ext_input_panel_editbox_height" android:layout_height="@dimen/rc_ext_input_panel_editbox_height"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="5dp"
android:layout_marginTop="6.5dp" android:layout_marginTop="6.5dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="6.5dp" android:layout_marginBottom="6.5dp"
android:background="@drawable/rc_ext_voice_idle_button" android:background="@drawable/rc_ext_voice_idle_button"
android:gravity="center" android:gravity="center"
@ -59,12 +61,12 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6.5dp" android:layout_marginTop="6.5dp"
android:layout_marginBottom="6.5dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:layout_marginBottom="6.5dp"
android:src="@drawable/rc_ext_input_panel_emoji" android:src="@drawable/rc_ext_input_panel_emoji"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toStartOf="@+id/input_panel_add_or_send"
app:layout_constraintEnd_toStartOf="@+id/input_panel_add_or_send" /> app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/input_panel_add_or_send" android:id="@+id/input_panel_add_or_send"