im 库提交

dev
李桢 1 year ago
parent c6982b675f
commit 6b376d92c4
  1. 6
      .idea/compiler.xml
  2. 27
      .idea/gradle.xml
  3. 30
      .idea/jarRepositories.xml
  4. 17
      .idea/misc.xml
  5. 10
      .idea/runConfigurations.xml
  6. 6
      .idea/vcs.xml
  7. 5
      app/build.gradle
  8. 3
      app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java
  9. 14
      app/src/main/java/com/unionmed/unionmedtv/adapter/MsgItemAdapter.java
  10. 2
      app/src/main/java/com/unionmed/unionmedtv/application/MyApplication.java
  11. 10
      app/src/main/java/com/unionmed/unionmedtv/fragment/MsgFragment.java
  12. 308
      app/src/main/java/com/unionmed/unionmedtv/im/CustomNoticeMessageModel.java
  13. 9
      app/src/main/res/layout/item_msg_null_layout.xml
  14. 0
      app/src/main/res/mipmap-xhdpi/icon_mute.png
  15. 2
      build.gradle
  16. 46
      calllib/.gitignore
  17. 19
      calllib/AndroidManifest.xml
  18. 23
      calllib/build.gradle
  19. BIN
      calllib/libs/rong_calllib_5.2.1.51.jar
  20. 37
      common/build.gradle
  21. 1
      common/build/.transforms/9c8ddff6595b43fbf78d6eeedd01fed7.bin
  22. BIN
      common/build/.transforms/9c8ddff6595b43fbf78d6eeedd01fed7/classes/classes.dex
  23. 18
      common/build/generated/source/buildConfig/debug/cn/rongcloud/demo/common/BuildConfig.java
  24. 11
      common/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml
  25. 1
      common/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json
  26. 1
      common/build/intermediates/annotation_processor_list/debug/annotationProcessors.json
  27. BIN
      common/build/intermediates/compile_library_classes/debug/classes.jar
  28. BIN
      common/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar
  29. 3
      common/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
  30. 11
      common/build/intermediates/incremental/packageDebugResources/merged.dir/values/values.xml
  31. 4
      common/build/intermediates/incremental/packageDebugResources/merger.xml
  32. BIN
      common/build/intermediates/javac/debug/classes/cn/rongcloud/demo/common/BuildConfig.class
  33. BIN
      common/build/intermediates/javac/debug/classes/cn/rongcloud/demo/common/MockAppServer$1.class
  34. BIN
      common/build/intermediates/javac/debug/classes/cn/rongcloud/demo/common/MockAppServer$GetTokenCallback.class
  35. BIN
      common/build/intermediates/javac/debug/classes/cn/rongcloud/demo/common/MockAppServer.class
  36. BIN
      common/build/intermediates/javac/debug/classes/cn/rongcloud/demo/common/UiUtils.class
  37. 11
      common/build/intermediates/library_manifest/debug/AndroidManifest.xml
  38. 10
      common/build/intermediates/local_only_symbol_list/debug/parseDebugLibraryResources/R-def.txt
  39. 13
      common/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt
  40. 1
      common/build/intermediates/merged_manifests/debug/output.json
  41. 5
      common/build/intermediates/packaged_res/debug/drawable/btn_style.xml
  42. 13
      common/build/intermediates/packaged_res/debug/layout/layout_loading.xml
  43. 11
      common/build/intermediates/packaged_res/debug/values/values.xml
  44. 3129
      common/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt
  45. 4584
      common/build/intermediates/symbols/debug/R.txt
  46. 37
      common/build/outputs/logs/manifest-merger-debug-report.txt
  47. 21
      common/proguard-rules.pro
  48. 5
      common/src/main/AndroidManifest.xml
  49. 127
      common/src/main/java/cn/rongcloud/demo/common/MockAppServer.java
  50. 52
      common/src/main/java/cn/rongcloud/demo/common/UiUtils.java
  51. 5
      common/src/main/res/drawable/btn_style.xml
  52. 13
      common/src/main/res/layout/layout_loading.xml
  53. 7
      common/src/main/res/values/colors.xml
  54. 3
      common/src/main/res/values/strings.xml
  55. 6
      common/src/main/res/values/themes.xml
  56. 2
      gradle/wrapper/gradle-wrapper.properties
  57. 75
      imlib/AndroidManifest.xml
  58. 24
      imlib/build.gradle
  59. 1
      imlib/build/.transforms/0ae089fd9b15038c563927d4c9c465d4.bin
  60. BIN
      imlib/build/.transforms/0ae089fd9b15038c563927d4c9c465d4/classes/classes.dex
  61. 18
      imlib/build/generated/source/buildConfig/debug/io/rong/libcore/BuildConfig.java
  62. 81
      imlib/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml
  63. 1
      imlib/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json
  64. 1
      imlib/build/intermediates/annotation_processor_list/debug/annotationProcessors.json
  65. 0
      imlib/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt
  66. BIN
      imlib/build/intermediates/compile_library_classes/debug/classes.jar
  67. BIN
      imlib/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar
  68. BIN
      imlib/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/generateDebugRFile/R.jar
  69. BIN
      imlib/build/intermediates/incremental/debug-mergeJavaRes/merge-state
  70. BIN
      imlib/build/intermediates/incremental/debug-mergeJniLibs/merge-state
  71. 2
      imlib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
  72. 2
      imlib/build/intermediates/incremental/mergeDebugShaders/merger.xml
  73. 2
      imlib/build/intermediates/incremental/packageDebugAssets/merger.xml
  74. 1
      imlib/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
  75. 10
      imlib/build/intermediates/incremental/packageDebugResources/merged.dir/values-ar-rIL/values-ar-rIL.xml
  76. 11
      imlib/build/intermediates/incremental/packageDebugResources/merged.dir/values-en/values-en.xml
  77. 6
      imlib/build/intermediates/incremental/packageDebugResources/merged.dir/values-sw/values-sw.xml
  78. 32
      imlib/build/intermediates/incremental/packageDebugResources/merged.dir/values/values.xml
  79. 2
      imlib/build/intermediates/incremental/packageDebugResources/merger.xml
  80. BIN
      imlib/build/intermediates/intermediate-jars/debug/jni/arm64-v8a/libRongIMLib.so
  81. BIN
      imlib/build/intermediates/intermediate-jars/debug/jni/arm64-v8a/libsqlite.so
  82. BIN
      imlib/build/intermediates/intermediate-jars/debug/jni/armeabi-v7a/libRongIMLib.so
  83. BIN
      imlib/build/intermediates/intermediate-jars/debug/jni/armeabi-v7a/libsqlite.so
  84. BIN
      imlib/build/intermediates/intermediate-jars/debug/jni/x86/libRongIMLib.so
  85. BIN
      imlib/build/intermediates/intermediate-jars/debug/jni/x86/libsqlite.so
  86. BIN
      imlib/build/intermediates/intermediate-jars/debug/jni/x86_64/libRongIMLib.so
  87. BIN
      imlib/build/intermediates/intermediate-jars/debug/jni/x86_64/libsqlite.so
  88. BIN
      imlib/build/intermediates/javac/debug/classes/io/rong/libcore/BuildConfig.class
  89. BIN
      imlib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/io/rong/libcore/BuildConfig.class
  90. BIN
      imlib/build/intermediates/library_and_local_jars_jni/debug/arm64-v8a/libRongIMLib.so
  91. BIN
      imlib/build/intermediates/library_and_local_jars_jni/debug/arm64-v8a/libsqlite.so
  92. BIN
      imlib/build/intermediates/library_and_local_jars_jni/debug/armeabi-v7a/libRongIMLib.so
  93. BIN
      imlib/build/intermediates/library_and_local_jars_jni/debug/armeabi-v7a/libsqlite.so
  94. BIN
      imlib/build/intermediates/library_and_local_jars_jni/debug/x86/libRongIMLib.so
  95. BIN
      imlib/build/intermediates/library_and_local_jars_jni/debug/x86/libsqlite.so
  96. BIN
      imlib/build/intermediates/library_and_local_jars_jni/debug/x86_64/libRongIMLib.so
  97. BIN
      imlib/build/intermediates/library_and_local_jars_jni/debug/x86_64/libsqlite.so
  98. BIN
      imlib/build/intermediates/library_java_res/debug/res.jar
  99. 81
      imlib/build/intermediates/library_manifest/debug/AndroidManifest.xml
  100. BIN
      imlib/build/intermediates/merged_jni_libs/debug/out/arm64-v8a/libRongIMLib.so
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="11" />
</component>
</project>

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="PLATFORM" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="$USER_HOME$/.gradle/wrapper/dists/gradle-6.7.1-bin/bwlcbys1h7rz3272sye1xwiv6/gradle-6.7.1" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/calllib" />
<option value="$PROJECT_DIR$/common" />
<option value="$PROJECT_DIR$/imlib" />
<option value="$PROJECT_DIR$/library-player" />
<option value="$PROJECT_DIR$/meeting1v1" />
<option value="$PROJECT_DIR$/rtclib" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
</GradleProjectSettings>
</option>
</component>
</project>

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="BintrayJCenter" />
<option name="name" value="BintrayJCenter" />
<option name="url" value="https://jcenter.bintray.com/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="https://jitpack.io" />
</remote-repository>
<remote-repository>
<option name="id" value="Google" />
<option name="name" value="Google" />
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
</remote-repository>
</component>
</project>

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="..\:/StudioProjects/UnionMedTV/app/src/main/res/layout/activity_hospital_detail.xml" value="0.1988536155202822" />
<entry key="..\:/StudioProjects/UnionMedTV/app/src/main/res/layout/item_type_doctor_layout.xml" value="0.14594356261022928" />
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
</set>
</option>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -103,9 +103,10 @@ dependencies {
implementation 'com.github.JavaNoober.BackgroundLibrary:libraryx:1.7.2'
//IM 5.2.1.55
api project(path: ':imlib')
api project(path: ':calllib')
// api project(path: ':imlib')
// api project(path: ':calllib')
//https://github.com/yipianfengye/android-zxingLibrary
compile 'cn.yipianfengye.android:zxing-library:2.2'
compile 'com.github.lmiot:LoadDialog:V2.1'
api project(path: ':meeting1v1')
}

@ -77,13 +77,14 @@ public class MsgActivity extends BaseActivity {
}
public void getMsgList(){
LmiotDialog.show(MsgActivity.this,"获取聊天数据");
Conversation.ConversationType[] conversationTypes = {Conversation.ConversationType.PRIVATE, Conversation.ConversationType.GROUP};
Conversation.ConversationType[] conversationTypes = {Conversation.ConversationType.PRIVATE};
RongIMClient.getInstance().getConversationListByPage(new RongIMClient.
ResultCallback<List<Conversation>>() {
@Override
public void onSuccess(List<Conversation> conversations) {
LmiotDialog.hidden();
if(conversations==null){
lin.setVisibility(View.VISIBLE);
tv_content.setText("暂无数据");

@ -17,6 +17,7 @@ import com.chad.library.adapter.base.delegate.BaseMultiTypeDelegate;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.unionmed.unionmedtv.R;
import com.unionmed.unionmedtv.activity.MsgActivity;
import com.unionmed.unionmedtv.im.CustomNoticeMessageModel;
import com.unionmed.unionmedtv.im.MeetingMsgModel;
import com.unionmed.unionmedtv.utils.CacheUtil;
import com.unionmed.unionmedtv.utils.OnChildClickListener;
@ -27,6 +28,7 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import cn.rongcloud.demo.meeting.MeetingActivity;
import io.rong.imlib.model.Message;
import io.rong.imlib.model.UnknownMessage;
import io.rong.message.ImageMessage;
@ -85,6 +87,12 @@ public class MsgItemAdapter extends BaseDelegateMultiAdapter<Message, BaseViewHo
} else if (message.getContent() instanceof UnknownMessage &&
message.getMessageDirection() == Message.MessageDirection.SEND) {
return 9;
}else if (message.getContent() instanceof CustomNoticeMessageModel &&
message.getMessageDirection() == Message.MessageDirection.RECEIVE) {
return 10;
} else if (message.getContent() instanceof CustomNoticeMessageModel &&
message.getMessageDirection() == Message.MessageDirection.SEND) {
return 11;
} else {
return 0;
}
@ -100,7 +108,9 @@ public class MsgItemAdapter extends BaseDelegateMultiAdapter<Message, BaseViewHo
.addItemType(6, R.layout.item_msg_order_left_layout)//订单类型
.addItemType(7, R.layout.item_msg_order_right_layout)
.addItemType(8, R.layout.item_msg_unknown_left_layout)//未知类型
.addItemType(9, R.layout.item_msg_unknown_right_layout);
.addItemType(9, R.layout.item_msg_unknown_right_layout)
.addItemType(10, R.layout.item_msg_null_layout)//不展示消息类型
.addItemType(11, R.layout.item_msg_null_layout);
}
@ -172,6 +182,8 @@ public class MsgItemAdapter extends BaseDelegateMultiAdapter<Message, BaseViewHo
vh.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("TAG", "onClick: ====================="+message.getTargetId());
onChildClickListener.onChildClick(view, vh.getLayoutPosition(), message);
}
});

@ -18,6 +18,7 @@ import com.tencent.mmkv.MMKV;
import com.unionmed.unionmedtv.R;
import com.unionmed.unionmedtv.activity.DoctorDetailActivity;
import com.unionmed.unionmedtv.activity.VideoCallActivity;
import com.unionmed.unionmedtv.im.CustomNoticeMessageModel;
import com.unionmed.unionmedtv.im.MeetingMsgModel;
import com.unionmed.unionmedtv.livedatas.LiveDataBus;
import com.unionmed.unionmedtv.network.RequestHandler;
@ -75,6 +76,7 @@ public class MyApplication extends Application {
//初始化im
initRong();
RongIMClient.registerMessageType(MeetingMsgModel.class);
RongIMClient.registerMessageType(CustomNoticeMessageModel.class);
}
private SSLContext mySSLContext;

@ -19,6 +19,7 @@ import com.example.yideng.loaddialoglibrary.LmiotDialog;
import com.unionmed.unionmedtv.R;
import com.unionmed.unionmedtv.activity.DoctorActivity;
import com.unionmed.unionmedtv.adapter.MsgItemAdapter;
import com.unionmed.unionmedtv.im.CustomNoticeMessageModel;
import com.unionmed.unionmedtv.livedatas.LiveDataBus;
import com.unionmed.unionmedtv.utils.Constants;
import com.unionmed.unionmedtv.utils.LinearSpacingItemDecoration;
@ -29,6 +30,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import cn.rongcloud.demo.meeting.MeetingActivity;
import io.rong.imlib.IRongCoreCallback;
import io.rong.imlib.IRongCoreEnum;
import io.rong.imlib.RongCoreClient;
@ -97,7 +99,8 @@ public class MsgFragment extends Fragment implements View.OnClickListener {
msgItemAdapter = new MsgItemAdapter(list, new OnChildClickListener() {
@Override
public <T> void onChildClick(View view, int position, T data) {
ToastUtils.showLong("点解item");
// MeetingActivity.start(getContext(), message.getTargetId(), false);
}
});
View emptyView = LayoutInflater.from(getActivity())
@ -171,6 +174,11 @@ public class MsgFragment extends Fragment implements View.OnClickListener {
Log.i("TAG", "onComplete: ================"+messageList.get(i).getContent());
}
Collections.reverse(messageList);
for (int i=0;i<messageList.size();i++){
if(messageList.get(i).getContent() instanceof CustomNoticeMessageModel){
messageList.remove(i);
}
}
list.addAll(messageList);
msgItemAdapter.notifyDataSetChanged();
recyclerView.requestFocus();

@ -0,0 +1,308 @@
package com.unionmed.unionmedtv.im;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import io.rong.common.ParcelUtils;
import io.rong.imlib.MessageTag;
import io.rong.imlib.model.MentionedInfo;
import io.rong.imlib.model.MessageContent;
import io.rong.imlib.model.UserInfo;
@MessageTag(value = "UMCustomNoticeMessage", flag = MessageTag.STATUS)
public class CustomNoticeMessageModel extends MessageContent {
private static final String TAG = "CustomNoticeMessageModel";
public static final Creator<CustomNoticeMessageModel> CREATOR = new Creator<CustomNoticeMessageModel>() {
public CustomNoticeMessageModel createFromParcel(Parcel source) {
return new CustomNoticeMessageModel(source);
}
public CustomNoticeMessageModel[] newArray(int size) {
return new CustomNoticeMessageModel[size];
}
};
private String content;
private String contentType;
private String ext;
private String logo;
private String text;
private String title;
private String url;
/**
* 将本地消息对象序列化为消息数据
*
* @return 消息数据
*/
@Override
public byte[] encode() {
JSONObject jsonObj = new JSONObject();
try {
// 消息携带用户信息时, 自定义消息需添加下面代码
if (getJSONUserInfo() != null) {
jsonObj.putOpt("user", getJSONUserInfo());
}
// 用于群组聊天, 消息携带 @ 人信息时, 自定义消息需添加下面代码
if (getJsonMentionInfo() != null) {
jsonObj.putOpt("mentionedInfo", getJsonMentionInfo());
}
// 将所有自定义消息的内容,都序列化至 json 对象中
jsonObj.put("content", this.content);
jsonObj.put("contentType", this.contentType);
jsonObj.put("logo", this.logo);
jsonObj.put("text", this.text);
jsonObj.put("title", this.title);
jsonObj.put("url", this.url);
jsonObj.put("ext", this.ext);
} catch (JSONException e) {
Log.e(TAG, "JSONException " + e.getMessage());
}
try {
return jsonObj.toString().getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
Log.e(TAG, "UnsupportedEncodingException ", e);
}
return null;
}
/**
* 创建 MyMyTextContent(byte[] data) 带有 byte[] 的构造方法用于解析消息内容.
*/
public CustomNoticeMessageModel(byte[] data) {
if (data == null) {
return;
}
String jsonStr = null;
try {
jsonStr = new String(data, "UTF-8");
} catch (UnsupportedEncodingException e) {
Log.e(TAG, "UnsupportedEncodingException ", e);
}
if (jsonStr == null) {
Log.e(TAG, "jsonStr is null ");
return;
}
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// 消息携带用户信息时, 自定义消息需添加下面代码
if (jsonObj.has("user")) {
setUserInfo(parseJsonToUserInfo(jsonObj.getJSONObject("user")));
}
// 用于群组聊天, 消息携带 @ 人信息时, 自定义消息需添加下面代码
if (jsonObj.has("mentionedInfo")) {
setMentionedInfo(parseJsonToMentionInfo(jsonObj.getJSONObject("mentionedInfo")));
}
// 将所有自定义变量从收到的 json 解析并赋值
if (jsonObj.has("content")) {
content = jsonObj.optString("content");
}
if (jsonObj.has("contentType")) {
contentType = jsonObj.optString("contentType");
}
if (jsonObj.has("logo")) {
logo = jsonObj.optString("logo");
}
if (jsonObj.has("text")) {
text = jsonObj.optString("text");
}
if (jsonObj.has("title")) {
title = jsonObj.optString("title");
}
if (jsonObj.has("url")) {
url = jsonObj.optString("url");
}
if (jsonObj.has("ext")) {
ext = jsonObj.optString("ext");
}
// if (jsonObj.has("ext")) {
// setExt(parseJsonToExt(jsonObj.getJSONObject("ext")));
// }
} catch (JSONException e) {
Log.e(TAG, "JSONException " + e.getMessage());
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
ParcelUtils.writeToParcel(dest, this.getExtra());
ParcelUtils.writeToParcel(dest, this.getUserInfo());
ParcelUtils.writeToParcel(dest, this.getMentionedInfo());
ParcelUtils.writeToParcel(dest, this.isDestruct() ? 1 : 0);
ParcelUtils.writeToParcel(dest, this.getDestructTime());
ParcelUtils.writeToParcel(dest, this.content);
ParcelUtils.writeToParcel(dest, this.contentType);
ParcelUtils.writeToParcel(dest, this.logo);
ParcelUtils.writeToParcel(dest, this.text);
ParcelUtils.writeToParcel(dest, this.title);
ParcelUtils.writeToParcel(dest, this.url);
ParcelUtils.writeToParcel(dest, this.ext);
}
public ExtBean parseJsonToExt(JSONObject jsonObj) {
ExtBean info = null;
String roomID = jsonObj.optString("roomID");
String GroupID = jsonObj.optString("GroupID");
if (!TextUtils.isEmpty(roomID) && !TextUtils.isEmpty(GroupID)) {
info = new ExtBean(roomID, GroupID);
}
return info;
}
/**
* 构造函数
*
* @param in 初始化传入的 Parcel
*/
public CustomNoticeMessageModel(Parcel in) {
this.setExtra(ParcelUtils.readFromParcel(in));
this.setUserInfo((UserInfo) ParcelUtils.readFromParcel(in, UserInfo.class));
this.setMentionedInfo((MentionedInfo) ParcelUtils.readFromParcel(in, MentionedInfo.class));
this.setDestruct(ParcelUtils.readIntFromParcel(in) == 1);
this.setDestructTime(ParcelUtils.readLongFromParcel(in));
this.setContent(ParcelUtils.readFromParcel(in));
this.setContentType(ParcelUtils.readFromParcel(in));
this.setLogo(ParcelUtils.readFromParcel(in));
this.setText(ParcelUtils.readFromParcel(in));
this.setTitle(ParcelUtils.readFromParcel(in));
this.setUrl(ParcelUtils.readFromParcel(in));
this.setExt(ParcelUtils.readFromParcel(in));
// this.setExt((ExtBean) ParcelUtils.readFromParcel(in, ExtBean.class));
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public String getExt() {
return ext;
}
public void setExt(String ext) {
this.ext = ext;
}
public String getLogo() {
return logo;
}
public void setLogo(String logo) {
this.logo = logo;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public static class ExtBean implements Parcelable {
private String roomID;
private String groupID;
public String getRoomID() {
return roomID;
}
public void setRoomID(String roomID) {
this.roomID = roomID;
}
public String getGroupID() {
return groupID;
}
public void setGroupID(String groupID) {
groupID = groupID;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.roomID);
dest.writeString(this.groupID);
}
public void readFromParcel(Parcel source) {
this.roomID = source.readString();
this.groupID = source.readString();
}
public ExtBean(String roomID, String groupID) {
this.roomID = roomID;
this.groupID = groupID;
}
protected ExtBean(Parcel in) {
this.roomID = in.readString();
this.groupID = in.readString();
}
public static final Creator<ExtBean> CREATOR = new Creator<ExtBean>() {
@Override
public ExtBean createFromParcel(Parcel source) {
return new ExtBean(source);
}
@Override
public ExtBean[] newArray(int size) {
return new ExtBean[size];
}
};
}
}

@ -0,0 +1,9 @@
<?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"
android:id="@+id/constraintlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</androidx.constraintlayout.widget.ConstraintLayout>

@ -10,7 +10,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
classpath 'com.android.tools.build:gradle:3.5.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

46
calllib/.gitignore vendored

@ -0,0 +1,46 @@
# Built application files
*.apk
*.ap_
# Files for the Dalvik VM
*.dex
# Java class files
*.class
# Genetated files
bin/
gen/
# OSX files
.DS_Store
# Android Studio
*.iml
.idea
# Gradle files
.gradle/
build/
# Local configuration file (sdk path , etc)
local.properties
project.properties
# Proguard folder generated bg Eclipse
proguard/
# Log Files
*.log
/build
/captures
.externalNativeBuild
/.idea/caches/build_file_checksums.ser
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
src/test/
src/androidTest/
!<path_to_libs>

@ -0,0 +1,19 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.rong.calllib">
<application android:supportsRtl="true">
<meta-data
android:name="rc.calllib"
android:value="io.rong.calllib.RongCallClient" />
</application>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

@ -0,0 +1,23 @@
apply plugin: 'com.android.library'
android {
compileSdkVersion 31
defaultConfig {
minSdkVersion 19
targetSdkVersion 31
versionName "5.2.1.51"
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
jniLibs.srcDirs = ['libs']
}
}
}
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
api project(':rtclib')
}

@ -0,0 +1,37 @@
plugins {
id 'com.android.library'
}
android {
compileSdkVersion 30
defaultConfig {
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
ndk {
abiFilters "armeabi-v7a"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.3.0'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

@ -0,0 +1,18 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package cn.rongcloud.demo.common;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String LIBRARY_PACKAGE_NAME = "cn.rongcloud.demo.common";
/**
* @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
*/
@Deprecated
public static final String APPLICATION_ID = "cn.rongcloud.demo.common";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
}

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.rongcloud.demo.common"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="27" />
</manifest>

@ -0,0 +1 @@
[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"common-debug.aar","fullName":"debug","baseName":"debug"},"path":"AndroidManifest.xml","properties":{"packageId":"cn.rongcloud.demo.common","split":""}}]

@ -0,0 +1,3 @@
#Thu Jul 20 17:13:35 CST 2023
D\:\\StudioProjects\\UnionMedTV\\common\\src\\main\\res\\layout\\layout_loading.xml=D\:\\StudioProjects\\UnionMedTV\\common\\build\\intermediates\\packaged_res\\debug\\layout\\layout_loading.xml
D\:\\StudioProjects\\UnionMedTV\\common\\src\\main\\res\\drawable\\btn_style.xml=D\:\\StudioProjects\\UnionMedTV\\common\\build\\intermediates\\packaged_res\\debug\\drawable\\btn_style.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#FF000000</color>
<color name="light_blue">#FF57B5F9</color>
<color name="purple_700">#FF3700B3</color>
<color name="white">#FFFFFFFF</color>
<string name="app_name">common</string>
<style name="TransparentDialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
</resources>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\StudioProjects\UnionMedTV\common\src\main\res"/><source path="D:\StudioProjects\UnionMedTV\common\build\generated\res\rs\debug"/><source path="D:\StudioProjects\UnionMedTV\common\build\generated\res\resValues\debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\StudioProjects\UnionMedTV\common\src\main\res"><file name="btn_style" path="D:\StudioProjects\UnionMedTV\common\src\main\res\drawable\btn_style.xml" qualifiers="" type="drawable"/><file name="layout_loading" path="D:\StudioProjects\UnionMedTV\common\src\main\res\layout\layout_loading.xml" qualifiers="" type="layout"/><file path="D:\StudioProjects\UnionMedTV\common\src\main\res\values\colors.xml" qualifiers=""><color name="black">#FF000000</color><color name="white">#FFFFFFFF</color><color name="light_blue">#FF57B5F9</color><color name="purple_700">#FF3700B3</color></file><file path="D:\StudioProjects\UnionMedTV\common\src\main\res\values\strings.xml" qualifiers=""><string name="app_name">common</string></file><file path="D:\StudioProjects\UnionMedTV\common\src\main\res\values\themes.xml" qualifiers=""><style name="TransparentDialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style></file></source><source path="D:\StudioProjects\UnionMedTV\common\build\generated\res\rs\debug"/><source path="D:\StudioProjects\UnionMedTV\common\build\generated\res\resValues\debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\StudioProjects\UnionMedTV\common\src\debug\res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\StudioProjects\UnionMedTV\common\src\debug\res"/></dataSet><mergedItems/></merger>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.rongcloud.demo.common"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="27" />
</manifest>

@ -0,0 +1,10 @@
R_DEF: Internal format may change without notice
local
color black
color light_blue
color purple_700
color white
drawable btn_style
layout layout_loading
string app_name
style TransparentDialog

@ -0,0 +1,13 @@
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="cn.rongcloud.demo.common"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-sdk
8 android:minSdkVersion="19"
8-->D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
9 android:targetSdkVersion="27" />
9-->D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
10
11</manifest>

@ -0,0 +1 @@
[{"outputType":{"type":"MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"common-debug.aar","fullName":"debug","baseName":"debug"},"path":"..\\..\\library_manifest\\debug\\AndroidManifest.xml","properties":{"packageId":"cn.rongcloud.demo.common","split":""}}]

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="6dp" />
<solid android:color="@color/light_blue" />
</shape>

@ -0,0 +1,13 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
style="@style/Theme.AppCompat.NoActionBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center_horizontal"
android:indeterminateTint="@color/purple_700" />
</RelativeLayout>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#FF000000</color>
<color name="light_blue">#FF57B5F9</color>
<color name="purple_700">#FF3700B3</color>
<color name="white">#FFFFFFFF</color>
<string name="app_name">common</string>
<style name="TransparentDialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
</resources>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,37 @@
-- Merging decision tree log ---
manifest
ADDED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:1-5:12
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:1-5:12
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:1-5:12
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:1-5:12
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:1-5:12
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:1-5:12
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:1-5:12
package
ADDED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:11-45
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
android:versionName
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
ADDED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:1-5:12
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
xmlns:android
ADDED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:1-5:12
android:versionCode
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
ADDED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml:2:1-5:12
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
uses-sdk
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml reason: use-sdk injection requested
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
android:targetSdkVersion
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
ADDED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
android:minSdkVersion
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
ADDED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml
INJECTED from D:\StudioProjects\UnionMedTV\common\src\main\AndroidManifest.xml

@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="cn.rongcloud.demo.common">
</manifest>

@ -0,0 +1,127 @@
package cn.rongcloud.demo.common;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;
public class MockAppServer {
private static final String TOKEN_SERVER = "https://api-cn.ronghub.com";
public static void getToken(final String appKey, final String appSecret, final String userId, final GetTokenCallback callback) {
new Thread(new Runnable() {
@Override
public void run() {
long timestamp = System.currentTimeMillis();
int nonce = new Random().nextInt(9999) + 10000;
String signature = sha1(appSecret + nonce + timestamp);
InputStream is = null;
OutputStream out = null;
ByteArrayOutputStream message = null;
try {
HttpURLConnection conn = (HttpURLConnection) new URL(TOKEN_SERVER + "/user/getToken.json").openConnection();
conn.setRequestMethod("POST");
conn.setReadTimeout(5000);
conn.setConnectTimeout(5000);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.addRequestProperty("Timestamp", String.valueOf(timestamp));
conn.addRequestProperty("Nonce", String.valueOf(nonce));
conn.addRequestProperty("Signature", signature);
conn.addRequestProperty("App-Key", appKey);
String data = "userId=" + userId;
out = conn.getOutputStream();
out.write(data.getBytes());
out.flush();
if (conn.getResponseCode() == 200) {
is = conn.getInputStream();
message = new ByteArrayOutputStream();
int len = 0;
byte[] buffer = new byte[1024];
while ((len = is.read(buffer)) != -1) {
message.write(buffer, 0, len);
}
String msg = new String(message.toByteArray());
JSONObject jsonObject = new JSONObject(msg);
if (jsonObject.optInt("code") == 200) {
callback.onGetTokenSuccess(jsonObject.optString("token"));
} else {
callback.onGetTokenFailed("code = " + jsonObject.optInt("code"));
}
}
} catch (Exception e) {
e.printStackTrace();
callback.onGetTokenFailed(e.getMessage());
} finally {
if (null != is) {
try {
is.close();
} catch (IOException ignored) {
}
}
if (null != out) {
try {
out.close();
} catch (IOException ignored) {
}
}
if (null != message) {
try {
message.close();
} catch (IOException ignored) {
}
}
}
}
}).start();
}
private static String convertToHex(byte[] data) {
StringBuilder buf = new StringBuilder();
for (byte b : data) {
int halfByte = (b >>> 4) & 0x0F;
int twoHalfs = 0;
do {
buf.append(halfByte <= 9 ? (char) ('0' + halfByte) : (char) ('a' + halfByte - 10));
halfByte = b & 0x0F;
} while (twoHalfs++ < 1);
}
return buf.toString();
}
private static String sha1(String text) {
MessageDigest md;
try {
md = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
md.update(text.getBytes(StandardCharsets.ISO_8859_1), 0, text.length());
byte[] sha1hash = md.digest();
return convertToHex(sha1hash);
}
public interface GetTokenCallback {
void onGetTokenSuccess(String token);
void onGetTokenFailed(String err);
}
}

@ -0,0 +1,52 @@
/*
* Copyright © 2021 RongCloud. All rights reserved.
*/
package cn.rongcloud.demo.common;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.os.SystemClock;
public class UiUtils {
/// 两次点击按钮之间的点击间隔不能少于 1000 毫秒
private static final int MIN_CLICK_DELAY_TIME = 1000;
private static long lastClickTime;
private static AlertDialog waitingDialog;
public static boolean isFastClick() {
return isFastClick(-1);
}
public static boolean isFastClick(long during) {
boolean flag = false;
long curClickTime = SystemClock.elapsedRealtime();
long tempDuring = during < 0 ? MIN_CLICK_DELAY_TIME : during;
if ((curClickTime - lastClickTime) >= tempDuring) {
flag = true;
}
lastClickTime = curClickTime;
return flag;
}
public static void showWaitingDialog(Context context) {
if (waitingDialog == null) {
waitingDialog = new AlertDialog.Builder(context, R.style.TransparentDialog).create();
waitingDialog.getWindow().setBackgroundDrawable(new ColorDrawable());
waitingDialog.setCancelable(false);
waitingDialog.setCanceledOnTouchOutside(false);
}
waitingDialog.show();
waitingDialog.setContentView(R.layout.layout_loading);
}
public static void hideWaitingDialog() {
if (waitingDialog != null && waitingDialog.isShowing()) {
waitingDialog.dismiss();
waitingDialog = null;
}
}
}

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="6dp" />
<solid android:color="@color/light_blue" />
</shape>

@ -0,0 +1,13 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
style="@style/Theme.AppCompat.NoActionBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center_horizontal"
android:indeterminateTint="@color/purple_700" />
</RelativeLayout>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="light_blue">#FF57B5F9</color>
<color name="purple_700">#FF3700B3</color>
</resources>

@ -0,0 +1,3 @@
<resources>
<string name="app_name">common</string>
</resources>

@ -0,0 +1,6 @@
<resources>
<style name="TransparentDialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
</resources>

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

@ -0,0 +1,75 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="io.rong.libcore">
<!-- 保存图片,拍照等 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 网络 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 消息通道保活 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 定位,如果您需要定位相关的功能,可以打开以下注释 -->
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> -->
<uses-permission android:name="${applicationId}.permission.RONG_ACCESS_RECEIVER" />
<!--融云自定义接收广播权限,用于广播接收-->
<permission
android:name="${applicationId}.permission.RONG_ACCESS_RECEIVER"
android:protectionLevel="signature" />
<application>
<service
android:name="io.rong.imlib.ipc.RongService"
android:process=":ipc" />
<receiver android:name="io.rong.imlib.ConnectChangeReceiver" />
<receiver
android:name="io.rong.imlib.HeartbeatReceiver"
android:process=":ipc" />
<!--必选: SDK 核心功能-->
<service
android:name="io.rong.push.rongpush.PushService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process="io.rong.push" />
<!-- push 相关事件接收器 -->
<receiver
android:name="io.rong.push.rongpush.PushReceiver"
android:exported="true"
android:process="io.rong.push"> <!-- 此处进程可以改名,名称需要和PushService所在进程统一 -->
<!-- 心跳事件和网络切换事件监听,必须 -->
<intent-filter tools:node="removeAll">
<action android:name="io.rong.push.intent.action.HEART_BEAT" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<!-- 部分用户事件监听, 用来提高推送拉活率; 可移除 -->
<intent-filter tools:node="removeAll">
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
<activity
android:name="io.rong.push.notification.RongBridgeActivity"
android:enabled="true"
android:exported="true"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<action android:name="io.rong.push.notification.RongBridgeActivity"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>

@ -0,0 +1,24 @@
apply plugin: 'com.android.library'
android {
compileSdkVersion 31
defaultConfig {
minSdkVersion 19
targetSdkVersion 31
versionName "5.2.1.55"
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
jniLibs.srcDirs = ['libs']
}
}
}
dependencies {
api fileTree(dir: 'libs', include: ['*.jar','*.aar'])
api 'com.google.code.gson:gson:2.8.6'
}

@ -0,0 +1,18 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package io.rong.libcore;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String LIBRARY_PACKAGE_NAME = "io.rong.libcore";
/**
* @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
*/
@Deprecated
public static final String APPLICATION_ID = "io.rong.libcore";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = -1;
public static final String VERSION_NAME = "5.2.1.55";
}

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="io.rong.libcore"
android:versionName="5.2.1.55" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="31" />
<!-- 保存图片,拍照等 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 网络 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 消息通道保活 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 定位,如果您需要定位相关的功能,可以打开以下注释 -->
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> -->
<uses-permission android:name="dollar_openBracket_applicationId_closeBracket.permission.RONG_ACCESS_RECEIVER" />
<!-- 融云自定义接收广播权限,用于广播接收 -->
<permission
android:name="dollar_openBracket_applicationId_closeBracket.permission.RONG_ACCESS_RECEIVER"
android:protectionLevel="signature" />
<application>
<service
android:name="io.rong.imlib.ipc.RongService"
android:process=":ipc" />
<receiver android:name="io.rong.imlib.ConnectChangeReceiver" />
<receiver
android:name="io.rong.imlib.HeartbeatReceiver"
android:process=":ipc" />
<!-- 必选: SDK 核心功能 -->
<service
android:name="io.rong.push.rongpush.PushService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process="io.rong.push" />
<!-- push 相关事件接收器 -->
<receiver
android:name="io.rong.push.rongpush.PushReceiver"
android:exported="true"
android:process="io.rong.push" > <!-- 此处进程可以改名,名称需要和PushService所在进程统一 -->
<!-- 心跳事件和网络切换事件监听,必须 -->
<intent-filter tools:node="removeAll" >
<action android:name="io.rong.push.intent.action.HEART_BEAT" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<!-- 部分用户事件监听, 用来提高推送拉活率; 可移除 -->
<intent-filter tools:node="removeAll" >
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
<activity
android:name="io.rong.push.notification.RongBridgeActivity"
android:enabled="true"
android:exported="true"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="io.rong.push.notification.RongBridgeActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>

@ -0,0 +1 @@
[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":-1,"versionName":"5.2.1.55","enabled":true,"outputFile":"imlib-debug.aar","fullName":"debug","baseName":"debug"},"path":"AndroidManifest.xml","properties":{"packageId":"io.rong.libcore","split":""}}]

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\StudioProjects\UnionMedTV\imlib\libs"><file name="arm64-v8a/libRongIMLib.so" path="D:\StudioProjects\UnionMedTV\imlib\libs\arm64-v8a\libRongIMLib.so"/><file name="arm64-v8a/libsqlite.so" path="D:\StudioProjects\UnionMedTV\imlib\libs\arm64-v8a\libsqlite.so"/><file name="armeabi-v7a/libRongIMLib.so" path="D:\StudioProjects\UnionMedTV\imlib\libs\armeabi-v7a\libRongIMLib.so"/><file name="armeabi-v7a/libsqlite.so" path="D:\StudioProjects\UnionMedTV\imlib\libs\armeabi-v7a\libsqlite.so"/><file name="rong_chatroom_5.2.1.55.aar" path="D:\StudioProjects\UnionMedTV\imlib\libs\rong_chatroom_5.2.1.55.aar"/><file name="rong_customservice_5.2.1.55.aar" path="D:\StudioProjects\UnionMedTV\imlib\libs\rong_customservice_5.2.1.55.aar"/><file name="rong_discussion_5.2.1.55.aar" path="D:\StudioProjects\UnionMedTV\imlib\libs\rong_discussion_5.2.1.55.aar"/><file name="rong_imlibcore_5.2.1.55.jar" path="D:\StudioProjects\UnionMedTV\imlib\libs\rong_imlibcore_5.2.1.55.jar"/><file name="rong_imlib_5.2.1.55.jar" path="D:\StudioProjects\UnionMedTV\imlib\libs\rong_imlib_5.2.1.55.jar"/><file name="rong_location_5.2.1.55.aar" path="D:\StudioProjects\UnionMedTV\imlib\libs\rong_location_5.2.1.55.aar"/><file name="rong_publicservice_5.2.1.55.aar" path="D:\StudioProjects\UnionMedTV\imlib\libs\rong_publicservice_5.2.1.55.aar"/><file name="x86/libRongIMLib.so" path="D:\StudioProjects\UnionMedTV\imlib\libs\x86\libRongIMLib.so"/><file name="x86/libsqlite.so" path="D:\StudioProjects\UnionMedTV\imlib\libs\x86\libsqlite.so"/><file name="x86_64/libRongIMLib.so" path="D:\StudioProjects\UnionMedTV\imlib\libs\x86_64\libRongIMLib.so"/><file name="x86_64/libsqlite.so" path="D:\StudioProjects\UnionMedTV\imlib\libs\x86_64\libsqlite.so"/></source></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\StudioProjects\UnionMedTV\imlib\src\debug\jniLibs"/></dataSet></merger>

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\StudioProjects\UnionMedTV\imlib\src\main\shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\StudioProjects\UnionMedTV\imlib\src\debug\shaders"/></dataSet></merger>

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\StudioProjects\UnionMedTV\imlib\src\main\assets"/><source path="D:\StudioProjects\UnionMedTV\imlib\build\intermediates\shader_assets\debug\compileDebugShaders\out"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\StudioProjects\UnionMedTV\imlib\src\debug\assets"/></dataSet></merger>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="rc_init_failed">فشل الاتصال بخدمة العميل</string>
<string name="rc_location_sharing_ended"> تم مشاركة الموقع </string>
<string name="rc_notification_channel_name">رسالة جديدة</string>
<string name="rc_notification_new_msg">رسائل %2$d أرسل %1$d</string>
<string name="rc_notification_new_plural_msg"> رسائل %2$d جهات اتصال %1$d </string>
<string name="rc_notification_ticker_text">لقد تلقيت رسالة جديدة</string>
<string name="rc_quit_custom_service">تم ترك خدمة العميل </string>
</resources>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="rc_init_failed">Failed Connect Custom Service</string>
<string name="rc_location_sharing_ended">Real-time Location session ended.</string>
<string name="rc_notification_channel_name">New Messages</string>
<string name="rc_notification_new_msg">%1$s sent %2$d messages</string>
<string name="rc_notification_new_plural_msg">%1$d contacts sent %2$d messages</string>
<string name="rc_notification_ticker_text">You have a new message</string>
<string name="rc_quit_custom_service">Custom Service Have Quit</string>
<string name="rc_receive_location_share_msg">A location sharing message was received.</string>
</resources>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="rc_notification_new_msg">%1$s ametuma ujumbe  %2$d</string>
<string name="rc_notification_new_plural_msg">Mrafiki.%1$d wametuma ujumbe  %2$d</string>
<string name="rc_notification_ticker_text">Umepokea Ujumbe Mpya</string>
</resources>

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="rc_extension_history">true</bool>
<bool name="rc_q_storage_mode_enable">true</bool>
<bool name="rc_secure_shared_preferences">false</bool>
<bool name="rc_typing_status">false</bool>
<integer name="rc_disappear_interval">6000</integer>
<integer name="rc_image_quality">85</integer>
<integer name="rc_image_size">1080</integer>
<integer name="rc_location_thumb_height">240</integer>
<integer name="rc_location_thumb_quality">70</integer>
<integer name="rc_location_thumb_width">408</integer>
<integer name="rc_max_original_image_size">200</integer>
<integer name="rc_resume_file_transfer_size_each_slice">20971520</integer>
<integer name="rc_sight_compress_height">960</integer>
<integer name="rc_sight_compress_width">544</integer>
<integer name="rc_thumb_compress_min_size">100</integer>
<integer name="rc_thumb_compress_size">240</integer>
<integer name="rc_thumb_quality">30</integer>
<string name="push_heartbeat_timer">240000</string>
<string name="rc_heartbeat_acquire_time">1000</string>
<string name="rc_heartbeat_timer">150000</string>
<string name="rc_init_failed">连接客服失败</string>
<string name="rc_location_sharing_ended">位置共享已结束</string>
<string name="rc_media_message_default_save_path">/RongCloud/Media/</string>
<string name="rc_notification_channel_name">新消息</string>
<string name="rc_notification_new_msg">%1$s发来了%2$d条消息</string>
<string name="rc_notification_new_plural_msg">%1$d个联系人发来了%2$d条消息</string>
<string name="rc_notification_ticker_text">你收到了一条新消息</string>
<string name="rc_quit_custom_service">客服已结束</string>
<string name="rc_receive_location_share_msg">收到一条位置共享消息</string>
</resources>

File diff suppressed because one or more lines are too long

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="io.rong.libcore"
android:versionName="5.2.1.55" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="31" />
<!-- 保存图片,拍照等 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 网络 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 消息通道保活 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 定位,如果您需要定位相关的功能,可以打开以下注释 -->
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> -->
<uses-permission android:name="${applicationId}.permission.RONG_ACCESS_RECEIVER" />
<!-- 融云自定义接收广播权限,用于广播接收 -->
<permission
android:name="${applicationId}.permission.RONG_ACCESS_RECEIVER"
android:protectionLevel="signature" />
<application>
<service
android:name="io.rong.imlib.ipc.RongService"
android:process=":ipc" />
<receiver android:name="io.rong.imlib.ConnectChangeReceiver" />
<receiver
android:name="io.rong.imlib.HeartbeatReceiver"
android:process=":ipc" />
<!-- 必选: SDK 核心功能 -->
<service
android:name="io.rong.push.rongpush.PushService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process="io.rong.push" />
<!-- push 相关事件接收器 -->
<receiver
android:name="io.rong.push.rongpush.PushReceiver"
android:exported="true"
android:process="io.rong.push" > <!-- 此处进程可以改名,名称需要和PushService所在进程统一 -->
<!-- 心跳事件和网络切换事件监听,必须 -->
<intent-filter tools:node="removeAll" >
<action android:name="io.rong.push.intent.action.HEART_BEAT" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<!-- 部分用户事件监听, 用来提高推送拉活率; 可移除 -->
<intent-filter tools:node="removeAll" >
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
<activity
android:name="io.rong.push.notification.RongBridgeActivity"
android:enabled="true"
android:exported="true"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="io.rong.push.notification.RongBridgeActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save