diff --git a/OneToOne/src/main/AndroidManifest.xml b/OneToOne/src/main/AndroidManifest.xml index 79a59b54d..4f1f2dfc4 100644 --- a/OneToOne/src/main/AndroidManifest.xml +++ b/OneToOne/src/main/AndroidManifest.xml @@ -163,6 +163,9 @@ + { + follow(); + }); + + cancelButton.setOnClickListener(v -> { + RouteManager.forwardActivity(extras.getString("path"), extras); + }); + applyButton.setOnClickListener(v -> { + }); + findViewById(R.id.close).setOnClickListener(v -> finish()); + } + + private void follow() { + OTONetManager.getInstance(mContext) + .follow(user.getUser().getId() + "", new HttpCallback() { + @Override + public void onSuccess(FollowBean data) { + ToastUtil.show(WordUtil.getNewString(R.string.system_tip_success)); + followButton.setVisibility(View.GONE); + } + + @Override + public void onError(String error) { + + } + }); + } + +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/HomeSearchActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/HomeSearchActivity.java index c294bb216..2560a5c53 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/HomeSearchActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/HomeSearchActivity.java @@ -76,7 +76,7 @@ public class HomeSearchActivity extends AbsOTOActivity { searchBtn.setOnClickListener(v -> search(edit.getText().toString())); - edit.setText(getIntent().getBundleExtra("bundle").getString("search")); + edit.setText(getIntent().getExtras().getString("search")); search(edit.getText().toString()); refresh(); } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/MatchingActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/MatchingActivity.java index 504c94f4a..26a21006b 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/MatchingActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/MatchingActivity.java @@ -94,7 +94,7 @@ public class MatchingActivity extends AbsOTOActivity { } }).showDialog(); }); - Bundle bundle = getIntent().getBundleExtra("bundle"); + Bundle bundle = getIntent().getExtras(); if (bundle != null) { String data = bundle.getString("data"); bundle.putInt("type",ChatActivity.CALL_CHAT_TYPE_MATCH); diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java index c96f41243..d7ea5b353 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java @@ -25,6 +25,7 @@ import com.makeramen.roundedimageview.RoundedImageView; import com.shayu.onetoone.R; import com.shayu.onetoone.adapter.MsgChatMessageListAdapter; import com.shayu.onetoone.bean.FollowBean; +import com.shayu.onetoone.bean.GiftBean; import com.shayu.onetoone.bean.MessageChatAuthContent; import com.shayu.onetoone.bean.MessageChatTipsContent; import com.shayu.onetoone.bean.MessageConsumeConfigBean; @@ -46,6 +47,7 @@ import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.interfaces.ImageResultCallback; import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.utils.ProcessImageUtil; import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.StringUtil; @@ -197,6 +199,16 @@ public class ChatMessageFragment extends AbsConversationFragment { assert mVoiceToggleBtn != null; audio = new MsgInputPanelForAudio(targetId, getActivity(), mRongExtension); giftPanel = new MsgInputPanelForGift(targetId, getActivity(), mRongExtension); + giftPanel.setOnItemClickListener(new OnItemClickListener() { + @Override + public void onItemClick(GiftBean bean, int position) { + if(call.getTag()!=null){ + call.setTag(null); + call.setImageResource(R.mipmap.ic_msg_call); + video.setImageResource(R.mipmap.ic_msg_video); + } + } + }); mVoiceToggleBtn.setOnClickListener(view -> { audio.show(); }); @@ -206,6 +218,9 @@ public class ChatMessageFragment extends AbsConversationFragment { }); video.setOnClickListener(v -> { + if(call.getTag()!=null){ + return; + } checkAuth(new OnSendMessageListener() { @Override public void onSuccess(String token, SendConsumeBean bean) { @@ -252,6 +267,9 @@ public class ChatMessageFragment extends AbsConversationFragment { }); }); call.setOnClickListener(v -> { + if(call.getTag()!=null){ + return; + } checkAuth(new OnSendMessageListener() { @Override public void onSuccess(String token,SendConsumeBean bean) { @@ -526,7 +544,11 @@ public class ChatMessageFragment extends AbsConversationFragment { } else { sex.setImageResource(R.mipmap.ic_message_tab_woman); } - + System.out.println("同性別:"+data.getUser().getSex()+"|"+IMLoginManager.get(mContext).getUserInfo().getSex()); + if(data.getUser().getSex()== IMLoginManager.get(mContext).getUserInfo().getSex()){ + call.setVisibility(View.GONE); + video.setVisibility(View.GONE); + } switch (Integer.parseInt(data.getUser().getOnline())) { case 0: status.setImageResource(R.mipmap.ic_message_msg_status_online); @@ -540,6 +562,11 @@ public class ChatMessageFragment extends AbsConversationFragment { if (data.getUser().isFollow()) { follow.setVisibility(View.GONE); } + if(data.getGiftNum()==0){ + call.setImageResource(R.mipmap.ic_msg_call_lock); + video.setImageResource(R.mipmap.ic_msg_video_lock); + call.setTag("true"); + } } @Override diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallAudioActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallAudioActivity.java index b04ba02f7..b3a22a144 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallAudioActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallAudioActivity.java @@ -66,7 +66,7 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis @Override protected void main(Bundle savedInstanceState) { - Bundle bundle = getIntent().getBundleExtra("bundle"); + Bundle bundle = getIntent().getExtras(); if (bundle == null) { finish(); return; @@ -132,11 +132,14 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis } + UserBean userData; + private void initTargetData() { OTONetManager.getInstance(mContext) .getTargetUserInfo(Integer.parseInt(targetId), new HttpCallback() { @Override public void onSuccess(UserBean data) { + userData = data; userName.setText(data.getUser().getUserNicename()); userInfo.setText(data.getUser().getSignature()); ImgLoader.display(mContext, data.getUser().getAvatar(), avatar); @@ -167,7 +170,8 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis .setTargetId(targetId) .showDialog(); } - private void follow(){ + + private void follow() { OTONetManager.getInstance(mContext) .follow(targetId, new HttpCallback() { @Override @@ -185,7 +189,7 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis private void showWindow(boolean toChatView) { ImageView icon = new ImageView(mContext); - icon.setTag(getIntent().getBundleExtra("bundle")); + icon.setTag(getIntent().getExtras()); icon.setImageResource(io.rong.callkit.R.drawable.rc_voip_audio_answer_selector_new); icon.setLayoutParams(new ViewGroup.LayoutParams(DpUtil.dp2px(40), DpUtil.dp2px(40))); finish(); @@ -347,7 +351,7 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis showGift(); } else if (id == R.id.close) { showWindow(false); - }else if(id ==R.id.follow){ + } else if (id == R.id.follow) { follow(); } } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallVideoActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallVideoActivity.java index 395c45f19..34026a577 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallVideoActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallVideoActivity.java @@ -1,21 +1,13 @@ package com.shayu.onetoone.activity.message; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.PixelFormat; import android.os.Bundle; import android.os.Handler; import android.os.Looper; -import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.SurfaceView; -import android.view.TextureView; import android.view.View; import android.view.ViewGroup; -import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -23,6 +15,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.alibaba.android.arouter.facade.annotation.Route; +import com.alibaba.fastjson.JSONObject; import com.lxj.xpopup.XPopup; import com.lxj.xpopup.core.BasePopupView; import com.lzf.easyfloat.EasyFloat; @@ -34,7 +27,6 @@ import com.shayu.onetoone.activity.AbsOTOActivity; import com.shayu.onetoone.bean.FollowBean; import com.shayu.onetoone.bean.UserBean; import com.shayu.onetoone.dialog.GiftDialog; -import com.shayu.onetoone.dialog.MsgChatClickDialog; import com.shayu.onetoone.dialog.TipsTextDialog; import com.shayu.onetoone.listener.OnCallStatusListener; import com.shayu.onetoone.manager.CallClientManager; @@ -49,14 +41,7 @@ import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; -import java.util.Arrays; -import java.util.HashMap; - -import io.rong.calllib.CallUserProfile; -import io.rong.calllib.IRongCallListener; import io.rong.calllib.RongCallClient; -import io.rong.calllib.RongCallCommon; -import io.rong.calllib.RongCallSession; import io.rong.calllib.StartIncomingPreviewCallback; @Route(path = RouteManager.ACTIVITY_CALL_VIDEO) @@ -103,7 +88,7 @@ public class CallVideoActivity extends AbsOTOActivity { protected void main(Bundle savedInstanceState) { initView(); - Bundle bundle = getIntent().getBundleExtra("bundle"); + Bundle bundle = getIntent().getExtras(); if (bundle == null) { finish(); return; @@ -248,7 +233,7 @@ public class CallVideoActivity extends AbsOTOActivity { } private void showWindow(boolean toChatView) { - CallClientManager.getManager().getRemoteVideo().setTag(getIntent().getBundleExtra("bundle")); + CallClientManager.getManager().getRemoteVideo().setTag(getIntent().getExtras()); myView.removeAllViews(); targetView.removeAllViews(); finish(); @@ -308,12 +293,15 @@ public class CallVideoActivity extends AbsOTOActivity { } } + UserBean userData; + private void initTargetData() { OTONetManager.getInstance(mContext) .getTargetUserInfo(Integer.parseInt(targetId), new HttpCallback() { @Override public void onSuccess(UserBean data) { ImgLoader.display(mContext, data.getUser().getAvatar(), avatar); + userData = data; if (data.getUser().isFollow()) { follow.setVisibility(View.GONE); } else { @@ -404,6 +392,14 @@ public class CallVideoActivity extends AbsOTOActivity { @Override public void onCallEnd() { + Bundle bundle = new Bundle(); + bundle.putString("model", CallClientManager.VIDEO_CALL); + bundle.putString("targetId", targetId); + bundle.putString("callId", targetId); + bundle.putString("user", JSONObject.toJSONString(userData)); + bundle.putString("time", callTime.getText().toString()); + bundle.putString("path", RouteManager.ACTIVITY_CALL_VIDEO); + RouteManager.forwardActivity(RouteManager.ACTIVITY_END_CALL, bundle); finish(); } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/bean/UserBean.java b/OneToOne/src/main/java/com/shayu/onetoone/bean/UserBean.java index 27a8a4bc0..2831e4dba 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/bean/UserBean.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/bean/UserBean.java @@ -8,6 +8,7 @@ public class UserBean extends BaseModel { IMLoginModel user; UserInfo info; UserLevel level; + int giftNum; int status; //0 需要跳转到 编辑资料页面 @@ -46,6 +47,14 @@ public class UserBean extends BaseModel { this.level = level; } + public int getGiftNum() { + return giftNum; + } + + public void setGiftNum(int giftNum) { + this.giftNum = giftNum; + } + public static class UserInfo { private int id; private String label_id; diff --git a/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java b/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java index 6a73669ff..ba37fbba0 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java @@ -38,6 +38,7 @@ public class RouteManager { //达人认证入口 public static final String ACTIVITY_AUTH_BLOGGER_INLET = "/activity/AuthBloggerInletActivity"; + public static final String ACTIVITY_END_CALL="/activity/EndCallActivity"; /** @@ -116,7 +117,7 @@ public class RouteManager { } public static void forwardActivity(String path, Bundle bundle) { - ARouter.getInstance().build(path).withBundle("bundle", bundle).navigation(); + ARouter.getInstance().build(path).with( bundle).navigation(); } public static void forwardActivity(String path, Serializable serializable) { ARouter.getInstance().build(path).withSerializable("data", serializable).navigation(); diff --git a/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java b/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java index 0361dd257..7ba9f8b70 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java @@ -155,7 +155,7 @@ public interface OneToOneApi { @GET("/api/public/?service=Friendappmoney.info") Observable> getPurseInfo(); - @GET("/api/public/?service=User.setAttents") + @GET("/api/public/?service=Friendappuser.follow") Observable>> follow(@Query("touid") String toUid); /** diff --git a/OneToOne/src/main/java/com/shayu/onetoone/provider/OTOCallEndMessageItemProvider.java b/OneToOne/src/main/java/com/shayu/onetoone/provider/OTOCallEndMessageItemProvider.java index d95de5fbe..a817ff249 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/provider/OTOCallEndMessageItemProvider.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/provider/OTOCallEndMessageItemProvider.java @@ -7,13 +7,24 @@ import android.content.Context; import android.os.Bundle; import android.text.Spannable; import android.text.SpannableString; +import android.util.Log; import android.widget.Toast; import com.shayu.onetoone.R; +import com.shayu.onetoone.bean.MessageChatAuthContent; +import com.shayu.onetoone.bean.SendConsumeBean; +import com.shayu.onetoone.bean.UserBean; +import com.shayu.onetoone.dialog.BottomListDialog; +import com.shayu.onetoone.dialog.TipsDialog; +import com.shayu.onetoone.listener.OnSendMessageListener; import com.shayu.onetoone.manager.CallClientManager; +import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.RouteManager; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.utils.ToastUtil; +import java.util.Collections; import java.util.List; import io.rong.callkit.CallEndMessageItemProvider; @@ -22,9 +33,14 @@ import io.rong.calllib.RongCallClient; import io.rong.calllib.RongCallCommon; import io.rong.calllib.RongCallSession; import io.rong.calllib.message.CallSTerminateMessage; +import io.rong.imkit.IMCenter; import io.rong.imkit.model.UiMessage; import io.rong.imkit.widget.adapter.IViewProviderListener; import io.rong.imkit.widget.adapter.ViewHolder; +import io.rong.imlib.IRongCallback; +import io.rong.imlib.RongIMClient; +import io.rong.imlib.model.Conversation; +import io.rong.imlib.model.Message; import io.rong.imlib.model.MessageContent; public class OTOCallEndMessageItemProvider extends CallEndMessageItemProvider { @@ -66,19 +82,35 @@ public class OTOCallEndMessageItemProvider extends CallEndMessageItemProvider { .show(); return true; } - RongCallCommon.CallMediaType mediaType = callSTerminateMessage.getMediaType(); - String action = null; - Bundle bundle = new Bundle(); - if (mediaType.equals(RongCallCommon.CallMediaType.VIDEO)) { - action = RouteManager.ACTIVITY_CALL_VIDEO; - bundle.putString("model", CallClientManager.VIDEO_CALL); - } else { - action = RouteManager.ACTIVITY_CALL_AUDIO; - bundle.putString("model", CallClientManager.AUDIO_CALL); - } - bundle.putString("targetId", uiMessage.getMessage().getTargetId()); - bundle.putString("callId", uiMessage.getMessage().getTargetId()); - RouteManager.forwardActivity(action, bundle); + + + checkAuth(uiMessage.getMessage().getTargetId(), new OnSendMessageListener() { + @Override + public void onSuccess(String token, SendConsumeBean bean) { + super.onSuccess(token, bean); + RongCallCommon.CallMediaType mediaType = callSTerminateMessage.getMediaType(); + String action = null; + Bundle bundle = new Bundle(); + if (mediaType.equals(RongCallCommon.CallMediaType.VIDEO)) { + action = RouteManager.ACTIVITY_CALL_VIDEO; + bundle.putString("model", CallClientManager.VIDEO_CALL); + } else { + action = RouteManager.ACTIVITY_CALL_AUDIO; + bundle.putString("model", CallClientManager.AUDIO_CALL); + } + bundle.putString("targetId", uiMessage.getMessage().getTargetId()); + bundle.putString("callId", uiMessage.getMessage().getTargetId()); + RouteManager.forwardActivity(action, bundle); + } + + @Override + public void onError(int status, String msg) { + super.onError(status, msg); + sendAuthRequest(uiMessage.getMessage().getTargetId()); + } + }); + + return true; } @@ -97,4 +129,43 @@ public class OTOCallEndMessageItemProvider extends CallEndMessageItemProvider { return new SpannableString(context.getString(R.string.rc_voip_message_video)); } } + + private void checkAuth(String targetId, OnSendMessageListener listener) { + OTONetManager.getInstance(null) + .getTargetUserInfo(Integer.parseInt(targetId), new HttpCallback() { + @Override + public void onSuccess(UserBean data) { + if (data.getInfo().getName_auth() == 1) { + listener.onError(0, ""); + } else { + listener.onSuccess("", null); + } + } + + @Override + public void onError(String error) { + Log.e(TAG, "onError: " + error); + } + }); + } + + private void sendAuthRequest(String targetId) { + MessageChatAuthContent content = MessageChatAuthContent.obtain(""); + IMCenter.getInstance().sendMessage(Message.obtain(targetId, Conversation.ConversationType.PRIVATE, content), null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(Message message) { + + } + + @Override + public void onSuccess(Message message) { + + } + + @Override + public void onError(Message message, RongIMClient.ErrorCode errorCode) { + + } + }); + } } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/view/MsgInputPanelForGift.java b/OneToOne/src/main/java/com/shayu/onetoone/view/MsgInputPanelForGift.java index d93b53845..612ed0974 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/view/MsgInputPanelForGift.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/view/MsgInputPanelForGift.java @@ -22,6 +22,7 @@ import com.shayu.onetoone.widget.PagerConfig; import com.shayu.onetoone.widget.PagerGridLayoutManager; import com.shayu.onetoone.widget.PagerGridSnapHelper; import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.utils.ToastUtil; @@ -42,6 +43,7 @@ public class MsgInputPanelForGift extends AbsInputPanel { Button topUpBtn; Button sendBtn; String token; + private OnItemClickListener onItemClickListener; public MsgInputPanelForGift(String targetId, FragmentActivity fragmentActivity, RongExtension mRongExtension) { super(targetId, fragmentActivity, mRongExtension, R.layout.view_message_input_gift); @@ -52,6 +54,10 @@ public class MsgInputPanelForGift extends AbsInputPanel { return super.show(); } + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.onItemClickListener = onItemClickListener; + } + @Override public void init(View viewGroup) { gifList = viewGroup.findViewById(R.id.gift_list); @@ -103,6 +109,9 @@ public class MsgInputPanelForGift extends AbsInputPanel { @Override public void onSuccess(Message message) { + if (onItemClickListener != null) { + onItemClickListener.onItemClick(item,1); + } iniPurse(); SendMessageManager.onCallSuccess(token, new OnSendMessageListener() { @Override diff --git a/OneToOne/src/main/res/drawable/bg_dialog_end_call_cancel.xml b/OneToOne/src/main/res/drawable/bg_dialog_end_call_cancel.xml new file mode 100644 index 000000000..3f9aea39c --- /dev/null +++ b/OneToOne/src/main/res/drawable/bg_dialog_end_call_cancel.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/drawable/bg_dialog_end_call_timer.xml b/OneToOne/src/main/res/drawable/bg_dialog_end_call_timer.xml new file mode 100644 index 000000000..f660d57f0 --- /dev/null +++ b/OneToOne/src/main/res/drawable/bg_dialog_end_call_timer.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/dialog_end_call.xml b/OneToOne/src/main/res/layout/dialog_end_call.xml new file mode 100644 index 000000000..b59059fa5 --- /dev/null +++ b/OneToOne/src/main/res/layout/dialog_end_call.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + +