消息列表功能修改 网络请求失败闪退修复

dev
李桢 1 year ago
parent ddb2cd3aca
commit fafa953e9e
  1. 2
      app/build.gradle
  2. 9
      app/src/main/java/com/unionmed/unionmedtv/activity/AddressSelectActivity.java
  3. 8
      app/src/main/java/com/unionmed/unionmedtv/activity/DoctorActivity.java
  4. 18
      app/src/main/java/com/unionmed/unionmedtv/activity/DoctorDetailActivity.java
  5. 9
      app/src/main/java/com/unionmed/unionmedtv/activity/HospitalActivity.java
  6. 7
      app/src/main/java/com/unionmed/unionmedtv/activity/HospitalDetailActivity.java
  7. 1
      app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java
  8. 161
      app/src/main/java/com/unionmed/unionmedtv/activity/VideoCallActivity.java
  9. 4
      app/src/main/java/com/unionmed/unionmedtv/adapter/MsgItemAdapter.java
  10. 6
      app/src/main/java/com/unionmed/unionmedtv/adapter/MsgListAdapter.java
  11. 26
      app/src/main/java/com/unionmed/unionmedtv/adapter/RemoteAdapter.java
  12. 11
      app/src/main/java/com/unionmed/unionmedtv/fragment/ContentFragment.java
  13. 70
      app/src/main/java/com/unionmed/unionmedtv/fragment/MsgFragment.java
  14. 7
      app/src/main/java/com/unionmed/unionmedtv/fragment/MyDoctorFragment.java
  15. 4
      app/src/main/java/com/unionmed/unionmedtv/login/activity/LoginActivity.java
  16. 9
      app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginAccountFragment.java
  17. 24
      app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java
  18. 44
      app/src/main/java/com/unionmed/unionmedtv/network/RequestHandler.java
  19. 6
      app/src/main/res/layout/activity_video_call.xml
  20. 17
      app/src/main/res/layout/item_remote_layout.xml

@ -68,7 +68,7 @@ dependencies {
// https://github.com/getActivity/EasyHttp
implementation 'com.github.getActivity:EasyHttp:11.2'
implementation 'com.github.getActivity:EasyHttp:12.0'
implementation 'com.squareup.okhttp3:okhttp:3.12.13'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.github.getActivity:GsonFactory:6.2'

@ -10,6 +10,7 @@ import androidx.annotation.Nullable;
import androidx.lifecycle.LiveData;
import com.blankj.utilcode.util.AppUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.donkingliang.labels.LabelsView;
import com.hjq.http.EasyConfig;
import com.hjq.http.EasyHttp;
@ -64,7 +65,7 @@ public class AddressSelectActivity extends BaseActivity {
.api(new GetAppIpNew())
.request(new OnHttpListener<HttpData<ApiResponse<GetAppIpNew>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<GetAppIpNew>> apiResponseHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<GetAppIpNew>> apiResponseHttpData) {
if(apiResponseHttpData.isRequestSucceed()){
if(apiResponseHttpData.getData().isInnerRequestSucceed()){
list.addAll(apiResponseHttpData.getData().getData().getMember());
@ -86,9 +87,11 @@ public class AddressSelectActivity extends BaseActivity {
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
ToastUtils.showLong(e.getMessage());
}
});
}
}

@ -17,6 +17,7 @@ import androidx.annotation.Nullable;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.ToastUtils;
import com.example.yideng.loaddialoglibrary.LmiotDialog;
import com.hjq.http.EasyHttp;
import com.hjq.http.listener.OnHttpListener;
@ -132,7 +133,7 @@ public class DoctorActivity extends BaseActivity {
CacheUtil.getLongitude().toString(), CacheUtil.getLatitude().toString(), CacheUtil.getPkey(), "2"))
.request(new OnHttpListener<HttpData<ApiResponse<GetNearDoctorApi.DoctorInfo>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<GetNearDoctorApi.DoctorInfo>> stringHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<GetNearDoctorApi.DoctorInfo>> stringHttpData) {
LogUtils.e("成功:" + stringHttpData);
LmiotDialog.hidden();
if (stringHttpData.isRequestSucceed()) {
@ -166,13 +167,12 @@ public class DoctorActivity extends BaseActivity {
});
}
}
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
LmiotDialog.hidden();
ToastUtils.showLong(e.getMessage());
LogUtils.e("失败:" + e);
}
});

@ -90,8 +90,9 @@ public class DoctorDetailActivity extends BaseActivity implements View.OnClickLi
EasyHttp.post(this)
.api(new GetDoctorInfoApi(userAccount, CacheUtil.getPkey(), CacheUtil.getUserToken()))
.request(new OnHttpListener<HttpData<ApiResponse<GetDoctorInfoApi>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<GetDoctorInfoApi>> response) {
public void onHttpSuccess(HttpData<ApiResponse<GetDoctorInfoApi>> response) {
if (response.isRequestSucceed()) {
if (response.getData().isInnerRequestSucceed()) {
GetDoctorInfoApi infoBean = response.getData().getData();
@ -149,8 +150,8 @@ public class DoctorDetailActivity extends BaseActivity implements View.OnClickLi
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
ToastUtils.showLong(e.getMessage());
}
});
}
@ -185,13 +186,19 @@ public class DoctorDetailActivity extends BaseActivity implements View.OnClickLi
}
if (checkCamera(DoctorDetailActivity.this)) {
if (HomeActivity.connectIsSuccess(DoctorDetailActivity.this)) {
RongCallSession callSession = RongCallClient.getInstance().getCallSession();
if (callSession != null && callSession.getStartTime() > 0) {
// 当前正在进行通话
ToastUtils.showLong("当前正在进行通话");
return;
}
List<String> pKeys = new ArrayList<>();
pKeys.add(targetId);
EasyHttp.post(DoctorDetailActivity.this)
.api(new ApplyVideoApi(pKeys, "10001"))
.request(new OnHttpListener<ApiResponse<ApiResponse<ApplyVideoApi.ApplyVideoModel>>>() {
@Override
public void onSucceed(ApiResponse<ApiResponse<ApplyVideoApi.ApplyVideoModel>> result) {
public void onHttpSuccess(ApiResponse<ApiResponse<ApplyVideoApi.ApplyVideoModel>> result) {
if (null != result.getData() && result.getData().isInnerRequestSucceed() &&
null != result.getData().getData()) {
@ -204,11 +211,12 @@ public class DoctorDetailActivity extends BaseActivity implements View.OnClickLi
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
ToastUtils.showLong("发起视频失败");
LogUtils.e("applyVideo失败", "失败:" + e);
}
});
}
}

@ -16,6 +16,7 @@ import androidx.annotation.Nullable;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.ToastUtils;
import com.example.yideng.loaddialoglibrary.LmiotDialog;
import com.hjq.http.EasyHttp;
import com.hjq.http.listener.OnHttpListener;
@ -122,12 +123,12 @@ public class HospitalActivity extends BaseActivity {
};
public void loadData(int type) {
LmiotDialog.show(HospitalActivity.this,"努力加载中..");
LmiotDialog.show(HospitalActivity.this, "努力加载中..");
EasyHttp.post(HospitalActivity.this)
.api(new GetHospitalApi(et_search.getText().toString(), startNum, CacheUtil.getPkey(), endNum))
.request(new OnHttpListener<HttpData<ApiResponse<GetHospitalApi>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<GetHospitalApi>> stringHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<GetHospitalApi>> stringHttpData) {
LmiotDialog.hidden();
if (stringHttpData.getData().getCode() == 200) {
if (stringHttpData.getData().getData() == null) {
@ -162,12 +163,12 @@ public class HospitalActivity extends BaseActivity {
});
}
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
LmiotDialog.hidden();
ToastUtils.showLong(e.getMessage());
LogUtils.e("失败:" + e);
}
});

@ -110,7 +110,7 @@ public class HospitalDetailActivity extends BaseActivity {
.api(new GetHospitalDetailApi(chosCode, CacheUtil.getPkey()))
.request(new OnHttpListener<HttpData<ApiResponse<GetHospitalDetailApi>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<GetHospitalDetailApi>> stringHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<GetHospitalDetailApi>> stringHttpData) {
LogUtils.e("成功:" + stringHttpData);
if (stringHttpData.isRequestSucceed()) {
if (stringHttpData.getData().isInnerRequestSucceed()) {
@ -136,13 +136,14 @@ public class HospitalDetailActivity extends BaseActivity {
doctorAdapter.notifyDataSetChanged();
}
}
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
LogUtils.e("失败:" + e);
ToastUtils.showLong(e.getMessage());
}
});
}
}

@ -85,6 +85,7 @@ public class MsgActivity extends BaseActivity {
public void onSuccess(List<Conversation> conversations) {
LmiotDialog.hidden();
if(conversations==null){
lin.setVisibility(View.VISIBLE);
tv_content.setText("暂无数据");
return;
}

@ -14,6 +14,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.lifecycle.Observer;
@ -25,6 +26,8 @@ import com.blankj.utilcode.util.StringUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.listener.OnItemClickListener;
import com.hjq.http.EasyHttp;
import com.hjq.http.listener.OnHttpListener;
import com.unionmed.unionmedtv.R;
@ -38,6 +41,9 @@ import com.unionmed.unionmedtv.livedatas.LiveDataBus;
import com.unionmed.unionmedtv.network.ApiResponse;
import com.unionmed.unionmedtv.utils.CacheUtil;
import com.unionmed.unionmedtv.utils.Constants;
import com.unionmed.unionmedtv.utils.OnChildClickListener;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.HashMap;
@ -104,13 +110,17 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
this.usetInfo = usetInfo;
}
//本地视频全屏数据
private String imgPath = "";
private String name = "";
private String localId = "";
private SurfaceView surfaceView = null;
private boolean cameraDisabled = false;
/**
* idle 通话结束
* Calling 电话拨出
* BeCall 接听
* BeCall 等待接听
* OnCall 已接通
*/
public enum CallStatus {
@ -141,7 +151,32 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
tv_time = findViewById(R.id.tv_time);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(VideoCallActivity.this));
remoteAdapter = new RemoteAdapter(R.layout.item_remote_layout);
remoteAdapter = new RemoteAdapter(R.layout.item_remote_layout, new OnChildClickListener() {
@Override
public <T> void onChildClick(View view, int position, T data) {
RemoteBean newRemoteBean = new RemoteBean();
newRemoteBean.setPath(imgPath);
newRemoteBean.setName(name);
((RCRTCVideoView) surfaceView).setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL);
newRemoteBean.setSurfaceView(surfaceView);
newRemoteBean.setUserId(localId);
newRemoteBean.setCameraDisabled(cameraDisabled);
((FrameLayout) ((RemoteBean) data).getView()).removeAllViews();
RemoteBean remoteBean = (RemoteBean) data;
imgPath = remoteBean.getPath();
name = remoteBean.getName();
localId = remoteBean.getUserId();
cameraDisabled = remoteBean.isCameraDisabled();
surfaceView = remoteBean.getSurfaceView();
surfaceView.setZOrderOnTop(false);
clearViews();
addLocalView(surfaceView);
remoteAdapter.getData().set(position, newRemoteBean);
remoteAdapter.notifyDataSetChanged();
chageCamera(!cameraDisabled);
}
});
recyclerView.setAdapter(remoteAdapter);
lin_put_through = findViewById(R.id.lin_put_through);
lin_put_through.setOnClickListener(this);
@ -155,25 +190,28 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
lin_mute.setSelected(true);
initIRongCallListener();
type =getIntent().getStringExtra("type");
type = getIntent().getStringExtra("type");
targetId = getIntent().getStringExtra("targetId");
localId = targetId;
groupId = getIntent().getStringExtra("groupId");
if(type.equals("1")){
if (type.equals("1")) {
if (!TextUtils.isEmpty(targetId)) {
List<String> userIds = new ArrayList<>();
userIds.add(targetId);
RongCallClient.getInstance().startCall(Conversation.ConversationType.GROUP, groupId,
userIds, null, RongCallCommon.CallMediaType.VIDEO, null);
}
}else {
} else {
changeUi(null);
}
getUserInfoByServer(targetId);
}
private long time = 0;
Handler handler;
private void reckonByTime() {
handler = new Handler();
handler = new Handler();
Runnable updateTask = new Runnable() {
@Override
public void run() {
@ -193,16 +231,20 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
// 延迟执行任务
handler.postDelayed(updateTask, 1000);
}
private void addLocalView(SurfaceView view) {
local.removeAllViews();
((RCRTCVideoView) view).setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL);
local.addView(view);
}
private void clearViews() {
local.removeAllViews();
}
public void initIRongCallListener() {
RongCallClient.getInstance().setVoIPCallListener(new IRongCallListener() {
private void addLocalView(SurfaceView view) {
local.removeAllViews();
local.addView(view);
}
private void clearViews() {
local.removeAllViews();
}
/**
* 电话已拨出
@ -213,7 +255,7 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
*/
@Override
public void onCallOutgoing(RongCallSession callSession, SurfaceView localVideo) {
Log.i("TAG", "onCallOutgoing: ================="+callSession.getActiveTime());
Log.i("TAG", "onCallOutgoing: =================" + callSession.getActiveTime());
currentStatus = CallStatus.Calling;
changeUi(null);
}
@ -231,11 +273,13 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
currentStatus = CallStatus.OnCall;
changeUi(null);
RemoteBean remoteBean = new RemoteBean();
remoteBean.setUserId(targetId);
remoteBean.setUserId(CacheUtil.getImUserAccount());
((RCRTCVideoView) localVideo).setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL);
remoteBean.setSurfaceView(localVideo);
remoteAdapter.addData(remoteBean);
remoteBean.setPath(CacheUtil.getToken().getHeadImg());
remoteBean.setName(CacheUtil.getToken().getName());
remoteAdapter.addData(remoteBean);
}
/**
@ -294,23 +338,28 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
@Override
public void success(ImUserInfoBean imUserInfoBean) {
if (userId.equals(targetId)) {
((RCRTCVideoView)remoteVideo).setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL);
surfaceView = remoteVideo;
((RCRTCVideoView) remoteVideo).setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL);
addLocalView(remoteVideo);
imgPath = imUserInfoBean.getHeadImg();
name = imUserInfoBean.getName();
localId = targetId;
} else {
RemoteBean remoteBean = new RemoteBean();
remoteBean.setUserId(userId);
((RCRTCVideoView) remoteVideo).setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL);
remoteBean.setSurfaceView(remoteVideo);
remoteAdapter.addData(remoteBean);
remoteBean.setPath(imUserInfoBean.getHeadImg());
remoteBean.setName(imUserInfoBean.getName());
remoteAdapter.addData(remoteBean);
}
}
@Override
public void fail() {
if (userId.equals(targetId)) {
surfaceView = remoteVideo;
addLocalView(remoteVideo);
} else {
RemoteBean remoteBean = new RemoteBean();
@ -361,7 +410,8 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
@Override
public void onRemoteCameraDisabled(String userId, boolean disabled) {
if (userId.equals(targetId)) {
if (userId.equals(localId)) {
cameraDisabled = disabled;
if (disabled) {
local.setVisibility(View.GONE);
iv_icon.setVisibility(View.VISIBLE);
@ -493,20 +543,22 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
.api(new GetImUserInfoApi(CacheUtil.getToken().getToken(), userId))
.request(new OnHttpListener<ApiResponse<ApiResponse<ImUserInfoBean>>>() {
@Override
public void onSucceed(ApiResponse<ApiResponse<ImUserInfoBean>> result) {
public void onHttpSuccess(ApiResponse<ApiResponse<ImUserInfoBean>> result) {
if (null != result.getData() && result.getData().isInnerRequestSucceed()
&& null != result.getData().getData()) {
Glide.with(VideoCallActivity.this)
.load(result.getData().getData().getHeadImg())
.apply(new RequestOptions()
.placeholder(R.color.white_e1e1e1)
)
.into(iv_icon);
tv_name.setText(result.getData().getData().getName());
if (type.equals("1")) {
tv_tip.setText("等待对方接听");
} else {
tv_tip.setText("对方邀请您进行通话");
if (currentStatus != CallStatus.OnCall) { //等待接听状态
Glide.with(VideoCallActivity.this)
.load(result.getData().getData().getHeadImg())
.apply(new RequestOptions()
.placeholder(R.color.white_e1e1e1)
)
.into(iv_icon);
tv_name.setText(result.getData().getData().getName());
if (type.equals("1")) {
tv_tip.setText("等待对方接听");
} else {
tv_tip.setText("对方邀请您进行通话");
}
}
if (usetInfo != null) {
usetInfo.success(result.getData().getData());
@ -520,19 +572,21 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
ToastUtils.showLong(e.getMessage());
LogUtils.e("用户信息失败", "失败:" + e);
}
});
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.lin_put_through||view.getId()==R.id.iv_put_through) {//接听
if (view.getId() == R.id.lin_put_through || view.getId() == R.id.iv_put_through) {//接听
if (RongCallClient.getInstance() != null && RongCallClient.getInstance().getCallSession() != null) {
RongCallClient.getInstance().acceptCall(RongCallClient.getInstance().getCallSession().getCallId());
}
} else if (view.getId() == R.id.lin_hang_up||view.getId()==R.id.iv_hang_up) {//挂断
} else if (view.getId() == R.id.lin_hang_up || view.getId() == R.id.iv_hang_up) {//挂断
if (RongCallClient.getInstance() != null && RongCallClient.getInstance().getCallSession() != null) {
RongCallClient.getInstance().hangUpCall(RongCallClient.getInstance().getCallSession().getCallId());
}
@ -561,20 +615,49 @@ public class VideoCallActivity extends BaseActivity implements View.OnClickListe
iv_camera.setImageDrawable(getResources().getDrawable(R.mipmap.icon_camera_on));
tv_camera.setText("摄像头已开");
}
for (int i = 0; i < remoteAdapter.getData().size(); i++) {
if (remoteAdapter.getData().get(i).getUserId().equals(targetId)) {
remoteAdapter.getData().get(i).setCameraDisabled(!lin_turn_off_camera.isSelected());
if (localId.equals(CacheUtil.getImUserAccount())) {//本地大屏用户id==当前账号id
cameraDisabled = !lin_turn_off_camera.isSelected();
chageCamera(!cameraDisabled);
} else {
for (int i = 0; i < remoteAdapter.getData().size(); i++) {
if (remoteAdapter.getData().get(i).getUserId().equals(CacheUtil.getImUserAccount())) {
remoteAdapter.getData().get(i).setCameraDisabled(!lin_turn_off_camera.isSelected());
}
}
remoteAdapter.notifyDataSetChanged();
}
remoteAdapter.notifyDataSetChanged();
}
}
//本地视频图像显示
public void chageCamera(boolean cameraDisabled) {
if (!cameraDisabled) {
local.setVisibility(View.GONE);
iv_icon.setVisibility(View.VISIBLE);
Glide.with(VideoCallActivity.this)
.load(imgPath)
.apply(new RequestOptions()
.placeholder(R.mipmap.rc_default_portrait)
)
.into(iv_icon);
} else {
local.setVisibility(View.VISIBLE);
iv_icon.setVisibility(View.GONE);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if(handler!=null){
if (handler != null) {
handler.removeCallbacksAndMessages(null);
}
}
@Override
public void onBackPressed() {
if (RongCallClient.getInstance() != null && RongCallClient.getInstance().getCallSession() != null) {
RongCallClient.getInstance().hangUpCall(RongCallClient.getInstance().getCallSession().getCallId());
}
}
}

@ -81,10 +81,10 @@ public class MsgItemAdapter extends BaseDelegateMultiAdapter<Message, BaseViewHo
return 5;
}else if (message.getContent() instanceof UnknownMessage &&
message.getMessageDirection() == Message.MessageDirection.RECEIVE) {
return 6;
return 8;
} else if (message.getContent() instanceof UnknownMessage &&
message.getMessageDirection() == Message.MessageDirection.SEND) {
return 7;
return 9;
} else {
return 0;
}

@ -11,6 +11,7 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.lifecycle.LifecycleOwner;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.chad.library.adapter.base.BaseDelegateMultiAdapter;
@ -62,7 +63,7 @@ public class MsgListAdapter extends BaseQuickAdapter<MyConversation, BaseViewHol
.api(new GetImUserInfoApi(CacheUtil.getToken().getToken(), conversation.getConversation().getTargetId()))
.request(new OnHttpListener<ApiResponse<ApiResponse<ImUserInfoBean>>>() {
@Override
public void onSucceed(ApiResponse<ApiResponse<ImUserInfoBean>> result) {
public void onHttpSuccess(ApiResponse<ApiResponse<ImUserInfoBean>> result) {
if(postion==0){
LiveDataBus.get().with(Constants.MSG_LIST_SELECT_ITEM).postValue(0);
}
@ -76,7 +77,8 @@ public class MsgListAdapter extends BaseQuickAdapter<MyConversation, BaseViewHol
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
ToastUtils.showLong(e.getMessage());
LogUtils.e("用户信息失败", "失败:" + e);
}
});

@ -1,6 +1,7 @@
package com.unionmed.unionmedtv.adapter;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
@ -28,8 +29,9 @@ import java.util.List;
public class RemoteAdapter extends BaseQuickAdapter<RemoteBean, BaseViewHolder> {
private OnChildClickListener onChildClickListener;
public RemoteAdapter(int layoutResId) {
public RemoteAdapter(int layoutResId,OnChildClickListener onChildClickListener) {
super(layoutResId);
this.onChildClickListener=onChildClickListener;
}
@ -39,21 +41,29 @@ public class RemoteAdapter extends BaseQuickAdapter<RemoteBean, BaseViewHolder>
ImageView iv_avatar = vh.findView(R.id.iv_avatar);
remoteBean.setView(remote);
remote.removeAllViews();
remoteBean.getSurfaceView().setZOrderOnTop(true);
remote.addView(remoteBean.getSurfaceView());
Glide.with(getContext())
.load(remoteBean.getPath())
.apply(new RequestOptions()
.placeholder(R.mipmap.rc_default_portrait)
)
.into(iv_avatar);
if (remoteBean.isCameraDisabled()) {
iv_avatar.setVisibility(View.VISIBLE);
remoteBean.getSurfaceView().setZOrderOnTop(false);
remote.setVisibility(View.GONE);
} else {
remoteBean.getSurfaceView().setZOrderOnTop(true);
iv_avatar.setVisibility(View.GONE);
remote.setVisibility(View.VISIBLE);
Glide.with(getContext())
.load(remoteBean.getPath())
.apply(new RequestOptions()
.placeholder(R.mipmap.rc_default_portrait)
)
.into(iv_avatar);
}
vh.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onChildClickListener.onChildClick(view,vh.getLayoutPosition(),remoteBean);
}
});
}
}

@ -358,7 +358,7 @@ public class ContentFragment extends BaseLazyLoadFragment {
"119.218118", "26.043799", "15", "2"))
.request(new OnHttpListener<HttpData<ApiResponse<GetNearDoctorApi.DoctorInfo>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<GetNearDoctorApi.DoctorInfo>> stringHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<GetNearDoctorApi.DoctorInfo>> stringHttpData) {
LogUtils.e("成功:" + stringHttpData);
if (stringHttpData.getData().getCode() == 200) {
List<GetNearDoctorApi.DoctorInfo.MemberBean> doctorInfo = stringHttpData.getData().getData().getMember();
@ -376,13 +376,13 @@ public class ContentFragment extends BaseLazyLoadFragment {
mPbLoading.setVisibility(View.GONE);
mVerticalGridView.setVisibility(View.VISIBLE);
}
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
LogUtils.e("失败:" + e);
}
});
break;
case "7359d189a049468d9d4e280fd1ec15c5":
@ -391,7 +391,7 @@ public class ContentFragment extends BaseLazyLoadFragment {
"119.218118", "26.043799", "15", "2"))
.request(new OnHttpListener<HttpData<ApiResponse<GetNearDoctorApi.DoctorInfo>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<GetNearDoctorApi.DoctorInfo>> stringHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<GetNearDoctorApi.DoctorInfo>> stringHttpData) {
LogUtils.e("成功:" + stringHttpData);
if (stringHttpData.getData().getCode() == 200) {
List<GetNearDoctorApi.DoctorInfo.MemberBean> doctorInfo = stringHttpData.getData().getData().getMember();
@ -402,11 +402,10 @@ public class ContentFragment extends BaseLazyLoadFragment {
mPbLoading.setVisibility(View.GONE);
mVerticalGridView.setVisibility(View.VISIBLE);
}
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
LogUtils.e("失败:" + e);
}
});

@ -13,6 +13,7 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.TimeUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.example.yideng.loaddialoglibrary.LmiotDialog;
import com.unionmed.unionmedtv.R;
@ -28,8 +29,12 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import io.rong.imlib.IRongCoreCallback;
import io.rong.imlib.IRongCoreEnum;
import io.rong.imlib.RongCoreClient;
import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.HistoryMessageOption;
import io.rong.imlib.model.Message;
import io.rong.message.TextMessage;
@ -88,13 +93,6 @@ public class MsgFragment extends Fragment implements View.OnClickListener {
msgItemLinearLayoutManager.setRecyclerView(recyclerView);
recyclerView.setLayoutManager(msgItemLinearLayoutManager);
recyclerView.addItemDecoration(new LinearSpacingItemDecoration(getActivity(), 14));
// list.clear();
// list.add("1");
// list.add("2");
// list.add("3");
// list.add("4");
// list.add("5");
// list.add("6");
msgItemAdapter = new MsgItemAdapter(list, new OnChildClickListener() {
@Override
@ -158,28 +156,50 @@ public class MsgFragment extends Fragment implements View.OnClickListener {
public void getRemoteHistory() {
Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE;
long dateTime = 0;
int count = 20;
RongIMClient.getInstance().getHistoryMessages(conversationType, targetId, -1, count, new RongIMClient.ResultCallback<List<Message>>() {
long dateTime = System.currentTimeMillis();
int count = 50;
HistoryMessageOption historyMessageOption = new HistoryMessageOption();
historyMessageOption.setDataTime(dateTime);//2022-09-07 17:25:12:112
historyMessageOption.setOrder(HistoryMessageOption.PullOrder.DESCEND);
historyMessageOption.setCount(count);
RongCoreClient.getInstance().getMessages(conversationType, targetId, historyMessageOption, new IRongCoreCallback.IGetMessageCallback() {
@Override
public void onSuccess(List<Message> messages) {
for (int i=0;i<messages.size();i++){
Log.i("TAG", "onSuccess: ==============="+messages.get(i).getContent());
}
LmiotDialog.hidden();
Collections.reverse(messages);
list.addAll(messages);
msgItemAdapter.notifyDataSetChanged();
recyclerView.requestFocus();
LiveDataBus.get().with(Constants.MSG_SELECT_ITEM).postValue(0);
}
@Override
public void onError(RongIMClient.ErrorCode e) {
public void onComplete(List<Message> messageList, IRongCoreEnum.CoreErrorCode errorCode) {
LmiotDialog.hidden();
if (IRongCoreEnum.CoreErrorCode.SUCCESS.code == errorCode.code) {
for (int i=0;i<messageList.size();i++){
Log.i("TAG", "onComplete: ================"+messageList.get(i).getContent());
}
Collections.reverse(messageList);
list.addAll(messageList);
msgItemAdapter.notifyDataSetChanged();
recyclerView.requestFocus();
LiveDataBus.get().with(Constants.MSG_SELECT_ITEM).postValue(0);
}else {
ToastUtils.showLong(errorCode.getMessage());
}
}
});
// RongIMClient.getInstance().getHistoryMessages(conversationType, targetId, -1, count, new RongIMClient.ResultCallback<List<Message>>() {
//
// @Override
// public void onSuccess(List<Message> messages) {
// for (int i=0;i<messages.size();i++){
// Log.i("TAG", "onSuccess: ==============="+messages.get(i).getContent());
// }
// LmiotDialog.hidden();
// Collections.reverse(messages);
// list.addAll(messages);
// msgItemAdapter.notifyDataSetChanged();
// recyclerView.requestFocus();
// LiveDataBus.get().with(Constants.MSG_SELECT_ITEM).postValue(0);
// }
//
// @Override
// public void onError(RongIMClient.ErrorCode e) {
// LmiotDialog.hidden();
// }
// });
}
@Override

@ -15,6 +15,7 @@ import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.ToastUtils;
import com.hjq.http.EasyConfig;
import com.hjq.http.EasyHttp;
import com.hjq.http.listener.OnHttpListener;
@ -92,7 +93,7 @@ public class MyDoctorFragment extends Fragment implements View.OnClickListener {
.api(new GetContractedDoctorApi(CacheUtil.getPkey(), CacheUtil.getUserToken()))
.request(new OnHttpListener<HttpData<ApiResponse<GetContractedDoctorApi.DoctorInfo>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<GetContractedDoctorApi.DoctorInfo>> stringHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<GetContractedDoctorApi.DoctorInfo>> stringHttpData) {
LogUtils.e("成功:" + stringHttpData);
if (stringHttpData.isRequestSucceed()) {
if(stringHttpData.getData().isInnerRequestSucceed()){
@ -111,11 +112,11 @@ public class MyDoctorFragment extends Fragment implements View.OnClickListener {
contractedDoctorAdapter.notifyDataSetChanged();
}
}
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
ToastUtils.showLong(e.getMessage());
LogUtils.e("失败:" + e);
}
});

@ -142,7 +142,7 @@ public class LoginActivity extends FragmentActivity {
new LocationApi("bd09ll")
).request(new OnHttpListener<HttpData<LocationApi.LocatinBean>>() {
@Override
public void onSucceed(HttpData<LocationApi.LocatinBean> apiResponseHttpData) {
public void onHttpSuccess(HttpData<LocationApi.LocatinBean> apiResponseHttpData) {
if (apiResponseHttpData.isRequestSucceed()) {
LocationApi.LocatinBean.ContentBean location = apiResponseHttpData.getData().getContent();
CacheUtil.saveLongitude(Double.valueOf(location.getPoint().getX()));
@ -151,7 +151,7 @@ public class LoginActivity extends FragmentActivity {
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
}
});

@ -133,7 +133,7 @@ public class LoginAccountFragment extends Fragment implements View.OnClickListen
.request(new OnHttpListener<HttpData<ApiResponse<TokenBean>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<TokenBean>> apiResponseHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<TokenBean>> apiResponseHttpData) {
LogUtils.e("成功:" + apiResponseHttpData.getCode());
if (apiResponseHttpData.isRequestSucceed()) {
if (apiResponseHttpData.getData().getCode() == 200) {
@ -179,9 +179,8 @@ public class LoginAccountFragment extends Fragment implements View.OnClickListen
}
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
LmiotDialog.hidden();
ToastUtils.showLong("登录失败");
LogUtils.e("失败:" + e);
@ -195,7 +194,7 @@ public class LoginAccountFragment extends Fragment implements View.OnClickListen
.api(new AreaLoginApi(identity_id, mobile, name, pkey))
.request(new OnHttpListener<HttpData<ApiResponse<AreaLoginApi>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<AreaLoginApi>> personInfoBeanHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<AreaLoginApi>> personInfoBeanHttpData) {
LmiotDialog.hidden();
if (personInfoBeanHttpData.isRequestSucceed()) {
if (personInfoBeanHttpData.getData().getCode() == 200) {
@ -213,7 +212,7 @@ public class LoginAccountFragment extends Fragment implements View.OnClickListen
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
LmiotDialog.hidden();
ToastUtils.showLong("登录失败");
LogUtils.e("失败:" + e);

@ -140,7 +140,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
MobileLogin(edit_phone.getText().toString(), edit_code.getText().toString());
} else if (view.getId() == R.id.lin_code || view.getId() == R.id.iv_qrCode) {
if(timer!=null){
if (timer != null) {
timer.cancel();
}
GenerateQRcode();
@ -158,7 +158,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
.api(new QRCodeApi("Login", ""))
.request(new OnHttpListener<HttpData<ApiResponse<QRCodeBean>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<QRCodeBean>> apiResponseHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<QRCodeBean>> apiResponseHttpData) {
if (apiResponseHttpData.isRequestSucceed()) {
if (apiResponseHttpData.getData().isInnerRequestSucceed()) {
lin_code.setVisibility(View.GONE);
@ -181,7 +181,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
lin_code.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);
tv_code_msg.setText("生成二维码失败,点击刷新");
@ -205,7 +205,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
.request(new OnHttpListener<HttpData<ApiResponse<ScanBean>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<ScanBean>> apiResponseHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<ScanBean>> apiResponseHttpData) {
if (apiResponseHttpData.isRequestSucceed()) {
if (apiResponseHttpData.getData().isInnerRequestSucceed()) {
TokenBean tokenBean = new Gson()
@ -265,7 +265,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
}
});
@ -288,7 +288,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
.request(new OnHttpListener<HttpData<ApiResponse<Object>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<Object>> apiResponseHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<Object>> apiResponseHttpData) {
LogUtils.e("成功:" + apiResponseHttpData);
ToastUtils.showLong("获取验证码成功");
if (apiResponseHttpData.isRequestSucceed()) {
@ -311,7 +311,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
ToastUtils.showLong("获取验证码失败");
LogUtils.e("失败:" + e);
}
@ -326,7 +326,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
.request(new OnHttpListener<HttpData<ApiResponse<TokenBean>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<TokenBean>> apiResponseHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<TokenBean>> apiResponseHttpData) {
LogUtils.e("成功:" + apiResponseHttpData);
if (apiResponseHttpData.isRequestSucceed()) {
if (apiResponseHttpData.getData().isInnerRequestSucceed()) {
@ -372,7 +372,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
}
@Override
public void onFail(Exception e) {
public void onHttpFail(Exception e) {
LmiotDialog.hidden();
ToastUtils.showLong("登录失败");
LogUtils.e("失败:" + e);
@ -387,7 +387,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
.api(new AreaLoginApi(identity_id, mobile, name, pkey))
.request(new OnHttpListener<HttpData<ApiResponse<AreaLoginApi>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<AreaLoginApi>> personInfoBeanHttpData) {
public void onHttpSuccess(HttpData<ApiResponse<AreaLoginApi>> personInfoBeanHttpData) {
LmiotDialog.hidden();
if (personInfoBeanHttpData.isRequestSucceed()) {
if (personInfoBeanHttpData.getData().isInnerRequestSucceed()) {
@ -405,8 +405,8 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
}
@Override
public void onFail(Exception e) {
LmiotDialog.hidden();
public void onHttpFail(Exception e) {
}
});
}

@ -1,12 +1,21 @@
package com.unionmed.unionmedtv.network;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import androidx.annotation.NonNull;
import com.blankj.utilcode.util.ToastUtils;
import com.hjq.http.exception.CancelException;
import com.hjq.http.exception.HttpException;
import com.hjq.http.exception.NetworkException;
import com.hjq.http.exception.ServerException;
import com.hjq.http.exception.TimeoutException;
import com.lxj.xpopup.XPopup;
import com.unionmed.unionmedtv.R;
import com.google.gson.JsonSyntaxException;
@ -24,10 +33,14 @@ import com.unionmed.unionmedtv.login.activity.LoginActivity;
import com.unionmed.unionmedtv.utils.CacheUtil;
import com.unionmed.unionmedtv.utils.Constants;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.GenericArrayType;
import java.lang.reflect.Type;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import okhttp3.Headers;
import okhttp3.Response;
@ -40,13 +53,10 @@ public class RequestHandler implements IRequestHandler {
public RequestHandler(Application application) {
mApplication = application;
}
@NonNull
@NotNull
@Override
public Object requestSucceed(@NonNull HttpRequest<?> httpRequest,
@NonNull Response response, @NonNull Type type) throws Exception {
public Object requestSuccess(@NonNull @NotNull HttpRequest<?> httpRequest, @NonNull @NotNull Response response, @NonNull @NotNull Type type) throws Exception {
if (Response.class.equals(type)) {
return response;
}
@ -135,12 +145,32 @@ public class RequestHandler implements IRequestHandler {
// throw new ResultException(model.getMessage(), model);
}
return result;
}
@NonNull
@Override
public Exception requestFail(@NonNull HttpRequest<?> httpRequest, @NonNull Exception e) {
return null;
if (e instanceof SocketTimeoutException) {
return new TimeoutException(mApplication.getString(R.string.http_server_out_time), e);
}
if (e instanceof UnknownHostException) {
NetworkInfo info = ((ConnectivityManager) mApplication.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
// 判断网络是否连接
if (info != null && info.isConnected()) {
// 有连接就是服务器的问题
return new ServerException(mApplication.getString(R.string.http_server_error), e);
}
// 没有连接就是网络异常
return new NetworkException(mApplication.getString(R.string.http_network_error), e);
}
if (e instanceof IOException) {
// 出现该异常的两种情况
// 1. 调用 EasyHttp.cancel
// 2. 网络请求被中断
return new CancelException(mApplication.getString(R.string.http_request_cancel), e);
}
return new HttpException(e.getMessage(), e);
}
}

@ -11,8 +11,7 @@
android:id="@+id/local"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp" />
/>
<ImageView
android:id="@+id/iv_icon"
android:layout_width="120dp"
@ -196,6 +195,7 @@
app:layout_constraintRight_toRightOf="parent"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_width="200dp"
android:layout_marginRight="20dp"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

@ -3,23 +3,32 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/constraintlayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="220dp"
android:layout_height="220dp"
android:layout_margin="10dp"
android:padding="20dp"
style="@style/FocusStyle"
android:background="@drawable/edit_phone_select"
android:descendantFocusability="afterDescendants"
tools:ignore="MissingPrefix"
>
<ImageView
android:id="@+id/iv_avatar"
android:visibility="gone"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_margin="10dp" />
/>
<FrameLayout
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:id="@+id/remote"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_margin="10dp" />
/>
</androidx.constraintlayout.widget.ConstraintLayout>
Loading…
Cancel
Save