├── .editorconfig ├── .gitignore ├── CONFIGKEY.md ├── CONFIGKEY.zh-CN.md ├── Demo ├── .gitignore ├── app │ ├── build.gradle │ ├── google-services.json │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── openim │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── io │ │ │ └── openim │ │ │ └── android │ │ │ └── demo │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── io │ │ │ │ └── openim │ │ │ │ └── android │ │ │ │ └── demo │ │ │ │ ├── DemoApplication.java │ │ │ │ ├── SplashActivity.java │ │ │ │ ├── adapter │ │ │ │ └── FragmentAdapter.java │ │ │ │ ├── repository │ │ │ │ └── OpenIMService.java │ │ │ │ ├── services │ │ │ │ └── MyFirebaseMessagingService.java │ │ │ │ ├── ui │ │ │ │ ├── login │ │ │ │ │ ├── LoginActivity.java │ │ │ │ │ ├── RegisterActivity.java │ │ │ │ │ ├── ResetPasswordActivity.java │ │ │ │ │ ├── SupplementInfoActivity.java │ │ │ │ │ └── VerificationCodeActivity.java │ │ │ │ ├── main │ │ │ │ │ ├── EditTextActivity.java │ │ │ │ │ └── MainActivity.java │ │ │ │ ├── search │ │ │ │ │ ├── AddConversActivity.java │ │ │ │ │ ├── PersonDetailActivity.java │ │ │ │ │ ├── SearchContactActivity.java │ │ │ │ │ └── SendVerifyActivity.java │ │ │ │ └── user │ │ │ │ │ ├── AboutUsActivity.java │ │ │ │ │ ├── AccountSettingActivity.java │ │ │ │ │ ├── BlackListActivity.java │ │ │ │ │ ├── LanguageSettingActivity.java │ │ │ │ │ ├── MoreDataActivity.java │ │ │ │ │ ├── PersonDataActivity.java │ │ │ │ │ ├── PersonalFragment.java │ │ │ │ │ └── PersonalInfoActivity.java │ │ │ │ └── vm │ │ │ │ ├── FriendVM.java │ │ │ │ ├── LoginVM.java │ │ │ │ ├── MainVM.java │ │ │ │ └── PersonalVM.java │ │ └── res │ │ │ ├── drawable │ │ │ ├── ic_launcher_background.xml │ │ │ ├── launch_background.xml │ │ │ ├── selector_logo.xml │ │ │ ├── selector_moments.xml │ │ │ ├── selector_newsletter.xml │ │ │ ├── selector_open_eyes.xml │ │ │ ├── selector_own.xml │ │ │ ├── selector_tab_txt_color.xml │ │ │ └── splash_shape_gradient.xml │ │ │ ├── layout │ │ │ ├── activity_about_us.xml │ │ │ ├── activity_account_setting.xml │ │ │ ├── activity_add_friend.xml │ │ │ ├── activity_black_list.xml │ │ │ ├── activity_call_history_acticity.xml │ │ │ ├── activity_edit_text.xml │ │ │ ├── activity_language_setting.xml │ │ │ ├── activity_login.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_more_data.xml │ │ │ ├── activity_person_detail.xml │ │ │ ├── activity_person_info.xml │ │ │ ├── activity_personal_info.xml │ │ │ ├── activity_register.xml │ │ │ ├── activity_reset_password.xml │ │ │ ├── activity_search_person.xml │ │ │ ├── activity_send_verify.xml │ │ │ ├── activity_supplement_info.xml │ │ │ ├── activity_verification_code.xml │ │ │ ├── fragment_personal.xml │ │ │ ├── item_call_history.xml │ │ │ ├── layout_login.xml │ │ │ ├── layout_search_item.xml │ │ │ └── view_department.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── push.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── push.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── push.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── bg_head_my.png │ │ │ ├── ic_about.png │ │ │ ├── ic_add_friend4.png │ │ │ ├── ic_add_qr.png │ │ │ ├── ic_call.png │ │ │ ├── ic_chat.png │ │ │ ├── ic_close_eye.png │ │ │ ├── ic_copy.png │ │ │ ├── ic_create_group.png │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ ├── ic_moments1.png │ │ │ ├── ic_moments2.png │ │ │ ├── ic_moments3.png │ │ │ ├── ic_my.png │ │ │ ├── ic_my_info.png │ │ │ ├── ic_my_qr.png │ │ │ ├── ic_my_setting.png │ │ │ ├── ic_newsletter.png │ │ │ ├── ic_open_eye.png │ │ │ ├── ic_quit.png │ │ │ └── push.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_add_friend2.png │ │ │ ├── ic_add_friend3.png │ │ │ ├── ic_back.png │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ ├── ic_my.png │ │ │ ├── ic_splash.png │ │ │ └── push.png │ │ │ ├── values-en-rUS │ │ │ └── strings.xml │ │ │ └── values │ │ │ ├── attrs.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── io │ │ └── openim │ │ └── android │ │ └── demo │ │ └── ExampleUnitTest.java ├── build.gradle ├── config.gradle ├── delete_build.sh ├── gradle.properties ├── gradle │ ├── gradle-mvn-push.gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── LICENSE ├── OUIKit ├── OUIApplet │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── ouiapplet │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── io │ │ │ │ └── openim │ │ │ │ └── android │ │ │ │ └── ouiapplet │ │ │ │ ├── AppletActivity.java │ │ │ │ ├── AppletFragment.java │ │ │ │ ├── service │ │ │ │ └── NetService.java │ │ │ │ └── vm │ │ │ │ └── AppletVM.java │ │ └── res │ │ │ ├── layout │ │ │ ├── activity_applet.xml │ │ │ └── fragment_applet.xml │ │ │ ├── values-night │ │ │ └── themes.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── refs.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── ouiapplet │ │ └── ExampleUnitTest.java ├── OUICalling │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── io │ │ │ └── openim │ │ │ └── android │ │ │ └── ouilive │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── io │ │ │ │ └── openim │ │ │ │ └── android │ │ │ │ └── ouicalling │ │ │ │ ├── CallDialog.java │ │ │ │ ├── CallingServiceImp.java │ │ │ │ ├── LockPushActivity.java │ │ │ │ └── vm │ │ │ │ ├── CallViewModel.kt │ │ │ │ └── CallingVM.java │ │ └── res │ │ │ ├── drawable │ │ │ ├── selector_camera.xml │ │ │ ├── selector_mic.xml │ │ │ └── selector_speaker.xml │ │ │ ├── layout │ │ │ ├── activity_demo.xml │ │ │ ├── dialog_call.xml │ │ │ ├── dialog_group_call.xml │ │ │ ├── item_member_renderer.xml │ │ │ ├── layout_call_invite.xml │ │ │ └── layout_float_view.xml │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_answer.png │ │ │ ├── ic_close_camera.png │ │ │ ├── ic_hang_up.png │ │ │ ├── ic_mic_off.png │ │ │ ├── ic_mic_on.png │ │ │ ├── ic_mic_s_off.png │ │ │ ├── ic_mic_s_on.png │ │ │ ├── ic_open_camera.png │ │ │ ├── ic_speaker_off.png │ │ │ ├── ic_speaker_on.png │ │ │ └── ic_switch_camera.png │ │ │ └── raw │ │ │ ├── incoming_call_ring.mp3 │ │ │ └── outgoing_call_ring.mp3 │ │ └── test │ │ └── java │ │ └── io │ │ └── openim │ │ └── android │ │ └── ouilive │ │ └── ExampleUnitTest.java ├── OUIContact │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── io │ │ │ └── openim │ │ │ └── android │ │ │ └── ouicontact │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ ├── java │ │ │ └── io │ │ │ │ └── openim │ │ │ │ └── android │ │ │ │ └── ouicontact │ │ │ │ ├── DebugActivity.java │ │ │ │ ├── ui │ │ │ │ ├── AddRelationActivity.java │ │ │ │ ├── AllFriendActivity.java │ │ │ │ ├── CreateLabelActivity.java │ │ │ │ ├── ForwardToActivity.java │ │ │ │ ├── FriendRequestDetailActivity.java │ │ │ │ ├── GroupNoticeDetailActivity.java │ │ │ │ ├── GroupNoticeListActivity.java │ │ │ │ ├── LabelActivity.java │ │ │ │ ├── MyGroupActivity.java │ │ │ │ ├── NewFriendActivity.java │ │ │ │ └── fragment │ │ │ │ │ ├── ContactFragment.java │ │ │ │ │ ├── FriendFragment.java │ │ │ │ │ └── GroupFragment.java │ │ │ │ └── vm │ │ │ │ ├── ContactVM.java │ │ │ │ ├── LabelVM.java │ │ │ │ └── SearchGroup.java │ │ └── res │ │ │ ├── layout │ │ │ ├── activity_add_relation.xml │ │ │ ├── activity_all_friend.xml │ │ │ ├── activity_create_label.xml │ │ │ ├── activity_debug.xml │ │ │ ├── activity_forward_to.xml │ │ │ ├── activity_friend_request_detail.xml │ │ │ ├── activity_group_notice_detail.xml │ │ │ ├── activity_group_notice_list.xml │ │ │ ├── activity_label.xml │ │ │ ├── activity_my_group.xml │ │ │ ├── activity_new_friend.xml │ │ │ ├── fragment_contact_main.xml │ │ │ ├── fragment_forward_friend.xml │ │ │ ├── item_department.xml │ │ │ ├── item_friend_notice.xml │ │ │ ├── item_group_notice.xml │ │ │ └── view_contact_header.xml │ │ │ └── mipmap-xxhdpi │ │ │ ├── ic_add_san.png │ │ │ ├── ic_c_add_friend.png │ │ │ ├── ic_c_add_group.png │ │ │ ├── ic_c_create_group.png │ │ │ ├── ic_friend_add.png │ │ │ ├── ic_my_friend.png │ │ │ ├── ic_my_group.png │ │ │ └── ic_my_group2.png │ │ └── test │ │ └── java │ │ └── io │ │ └── openim │ │ └── android │ │ └── ouicontact │ │ └── ExampleUnitTest.java ├── OUIConversation │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── libs │ │ └── com.oliver.record.aar │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── io │ │ │ └── openim │ │ │ └── android │ │ │ └── ouiconversation │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ ├── voice_black.json │ │ │ └── voice_blue.json │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ ├── java │ │ │ └── io │ │ │ │ └── openim │ │ │ │ └── android │ │ │ │ └── ouiconversation │ │ │ │ ├── DebugActivity.java │ │ │ │ ├── IBridgeImpl.java │ │ │ │ ├── adapter │ │ │ │ ├── MessageAdapter.java │ │ │ │ └── MessageViewHolder.java │ │ │ │ ├── ui │ │ │ │ ├── ChatActivity.java │ │ │ │ ├── PreviewMediaActivity.java │ │ │ │ ├── ShootActivity.java │ │ │ │ ├── emoji │ │ │ │ │ └── CustomEmojiManageActivity.java │ │ │ │ ├── fragment │ │ │ │ │ ├── ConversationListFragment.java │ │ │ │ │ └── InputExpandFragment.java │ │ │ │ └── search │ │ │ │ │ └── SearchActivity.java │ │ │ │ ├── vm │ │ │ │ ├── ChatVM.java │ │ │ │ └── CustomEmojiVM.java │ │ │ │ └── widget │ │ │ │ ├── BottomInputCote.java │ │ │ │ ├── SendStateView.java │ │ │ │ └── TailInputEditText.java │ │ └── res │ │ │ ├── anim │ │ │ └── animation_repeat_spinning.xml │ │ │ ├── drawable │ │ │ ├── ic_camera_enhance_black_24dp.xml │ │ │ ├── selector_chat_checkbox.xml │ │ │ ├── selector_custom_emoji.xml │ │ │ ├── selector_emoji_checkbox.xml │ │ │ ├── selector_white_gray.xml │ │ │ ├── sty_radius_unleft_30.xml │ │ │ ├── sty_radius_unleft_30_blue.xml │ │ │ ├── sty_radius_unleft_stroke_30.xml │ │ │ ├── sty_radius_unleft_white.xml │ │ │ ├── sty_radius_unright_30.xml │ │ │ └── sty_radius_unright_stroke_30.xml │ │ │ ├── layout │ │ │ ├── activity_chat.xml │ │ │ ├── activity_custom_emoji_manage.xml │ │ │ ├── activity_debug.xml │ │ │ ├── activity_msg_read_status.xml │ │ │ ├── activity_preview.xml │ │ │ ├── activity_search.xml │ │ │ ├── activity_shoot.xml │ │ │ ├── emoji_view.xml │ │ │ ├── fragment_contact_list.xml │ │ │ ├── fragment_input_expand.xml │ │ │ ├── item_expand_menu.xml │ │ │ ├── item_file.xml │ │ │ ├── item_history_merge.xml │ │ │ ├── layout_add_action.xml │ │ │ ├── layout_input_cote.xml │ │ │ ├── layout_loading_small.xml │ │ │ ├── layout_msg.xml │ │ │ ├── layout_msg_img_left.xml │ │ │ ├── layout_msg_img_right.xml │ │ │ ├── layout_msg_txt_left.xml │ │ │ ├── layout_msg_txt_right.xml │ │ │ ├── layout_send_state.xml │ │ │ └── view_search.xml │ │ │ ├── mipmap-xxhdpi │ │ │ ├── emoji.png │ │ │ ├── ic_add_big.png │ │ │ ├── ic_add_emoji.png │ │ │ ├── ic_business_card.png │ │ │ ├── ic_c_copy.png │ │ │ ├── ic_c_file.png │ │ │ ├── ic_c_photo.png │ │ │ ├── ic_c_search.png │ │ │ ├── ic_c_send.png │ │ │ ├── ic_c_video.png │ │ │ ├── ic_c_video_meeting.png │ │ │ ├── ic_chat_add.png │ │ │ ├── ic_chat_face.png │ │ │ ├── ic_chat_face2.png │ │ │ ├── ic_chat_keyboard.png │ │ │ ├── ic_chat_location.png │ │ │ ├── ic_chat_menu_file.png │ │ │ ├── ic_chat_shoot.png │ │ │ ├── ic_chat_voice.png │ │ │ ├── ic_create_group.png │ │ │ ├── ic_custom_emoji.png │ │ │ ├── ic_custom_emoji2.png │ │ │ ├── ic_delete.png │ │ │ ├── ic_delete_grey.png │ │ │ ├── ic_down_arrow.png │ │ │ ├── ic_emoji_delete.png │ │ │ ├── ic_ex_mark.png │ │ │ ├── ic_face_01.webp │ │ │ ├── ic_face_02.webp │ │ │ ├── ic_face_03.webp │ │ │ ├── ic_face_04.webp │ │ │ ├── ic_face_05.webp │ │ │ ├── ic_face_06.webp │ │ │ ├── ic_face_07.webp │ │ │ ├── ic_face_08.webp │ │ │ ├── ic_face_09.webp │ │ │ ├── ic_face_10.webp │ │ │ ├── ic_face_11.webp │ │ │ ├── ic_face_12.webp │ │ │ ├── ic_face_13.webp │ │ │ ├── ic_face_14.webp │ │ │ ├── ic_face_15.webp │ │ │ ├── ic_face_16.webp │ │ │ ├── ic_forward.png │ │ │ ├── ic_forward_grey.png │ │ │ ├── ic_iv_camera.png │ │ │ ├── ic_iv_more.png │ │ │ ├── ic_loading.png │ │ │ ├── ic_multiple_choice.png │ │ │ ├── ic_notice.png │ │ │ ├── ic_reply.png │ │ │ ├── ic_sync_err.png │ │ │ ├── ic_tools_video_call.png │ │ │ └── ic_withdraw.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── bg_chat_voice.png │ │ │ ├── bg_chat_voice2.png │ │ │ ├── ic_add_big3.png │ │ │ ├── ic_chat_cancel.png │ │ │ ├── ic_chat_cancel2.png │ │ │ ├── ic_chat_horn.png │ │ │ ├── ic_chat_speech.png │ │ │ ├── ic_chat_speech2.png │ │ │ ├── ic_meeting_tag.png │ │ │ ├── ic_phone.png │ │ │ └── ic_send_err.png │ │ │ └── values │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── io │ │ └── openim │ │ └── android │ │ └── ouiconversation │ │ └── ExampleUnitTest.java ├── OUICore │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── libs │ │ └── EasyWindow-10.2.aar │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── io │ │ │ └── openim │ │ │ └── android │ │ │ └── ouicore │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── io │ │ │ │ └── openim │ │ │ │ └── android │ │ │ │ └── ouicore │ │ │ │ ├── adapter │ │ │ │ ├── RecyclerViewAdapter.java │ │ │ │ └── ViewHol.java │ │ │ │ ├── api │ │ │ │ ├── NiService.java │ │ │ │ └── OneselfService.java │ │ │ │ ├── base │ │ │ │ ├── BaseActivity.java │ │ │ │ ├── BaseApp.java │ │ │ │ ├── BaseDialog.java │ │ │ │ ├── BaseFragment.java │ │ │ │ ├── BaseViewModel.java │ │ │ │ ├── BasicActivity.java │ │ │ │ ├── Debug.java │ │ │ │ ├── IView.java │ │ │ │ ├── LazyFragment.java │ │ │ │ └── vm │ │ │ │ │ ├── ISubscribe.java │ │ │ │ │ ├── State.java │ │ │ │ │ ├── Subject.java │ │ │ │ │ └── injection │ │ │ │ │ ├── BaseVM.java │ │ │ │ │ ├── Easy.java │ │ │ │ │ └── EasyInstance.java │ │ │ │ ├── data │ │ │ │ └── DataManager.java │ │ │ │ ├── entity │ │ │ │ ├── AtMsgInfo.java │ │ │ │ ├── BurnAfterReadingNotification.java │ │ │ │ ├── CallHistory.java │ │ │ │ ├── CustomEmoji.java │ │ │ │ ├── CustomEmojiEntity.java │ │ │ │ ├── EnterGroupNotification.java │ │ │ │ ├── ExGroupMemberInfo.java │ │ │ │ ├── ExUserInfo.java │ │ │ │ ├── ExtendUserInfo.java │ │ │ │ ├── GroupNotification.java │ │ │ │ ├── GroupRightsTransferNotification.java │ │ │ │ ├── JoinKickedGroupNotification.java │ │ │ │ ├── LocationInfo.java │ │ │ │ ├── LoginCertificate.java │ │ │ │ ├── MeetingInfo.java │ │ │ │ ├── MeetingInfoAttach.java │ │ │ │ ├── MsgConversation.java │ │ │ │ ├── MsgExpand.java │ │ │ │ ├── MuteMemberNotification.java │ │ │ │ ├── NotificationContent.java │ │ │ │ ├── NotificationHead.java │ │ │ │ ├── NotificationMsg.java │ │ │ │ ├── OANotification.java │ │ │ │ ├── ParticipantMeta.java │ │ │ │ ├── QuitGroupNotification.java │ │ │ │ ├── SortLetter.java │ │ │ │ ├── UserLabel.java │ │ │ │ ├── UserLabelChild.java │ │ │ │ └── UserList.java │ │ │ │ ├── ex │ │ │ │ ├── AtUser.java │ │ │ │ ├── CommEx.java │ │ │ │ ├── Ex.java │ │ │ │ ├── MultipleChoice.java │ │ │ │ ├── Title.java │ │ │ │ └── UserEx.java │ │ │ │ ├── im │ │ │ │ ├── IM.java │ │ │ │ ├── IMBack.java │ │ │ │ ├── IMEvent.java │ │ │ │ └── IMUtil.java │ │ │ │ ├── net │ │ │ │ ├── RXRetrofit │ │ │ │ │ ├── Exception │ │ │ │ │ │ ├── NetworkException.java │ │ │ │ │ │ └── RXRetrofitException.java │ │ │ │ │ ├── HttpConfig.java │ │ │ │ │ ├── N.java │ │ │ │ │ ├── NetObserver.java │ │ │ │ │ ├── Parameter.java │ │ │ │ │ ├── annotations │ │ │ │ │ │ └── IdentityEncoding.java │ │ │ │ │ └── interceptors │ │ │ │ │ │ └── IdentityEncodingInterceptor.java │ │ │ │ └── bage │ │ │ │ │ ├── Base.java │ │ │ │ │ └── GsonHel.java │ │ │ │ ├── repository │ │ │ │ ├── NiService.java │ │ │ │ └── OrganizationApi.java │ │ │ │ ├── services │ │ │ │ ├── CallingService.java │ │ │ │ ├── ForegroundService.kt │ │ │ │ └── IConversationBridge.java │ │ │ │ ├── update │ │ │ │ ├── OkHttp3Connection.java │ │ │ │ └── UpdateApp.java │ │ │ │ ├── utils │ │ │ │ ├── ActivityManager.java │ │ │ │ ├── BackgroundStartPermissions.kt │ │ │ │ ├── ByteUtil.java │ │ │ │ ├── Common.java │ │ │ │ ├── Constants.java │ │ │ │ ├── EmojiUtil.java │ │ │ │ ├── FixSizeLinkedList.java │ │ │ │ ├── GetFilePathFromUri.java │ │ │ │ ├── GlideEngine.java │ │ │ │ ├── HasPermissions.java │ │ │ │ ├── L.java │ │ │ │ ├── LanguageUtil.java │ │ │ │ ├── MThreadTool.java │ │ │ │ ├── MediaFileUtil.java │ │ │ │ ├── MediaPlayerUtil.kt │ │ │ │ ├── NavigationBarUtil.java │ │ │ │ ├── NotificationUtil.java │ │ │ │ ├── Obs.java │ │ │ │ ├── OnDedrepClickListener.java │ │ │ │ ├── OpenFileUtil.java │ │ │ │ ├── OpenFileUtil2.java │ │ │ │ ├── RegexValid.java │ │ │ │ ├── Routes.java │ │ │ │ ├── SharedPreferencesUtil.java │ │ │ │ ├── SinkHelper.java │ │ │ │ ├── SystemBarUtil.java │ │ │ │ ├── TimeUtil.java │ │ │ │ └── TransformationUtil.java │ │ │ │ ├── vm │ │ │ │ ├── ContactListVM.java │ │ │ │ ├── CounterVM.java │ │ │ │ ├── ForwardVM.java │ │ │ │ ├── GroupMemberVM.java │ │ │ │ ├── GroupVM.java │ │ │ │ ├── NotificationVM.java │ │ │ │ ├── PreviewMediaVM.java │ │ │ │ ├── SearchVM.java │ │ │ │ ├── SelectFriendsVM.java │ │ │ │ ├── SelectTargetVM.java │ │ │ │ ├── SocialityVM.java │ │ │ │ └── UserLogic.java │ │ │ │ ├── voice │ │ │ │ ├── SPlayer.java │ │ │ │ ├── cache │ │ │ │ │ └── VoiceCacheUtils.java │ │ │ │ ├── listener │ │ │ │ │ ├── OnDownloadListener.java │ │ │ │ │ ├── PlayByAssetsListener.java │ │ │ │ │ └── PlayerListener.java │ │ │ │ ├── netWork │ │ │ │ │ └── VoiceDownloadUtil.java │ │ │ │ └── player │ │ │ │ │ ├── AudioFocusManager.java │ │ │ │ │ └── SMediaPlayer.java │ │ │ │ └── widget │ │ │ │ ├── AlphaBtn.java │ │ │ │ ├── AvatarImage.java │ │ │ │ ├── BottomPopDialog.java │ │ │ │ ├── CenterCheckBox.java │ │ │ │ ├── CirclePgBar.java │ │ │ │ ├── CodeEditText.java │ │ │ │ ├── CommonDialog.java │ │ │ │ ├── CustomItemAnimator.java │ │ │ │ ├── CustomPositionDrawableSpan.java │ │ │ │ ├── DebugActivity.java │ │ │ │ ├── FileDownloadView.java │ │ │ │ ├── FileUploadView.java │ │ │ │ ├── ForwardDialog.java │ │ │ │ ├── GridSpaceItemDecoration.java │ │ │ │ ├── ImageTxtViewHolder.java │ │ │ │ ├── InterceptLinearLayout.java │ │ │ │ ├── PhotographAlbumDialog.java │ │ │ │ ├── PinchImageView.java │ │ │ │ ├── PlaceHolderDrawable.java │ │ │ │ ├── ProgressDialog.java │ │ │ │ ├── RecordWaveView.kt │ │ │ │ ├── RoundImageView.java │ │ │ │ ├── SearchView.java │ │ │ │ ├── SingleInfoModifyActivity.java │ │ │ │ ├── SlideButton.java │ │ │ │ ├── SpacesItemDecoration.java │ │ │ │ ├── StickyDecoration.java │ │ │ │ ├── SyLinearLayoutManager.java │ │ │ │ ├── UILocker.java │ │ │ │ ├── WaitDialog.java │ │ │ │ ├── WebViewActivity.java │ │ │ │ └── zoom │ │ │ │ ├── GestureViewManager.java │ │ │ │ ├── ScaleGestureListener.java │ │ │ │ ├── ScaleGestureManager.java │ │ │ │ ├── ScrollGestureListener.java │ │ │ │ └── ScrollGestureManager.java │ │ └── res │ │ │ ├── anim │ │ │ ├── anim_fade_in.xml │ │ │ ├── anim_fade_out.xml │ │ │ ├── dialog_enter.xml │ │ │ ├── dialog_exit.xml │ │ │ └── infinite_rotation.xml │ │ │ ├── drawable │ │ │ ├── bg_dialog_progress.xml │ │ │ ├── bg_edit_vercode.xml │ │ │ ├── progress_style.xml │ │ │ ├── selector_btn_theme.xml │ │ │ ├── selector_checkbox.xml │ │ │ ├── selector_guide_bg.xml │ │ │ ├── shape_guide_bg_defaut.xml │ │ │ ├── shape_guide_bg_focus.xml │ │ │ ├── sty_radius_10_aa666666.xml │ │ │ ├── sty_radius_10_black.xml │ │ │ ├── sty_radius_10_white.xml │ │ │ ├── sty_radius_1_stroke.xml │ │ │ ├── sty_radius_25_bottom_white.xml │ │ │ ├── sty_radius_30_29e3a0.xml │ │ │ ├── sty_radius_30_red.xml │ │ │ ├── sty_radius_3_66000000.xml │ │ │ ├── sty_radius_3_ff0089ff.xml │ │ │ ├── sty_radius_3_ffffb300.xml │ │ │ ├── sty_radius_3_stroke_418ae5.xml │ │ │ ├── sty_radius_3_stroke_ffc7c7c8.xml │ │ │ ├── sty_radius_4_33shallow.xml │ │ │ ├── sty_radius_4_666666.xml │ │ │ ├── sty_radius_4_bubble2.xml │ │ │ ├── sty_radius_4_f0f0f0.xml │ │ │ ├── sty_radius_4_f0f6ff.xml │ │ │ ├── sty_radius_4_fff1f7ff.xml │ │ │ ├── sty_radius_4_shallow.xml │ │ │ ├── sty_radius_4_white.xml │ │ │ ├── sty_radius_6_000000.xml │ │ │ ├── sty_radius_6_330089ff.xml │ │ │ ├── sty_radius_6_33warning.xml │ │ │ ├── sty_radius_6_black.xml │ │ │ ├── sty_radius_6_e8eaef.xml │ │ │ ├── sty_radius_6_eeeeee.xml │ │ │ ├── sty_radius_6_ff0089ff.xml │ │ │ ├── sty_radius_6_red.xml │ │ │ ├── sty_radius_6_stroke_418ae5.xml │ │ │ ├── sty_radius_6_stroke_e6e6e6.xml │ │ │ ├── sty_radius_6_tr_stroke_e6e6e6.xml │ │ │ ├── sty_radius_6_warning.xml │ │ │ ├── sty_radius_6_white.xml │ │ │ ├── sty_radius_8_a2c9f8.xml │ │ │ ├── sty_radius_8_fddfa1.xml │ │ │ ├── sty_radius_max_10cc64.xml │ │ │ ├── sty_radius_max_ff999999.xml │ │ │ └── sty_top_radius_30_white.xml │ │ │ ├── layout │ │ │ ├── activity_comm_search.xml │ │ │ ├── activity_single_modify.xml │ │ │ ├── activity_web_view.xml │ │ │ ├── dialog_forward.xml │ │ │ ├── dialog_photograph_album.xml │ │ │ ├── dialog_progress.xml │ │ │ ├── item_file2.xml │ │ │ ├── item_group_show.xml │ │ │ ├── item_img_txt.xml │ │ │ ├── item_img_txt_right.xml │ │ │ ├── item_label_member.xml │ │ │ ├── item_psrson_select.xml │ │ │ ├── item_psrson_sticky.xml │ │ │ ├── item_search_title.xml │ │ │ ├── layout_bottompop_v3.xml │ │ │ ├── layout_burn_after_reading.xml │ │ │ ├── layout_chat_history_item.xml │ │ │ ├── layout_common_dialog.xml │ │ │ ├── layout_contact_item.xml │ │ │ ├── layout_label_item.xml │ │ │ ├── layout_member_action.xml │ │ │ ├── layout_pop_selected_friends.xml │ │ │ ├── layout_search.xml │ │ │ ├── layout_selected_friends.xml │ │ │ ├── often_recycler_view.xml │ │ │ ├── transparent_dialog.xml │ │ │ ├── view_back.xml │ │ │ ├── view_badge.xml │ │ │ ├── view_dividing_line.xml │ │ │ ├── view_dividing_line_verticle.xml │ │ │ ├── view_image.xml │ │ │ ├── view_often_title.xml │ │ │ ├── view_recycler_view.xml │ │ │ ├── view_select_image.xml │ │ │ ├── view_swipe_recycler_view.xml │ │ │ └── view_waitdilog.xml │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_apple_null.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic__copy.png │ │ │ ├── ic__mic_off.png │ │ │ ├── ic__mic_on.png │ │ │ ├── ic__tree.webp │ │ │ ├── ic_add_friend.png │ │ │ ├── ic_angle_mark.png │ │ │ ├── ic_back2.png │ │ │ ├── ic_blue_phone.png │ │ │ ├── ic_chat_photo.png │ │ │ ├── ic_chat_shoot.png │ │ │ ├── ic_close3.png │ │ │ ├── ic_close4.png │ │ │ ├── ic_down_arrow2.png │ │ │ ├── ic_file_download.png │ │ │ ├── ic_file_download_pause2.png │ │ │ ├── ic_file_excel.png │ │ │ ├── ic_file_mask.png │ │ │ ├── ic_file_pdf.png │ │ │ ├── ic_file_ppt.png │ │ │ ├── ic_file_unknown.png │ │ │ ├── ic_file_word.png │ │ │ ├── ic_file_zip.png │ │ │ ├── ic_group.png │ │ │ ├── ic_launcher_round.png │ │ │ ├── ic_logo.png │ │ │ ├── ic_logo2.png │ │ │ ├── ic_logo2_void.png │ │ │ ├── ic_my2.png │ │ │ ├── ic_my_friend.png │ │ │ ├── ic_my_group.png │ │ │ ├── ic_net_excellent.png │ │ │ ├── ic_net_good.png │ │ │ ├── ic_net_poor.png │ │ │ ├── ic_scan_it.png │ │ │ ├── ic_tick.png │ │ │ ├── ic_tools_video_call.png │ │ │ ├── ic_un_newsletter.png │ │ │ ├── ic_video_pause.png │ │ │ ├── ic_video_s2.png │ │ │ ├── ic_voice_s1.png │ │ │ ├── ic_white_down.png │ │ │ └── ic_zoom_out.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_add.png │ │ │ ├── ic_add3.png │ │ │ ├── ic_add_big2.png │ │ │ ├── ic_add_big3.png │ │ │ ├── ic_call_white.png │ │ │ ├── ic_chat_file.png │ │ │ ├── ic_check_select.png │ │ │ ├── ic_check_unselect.png │ │ │ ├── ic_close.png │ │ │ ├── ic_close2.png │ │ │ ├── ic_label.png │ │ │ ├── ic_more.png │ │ │ ├── ic_not_msg.png │ │ │ ├── ic_online.png │ │ │ ├── ic_qrcode.png │ │ │ ├── ic_right.png │ │ │ ├── ic_right2.png │ │ │ ├── ic_search.png │ │ │ ├── ic_search2.png │ │ │ ├── ic_top_right.png │ │ │ ├── ic_triangle.png │ │ │ ├── ic_triangle_red.png │ │ │ ├── ic_video_call.png │ │ │ ├── ic_voice_call.png │ │ │ └── ic_work_moments.png │ │ │ ├── raw │ │ │ └── message_ring.wav │ │ │ ├── values-en-rUS │ │ │ └── strings.xml │ │ │ ├── values-v23 │ │ │ └── themes.xml │ │ │ ├── values │ │ │ ├── attr.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ ├── styles.xml │ │ │ └── themes.xml │ │ │ └── xml │ │ │ ├── file_paths.xml │ │ │ ├── locales_config.xml │ │ │ └── network_security_config.xml │ │ └── test │ │ └── java │ │ └── io │ │ └── openim │ │ └── android │ │ └── ouicore │ │ └── ExampleUnitTest.java └── OUIGroup │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ └── java │ │ └── io │ │ └── openim │ │ └── android │ │ └── ouigroup │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── debug │ │ └── AndroidManifest.xml │ ├── java │ │ └── io │ │ │ └── openim │ │ │ └── android │ │ │ └── ouigroup │ │ │ └── ui │ │ │ ├── AllGroupActivity.java │ │ │ ├── CreateGroupActivity.java │ │ │ ├── GroupDetailActivity.java │ │ │ ├── GroupMaterialActivity.java │ │ │ ├── InitiateGroupActivity.java │ │ │ ├── NoticeDetailActivity.java │ │ │ ├── SelectedMemberActivity.java │ │ │ ├── SetMuteActivity.java │ │ │ ├── SuperGroupMemberActivity.java │ │ │ └── v3 │ │ │ ├── GroupManageActivity.java │ │ │ └── SelectTargetActivityV3.java │ └── res │ │ ├── layout │ │ ├── activity_create_group.xml │ │ ├── activity_create_group_v3.xml │ │ ├── activity_group_detail.xml │ │ ├── activity_group_manage.xml │ │ ├── activity_group_material.xml │ │ ├── activity_group_member.xml │ │ ├── activity_initiate_group.xml │ │ ├── activity_notice_detail.xml │ │ ├── activity_selected_member.xml │ │ ├── activity_set_mute.xml │ │ └── activity_super_group_member.xml │ │ └── mipmap-xxhdpi │ │ ├── ic_at_all.png │ │ ├── ic_edit.png │ │ ├── ic_g_edit2.png │ │ ├── ic_g_file.png │ │ ├── ic_g_init_group_icon.png │ │ ├── ic_g_photo.png │ │ ├── ic_g_search_chat.png │ │ ├── ic_g_time.png │ │ ├── ic_g_video.png │ │ ├── ic_group_add.png │ │ └── ic_group_reduce.png │ └── test │ └── java │ └── io │ └── openim │ └── android │ └── ouigroup │ └── ExampleUnitTest.java ├── README.md ├── README.zh-CN.md └── docs └── images ├── logo.jpg ├── preview1.png └── preview2.png /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 4 8 | end_of_line = lf 9 | insert_final_newline = true 10 | 11 | [*.kt] 12 | max_line_length = 160 13 | wildcard_import_limit = 99 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | .idea 5 | .DS_Store 6 | build 7 | /captures 8 | .externalNativeBuild 9 | .cxx 10 | local.properties 11 | -------------------------------------------------------------------------------- /Demo/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | -------------------------------------------------------------------------------- /Demo/app/google-services.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_info": { 3 | "project_number": "348945246821", 4 | "project_id": "openim-test", 5 | "storage_bucket": "openim-test.firebasestorage.app" 6 | }, 7 | "client": [ 8 | { 9 | "client_info": { 10 | "mobilesdk_app_id": "1:348945246821:android:60c94109457d266bcaf48c", 11 | "android_client_info": { 12 | "package_name": "io.openim.android.os.demo" 13 | } 14 | }, 15 | "oauth_client": [], 16 | "api_key": [ 17 | { 18 | "current_key": "AIzaSyBqRw8iBMfhmN8pXwlYWFNiHGu0O7aPh6E" 19 | } 20 | ], 21 | "services": { 22 | "appinvite_service": { 23 | "other_platform_oauth_client": [] 24 | } 25 | } 26 | } 27 | ], 28 | "configuration_version": "1" 29 | } -------------------------------------------------------------------------------- /Demo/app/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Demo/app/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /Demo/app/openim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/openim -------------------------------------------------------------------------------- /Demo/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /Demo/app/src/androidTest/java/io/openim/android/demo/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.demo; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("io.openim.android.demo", appContext.getPackageName()); 25 | } 26 | } -------------------------------------------------------------------------------- /Demo/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/drawable/selector_logo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/drawable/selector_moments.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/drawable/selector_newsletter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/drawable/selector_open_eyes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/drawable/selector_own.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/drawable/selector_tab_txt_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/drawable/splash_shape_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/layout/layout_search_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 18 | 19 | 26 | 27 | 32 | 33 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/layout/view_department.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 16 | 17 | 25 | 26 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-hdpi/push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-hdpi/push.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-mdpi/push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-mdpi/push.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xhdpi/push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xhdpi/push.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/bg_head_my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/bg_head_my.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_about.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_add_friend4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_add_friend4.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_add_qr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_add_qr.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_call.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_chat.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_close_eye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_close_eye.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_copy.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_create_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_create_group.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_moments1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_moments1.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_moments2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_moments2.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_moments3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_moments3.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_my.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_my_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_my_info.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_my_qr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_my_qr.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_my_setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_my_setting.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_newsletter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_newsletter.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_open_eye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_open_eye.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/ic_quit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/ic_quit.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxhdpi/push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxhdpi/push.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxxhdpi/ic_add_friend2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxxhdpi/ic_add_friend2.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxxhdpi/ic_add_friend3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxxhdpi/ic_add_friend3.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxxhdpi/ic_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxxhdpi/ic_back.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxxhdpi/ic_my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxxhdpi/ic_my.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxxhdpi/ic_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxxhdpi/ic_splash.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/mipmap-xxxhdpi/push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/app/src/main/res/mipmap-xxxhdpi/push.png -------------------------------------------------------------------------------- /Demo/app/src/main/res/values-en-rUS/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | IM-NCB 4 | 5 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | OpenIM 4 | 5 | -------------------------------------------------------------------------------- /Demo/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/app/src/test/java/io/openim/android/demo/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.demo; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /Demo/config.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | 4 | ext { 5 | //模块单独运行 6 | isModule=false 7 | 8 | //android 配置 9 | androidConfig = [ 10 | minSdk : 24, 11 | targetSdk : 32, 12 | compileSdk : 33, 13 | versionCode: 9, 14 | versionName: "3.8.3", 15 | abiFilters : ['armeabi-v7a','arm64-v8a'] 16 | ] 17 | 18 | applicationId = [ 19 | "app" : "io.openim.android.os.demo", 20 | "OUIConversation" : "io.openim.android.ouiconversation", 21 | "OUIGroup" : "io.openim.android.ouigroup", 22 | "OUIContact" : "io.openim.android.ouicontact", 23 | "OUICalling" : "io.openim.android.ouicalling", 24 | "OUIApplet" : "io.openim.android.ouiapplet" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /Demo/delete_build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | delete_build_folders() { 4 | # 遍历当前文件夹下的子文件夹,包括隐藏文件夹 5 | shopt -s dotglob 6 | for dir_name in "$1"/*; do 7 | if [ -d "$dir_name" ]; then 8 | if [ "$(basename "$dir_name")" = "build" ]||[ "$(basename "$dir_name")" = ".gradle" ]; then 9 | # 删除build文件夹 10 | rm -rf "$dir_name" 11 | echo "删除文件夹: $dir_name" 12 | else 13 | # 递归删除子文件夹中的build文件夹 14 | delete_build_folders "$dir_name" 15 | fi 16 | fi 17 | done 18 | } 19 | 20 | # 获取用户输入的文件夹路径 21 | # shellcheck disable=SC2162 22 | read -p "请输入要删除的文件夹路径: " folder_path 23 | 24 | # 调用函数删除文件夹 25 | delete_build_folders "$folder_path" 26 | 27 | # 删除指定文件夹 28 | rm -rf "$folder_path" 29 | echo "删除文件夹: $folder_path" 30 | echo "操作完成!" 31 | -------------------------------------------------------------------------------- /Demo/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/Demo/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Demo/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu May 12 10:02:16 CST 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | 8 | -------------------------------------------------------------------------------- /OUIKit/OUIApplet/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /OUIKit/OUIApplet/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /OUIKit/OUIApplet/src/androidTest/java/com/example/ouiapplet/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.example.ouiapplet; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("com.example.ouiapplet", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /OUIKit/OUIApplet/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /OUIKit/OUIApplet/src/main/java/io/openim/android/ouiapplet/AppletActivity.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouiapplet; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.lifecycle.Observer; 6 | 7 | import io.openim.android.ouiapplet.databinding.ActivityAppletBinding; 8 | import io.openim.android.ouicore.base.BasicActivity; 9 | import io.openim.android.ouicore.base.vm.injection.Easy; 10 | import io.openim.android.ouicore.vm.UserLogic; 11 | 12 | public class AppletActivity extends BasicActivity { 13 | 14 | @Override 15 | protected void onCreate(Bundle savedInstanceState) { 16 | super.onCreate(savedInstanceState); 17 | viewBinding(ActivityAppletBinding.inflate(getLayoutInflater())); 18 | Easy.find(UserLogic.class).discoverPageURL.observe(this, 19 | s -> view.webView.loadUrl(s)); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /OUIKit/OUIApplet/src/main/java/io/openim/android/ouiapplet/service/NetService.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouiapplet.service; 2 | 3 | import java.util.Random; 4 | 5 | import io.openim.android.ouicore.net.RXRetrofit.Parameter; 6 | import io.reactivex.Observable; 7 | import okhttp3.RequestBody; 8 | import okhttp3.ResponseBody; 9 | import retrofit2.http.Body; 10 | import retrofit2.http.Header; 11 | import retrofit2.http.POST; 12 | import retrofit2.http.Url; 13 | 14 | public interface NetService { 15 | /** 16 | * 获取小程序列表 17 | */ 18 | @POST("/applet/find") 19 | Observable findApplet(@Body RequestBody requestBody); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /OUIKit/OUIApplet/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | 17 | -------------------------------------------------------------------------------- /OUIKit/OUIApplet/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUIApplet/src/main/res/values/refs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /OUIKit/OUIApplet/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | OUIApplet 3 | -------------------------------------------------------------------------------- /OUIKit/OUIApplet/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | 17 | -------------------------------------------------------------------------------- /OUIKit/OUIApplet/src/test/java/com/example/ouiapplet/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.example.ouiapplet; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /OUIKit/OUICalling/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /OUIKit/OUICalling/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/androidTest/java/io/openim/android/ouilive/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouilive; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("io.openim.android.ouilive", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/drawable/selector_camera.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/drawable/selector_mic.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/drawable/selector_speaker.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/layout/activity_demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 18 | 19 | -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_answer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_answer.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_close_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_close_camera.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_hang_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_hang_up.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_mic_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_mic_off.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_mic_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_mic_on.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_mic_s_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_mic_s_off.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_mic_s_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_mic_s_on.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_open_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_open_camera.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_speaker_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_speaker_off.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_speaker_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_speaker_on.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_switch_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/mipmap-xxhdpi/ic_switch_camera.png -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/raw/incoming_call_ring.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/raw/incoming_call_ring.mp3 -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/main/res/raw/outgoing_call_ring.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICalling/src/main/res/raw/outgoing_call_ring.mp3 -------------------------------------------------------------------------------- /OUIKit/OUICalling/src/test/java/io/openim/android/ouilive/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouilive; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /OUIKit/OUIContact/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /OUIKit/OUIContact/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIContact/consumer-rules.pro -------------------------------------------------------------------------------- /OUIKit/OUIContact/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/androidTest/java/io/openim/android/ouicontact/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicontact; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("io.openim.android.ouicontact.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/java/io/openim/android/ouicontact/DebugActivity.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicontact; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | 5 | import android.os.Bundle; 6 | 7 | import io.openim.android.ouicontact.ui.fragment.ContactFragment; 8 | 9 | public class DebugActivity extends AppCompatActivity { 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | setContentView(R.layout.activity_debug); 15 | 16 | getSupportFragmentManager().beginTransaction() 17 | .add(R.id.fragment_container, new ContactFragment()).commit(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/java/io/openim/android/ouicontact/vm/SearchGroup.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicontact.vm; 2 | 3 | import android.text.TextUtils; 4 | 5 | import androidx.lifecycle.MutableLiveData; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | import io.openim.android.ouicore.base.BaseViewModel; 11 | import io.openim.android.sdk.models.GroupInfo; 12 | 13 | public class SearchGroup extends BaseViewModel { 14 | //我加入的群 15 | public MutableLiveData> groups = new MutableLiveData<>(new ArrayList<>()); 16 | public MutableLiveData> searchGroups = new MutableLiveData<>(new ArrayList<>()); 17 | public MutableLiveData searchKey = new MutableLiveData<>(); 18 | 19 | public void search(String key) { 20 | searchGroups.getValue().clear(); 21 | if (!TextUtils.isEmpty(key)) { 22 | for (GroupInfo groupInfo : groups.getValue()) { 23 | if (groupInfo.getGroupName().toUpperCase().contains(key.toUpperCase())) { 24 | searchGroups.getValue().add(groupInfo); 25 | } 26 | } 27 | } 28 | searchGroups.setValue(searchGroups.getValue()); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/res/layout/activity_debug.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_add_san.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_add_san.png -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_c_add_friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_c_add_friend.png -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_c_add_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_c_add_group.png -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_c_create_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_c_create_group.png -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_friend_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_friend_add.png -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_my_friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_my_friend.png -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_my_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_my_group.png -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_my_group2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIContact/src/main/res/mipmap-xxhdpi/ic_my_group2.png -------------------------------------------------------------------------------- /OUIKit/OUIContact/src/test/java/io/openim/android/ouicontact/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicontact; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /OUIKit/OUIConversation/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/consumer-rules.pro -------------------------------------------------------------------------------- /OUIKit/OUIConversation/libs/com.oliver.record.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/libs/com.oliver.record.aar -------------------------------------------------------------------------------- /OUIKit/OUIConversation/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/androidTest/java/io/openim/android/ouiconversation/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouiconversation; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("io.openim.android.OUIConversation.test", appContext.getPackageName()); 25 | } 26 | } -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/java/io/openim/android/ouiconversation/DebugActivity.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouiconversation; 2 | 3 | import android.os.Bundle; 4 | 5 | import io.openim.android.ouiconversation.databinding.ActivityDebugBinding; 6 | 7 | public class DebugActivity extends io.openim.android.ouicore.widget.DebugActivity { 8 | ActivityDebugBinding view; 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | view=ActivityDebugBinding.inflate(getLayoutInflater()); 13 | setContentView(view.getRoot()); 14 | } 15 | 16 | @Override 17 | public void onSuccess(String data) { 18 | super.onSuccess(data); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/anim/animation_repeat_spinning.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/ic_camera_enhance_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/selector_chat_checkbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/selector_custom_emoji.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/selector_emoji_checkbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/selector_white_gray.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/sty_radius_unleft_30.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/sty_radius_unleft_30_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/sty_radius_unleft_stroke_30.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 10 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/sty_radius_unleft_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/sty_radius_unright_30.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/drawable/sty_radius_unright_stroke_30.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 11 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/layout/activity_debug.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/layout/activity_shoot.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/layout/emoji_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 15 | 21 | 22 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/layout/fragment_input_expand.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/layout/item_expand_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/layout/item_history_merge.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/layout/layout_loading_small.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/layout/layout_send_state.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | 21 | 22 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/layout/view_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/emoji.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_add_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_add_big.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_add_emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_add_emoji.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_business_card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_business_card.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_copy.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_file.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_photo.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_search.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_send.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_video.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_video_meeting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_c_video_meeting.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_add.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_face.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_face.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_face2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_face2.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_keyboard.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_location.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_menu_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_menu_file.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_shoot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_shoot.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_voice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_chat_voice.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_create_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_create_group.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_custom_emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_custom_emoji.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_custom_emoji2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_custom_emoji2.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_delete.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_delete_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_delete_grey.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_down_arrow.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_emoji_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_emoji_delete.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_ex_mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_ex_mark.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_01.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_01.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_02.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_02.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_03.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_03.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_04.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_04.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_05.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_05.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_06.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_06.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_07.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_07.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_08.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_08.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_09.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_09.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_10.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_10.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_11.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_11.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_12.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_12.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_13.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_13.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_14.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_14.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_15.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_15.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_16.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_face_16.webp -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_forward.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_forward_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_forward_grey.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_iv_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_iv_camera.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_iv_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_iv_more.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_loading.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_multiple_choice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_multiple_choice.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_notice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_notice.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_reply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_reply.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_sync_err.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_sync_err.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_tools_video_call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_tools_video_call.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_withdraw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxhdpi/ic_withdraw.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/bg_chat_voice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/bg_chat_voice.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/bg_chat_voice2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/bg_chat_voice2.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_add_big3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_add_big3.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_chat_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_chat_cancel.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_chat_cancel2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_chat_cancel2.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_chat_horn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_chat_horn.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_chat_speech.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_chat_speech.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_chat_speech2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_chat_speech2.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_meeting_tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_meeting_tag.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_phone.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_send_err.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIConversation/src/main/res/mipmap-xxxhdpi/ic_send_err.png -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 36dp 4 | 8dp 5 | 14dp 6 | 7 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OUIKit/OUIConversation/src/test/java/io/openim/android/ouiconversation/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouiconversation; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /OUIKit/OUICore/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /OUIKit/OUICore/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/consumer-rules.pro -------------------------------------------------------------------------------- /OUIKit/OUICore/libs/EasyWindow-10.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/libs/EasyWindow-10.2.aar -------------------------------------------------------------------------------- /OUIKit/OUICore/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /OUIKit/OUICore/src/androidTest/java/io/openim/android/ouicore/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("io.openim.android.ouicore.test", appContext.getPackageName()); 25 | } 26 | } -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/base/IView.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.base; 2 | 3 | import android.widget.Toast; 4 | 5 | /** 6 | * View 7 | */ 8 | public interface IView { 9 | void onError(String error); 10 | 11 | void onSuccess(Object body); 12 | 13 | void toast(String tips); 14 | 15 | void close(); 16 | } 17 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/base/vm/ISubscribe.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.base.vm; 2 | 3 | public interface ISubscribe { 4 | void onSubject(Subject subject); 5 | } 6 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/base/vm/State.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.base.vm; 2 | 3 | import androidx.lifecycle.MutableLiveData; 4 | 5 | public class State extends MutableLiveData { 6 | 7 | public State() {super();} 8 | 9 | public State(T value) { 10 | super(value); 11 | } 12 | 13 | public T val() { 14 | return super.getValue(); 15 | } 16 | 17 | public void update() { 18 | setValue(getValue()); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/base/vm/Subject.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.base.vm; 2 | 3 | import java.util.Objects; 4 | 5 | public class Subject { 6 | public String key; 7 | public Object value; 8 | 9 | public Subject(String key) { 10 | this.key = key; 11 | } 12 | 13 | public Subject(String key, Object value) { 14 | this.key = key; 15 | this.value = value; 16 | } 17 | public boolean equals(String o){ 18 | return key.equals(o); 19 | } 20 | 21 | @Override 22 | public boolean equals(Object o) { 23 | if (this == o) return true; 24 | if (o instanceof Subject) { 25 | Subject subject = (Subject) o; 26 | return Objects.equals(key, subject.key); 27 | } 28 | return this.key == o; 29 | } 30 | 31 | @Override 32 | public int hashCode() { 33 | return Objects.hash(key); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/AtMsgInfo.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import java.util.List; 4 | 5 | import io.openim.android.sdk.models.AtUserInfo; 6 | 7 | public class AtMsgInfo { 8 | public String text; 9 | public List atUserList; 10 | public List atUsersInfo; 11 | public boolean isAtSelf; 12 | } 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/BurnAfterReadingNotification.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | public class BurnAfterReadingNotification { 4 | /// 接收者 5 | public String recvID; 6 | 7 | /// 发送者 8 | public String sendID; 9 | 10 | /// 是否开启 11 | public boolean isPrivate; 12 | 13 | // 会话Id 14 | public String conversationID; 15 | } 16 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/CustomEmojiEntity.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | public class CustomEmojiEntity { 4 | public int width; 5 | public String url; 6 | public int height; 7 | } 8 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/EnterGroupNotification.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import io.openim.android.sdk.models.GroupInfo; 4 | import io.openim.android.sdk.models.GroupMembersInfo; 5 | 6 | public class EnterGroupNotification { 7 | /// 群信息 8 | public GroupInfo group; 9 | 10 | /// 进入群的成员信息 11 | public GroupMembersInfo entrantUser; 12 | } 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/ExGroupMemberInfo.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | import io.openim.android.ouicore.ex.CommEx; 6 | import io.openim.android.sdk.models.GroupMembersInfo; 7 | 8 | public class ExGroupMemberInfo extends CommEx implements Serializable { 9 | public GroupMembersInfo groupMembersInfo; 10 | 11 | /** 12 | * contains 方法 13 | * 14 | * @param o 15 | * @return 16 | */ 17 | @Override 18 | public boolean equals(Object o) { 19 | if (this == o) return true; 20 | if (o == null || getClass() != o.getClass()) return false; 21 | ExGroupMemberInfo that = (ExGroupMemberInfo) o; 22 | if (that.groupMembersInfo.getUserID().equals(groupMembersInfo.getUserID())) 23 | return true; 24 | return false; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/ExUserInfo.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import io.openim.android.ouicore.ex.CommEx; 4 | import io.openim.android.sdk.models.UserInfo; 5 | 6 | public class ExUserInfo extends CommEx { 7 | public UserInfo userInfo; 8 | public ExGroupMemberInfo exGroupMemberInfo; 9 | } 10 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/ExtendUserInfo.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import io.openim.android.ouicore.net.bage.Base; 4 | import io.openim.android.sdk.models.UserInfo; 5 | 6 | /** 7 | * 扩展客户业务的用户信息 8 | */ 9 | public class ExtendUserInfo { 10 | public UserInfo userInfo; 11 | } 12 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/GroupNotification.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import java.util.List; 4 | 5 | import io.openim.android.sdk.models.GroupInfo; 6 | import io.openim.android.sdk.models.GroupMembersInfo; 7 | 8 | public class GroupNotification { 9 | /// 群信息 10 | public GroupInfo group; 11 | 12 | /// 当前事件操作者信息 13 | public GroupMembersInfo opUser; 14 | 15 | /// 群拥有者信息 16 | public GroupMembersInfo groupOwnerUser; 17 | 18 | /// 产生影响的群成员列表 19 | public List memberList; 20 | 21 | /// 资料发生改变的成员 22 | GroupMembersInfo changedUser; 23 | } 24 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/GroupRightsTransferNotification.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import io.openim.android.sdk.models.GroupInfo; 4 | import io.openim.android.sdk.models.GroupMembersInfo; 5 | 6 | public class GroupRightsTransferNotification { 7 | /// 群信息 8 | public GroupInfo group; 9 | 10 | /// 操作者信息 11 | public GroupMembersInfo opUser; 12 | 13 | /// 群新的拥有者信息 14 | public GroupMembersInfo newGroupOwner; 15 | } 16 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/JoinKickedGroupNotification.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import java.util.List; 4 | 5 | import io.openim.android.sdk.models.GroupInfo; 6 | import io.openim.android.sdk.models.GroupMembersInfo; 7 | 8 | public class JoinKickedGroupNotification { 9 | /// 群信息 10 | public GroupInfo group; 11 | 12 | /// 操作者信息 13 | public GroupMembersInfo opUser; 14 | 15 | /// 被邀请进群的成员信息 16 | public List invitedUserList; 17 | /// 被踢出群的成员信息列表 18 | public List kickedUserList; 19 | } 20 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/LocationInfo.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | public class LocationInfo { 4 | public String name; 5 | public String addr; 6 | public String url; 7 | } 8 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/MeetingInfo.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | public class MeetingInfo { 4 | public String inviterNickname; 5 | public String id; 6 | public String subject; 7 | public long start; 8 | public String startTime; 9 | public int duration; 10 | public String durationStr; 11 | 12 | public String inviterFaceURL; 13 | public String inviterUserID; 14 | } 15 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/MeetingInfoAttach.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | public class MeetingInfoAttach { 4 | public int customType; 5 | public MeetingInfo data; 6 | } 7 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/MsgExpand.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import android.text.SpannableStringBuilder; 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | /** 9 | * message 的 ext 10 | */ 11 | public class MsgExpand { 12 | public MsgExpand() { 13 | } 14 | //多选被选中 15 | public boolean isChoice; 16 | //此item 应该显示时间 17 | public boolean isShowTime; 18 | //富文本 19 | public transient SpannableStringBuilder sequence; 20 | } 21 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/MuteMemberNotification.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import io.openim.android.sdk.models.GroupInfo; 4 | import io.openim.android.sdk.models.GroupMembersInfo; 5 | 6 | public class MuteMemberNotification { 7 | /// 群信息 8 | public GroupInfo group; 9 | 10 | /// 操作者信息 11 | public GroupMembersInfo opUser; 12 | 13 | /// 被禁言的成员信息 14 | public GroupMembersInfo mutedUser; 15 | 16 | /// 禁言时间s 17 | public int mutedSeconds; 18 | } 19 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/NotificationContent.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | public class NotificationContent implements Serializable { 6 | public String groupID; 7 | 8 | public String notification; 9 | 10 | public String ownerUserID; 11 | 12 | public long createTime; 13 | 14 | public int memberCount; 15 | 16 | public String creatorUserID; 17 | } 18 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/NotificationHead.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | public class NotificationHead implements Serializable { 6 | public String groupID; 7 | public String notification; 8 | public String ownerUserID; 9 | public long createTime; 10 | public int memberCount; 11 | public String creatorUserID; 12 | } 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/NotificationMsg.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | public class NotificationMsg implements Serializable { 6 | public NotificationHead opUser; 7 | public NotificationContent group; 8 | } 9 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/OANotification.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import io.openim.android.sdk.models.FileElem; 4 | import io.openim.android.sdk.models.PictureElem; 5 | import io.openim.android.sdk.models.SoundElem; 6 | import io.openim.android.sdk.models.VideoElem; 7 | 8 | public class OANotification { 9 | /// 标题 10 | public String notificationName; 11 | 12 | /// 头像 13 | public String notificationFaceURL; 14 | 15 | /// 类型 16 | public int notificationType; 17 | 18 | /// 文本内容 19 | public String text; 20 | 21 | /// 跳转链接 22 | public String externalUrl; 23 | 24 | /// 0:纯文字通知 1:文字+图片通知 2:文字+视频通知 3:文字+文件通知 25 | public int mixType; 26 | 27 | /// 图片信息 28 | public PictureElem pictureElem; 29 | 30 | /// 语音信息 31 | public SoundElem soundElem; 32 | 33 | /// 视频信息 34 | public VideoElem videoElem; 35 | 36 | /// 文件信息 37 | public FileElem fileElem; 38 | 39 | /// 扩展字段 40 | public String ex; 41 | 42 | } 43 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/ParticipantMeta.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import io.openim.android.sdk.models.GroupInfo; 4 | import io.openim.android.sdk.models.GroupMembersInfo; 5 | import io.openim.android.sdk.models.UserInfo; 6 | 7 | public class ParticipantMeta { 8 | public GroupInfo groupInfo; 9 | public GroupMembersInfo groupMemberInfo; 10 | public UserInfo userInfo; 11 | public boolean setTop=false; 12 | } 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/QuitGroupNotification.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import io.openim.android.sdk.models.GroupInfo; 4 | import io.openim.android.sdk.models.GroupMembersInfo; 5 | 6 | public class QuitGroupNotification { 7 | /// 群信息 8 | public GroupInfo group; 9 | 10 | /// 退群的成员信息 11 | public GroupMembersInfo quitUser; 12 | } 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/SortLetter.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | public class SortLetter implements Serializable { 6 | public String sortLetter; //显示数据拼音的首字母 7 | } 8 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/UserLabel.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import java.util.List; 4 | 5 | public class UserLabel { 6 | public UserLabel() { 7 | } 8 | 9 | private List tags; 10 | 11 | private String tagID; 12 | 13 | private String tagName; 14 | 15 | private List userList; 16 | 17 | public List getTags() { 18 | return tags; 19 | } 20 | 21 | public void setTags(List tags) { 22 | this.tags = tags; 23 | } 24 | 25 | public void setTagID(String tagID) { 26 | this.tagID = tagID; 27 | } 28 | 29 | public String getTagID() { 30 | return this.tagID; 31 | } 32 | 33 | public void setTagName(String tagName) { 34 | this.tagName = tagName; 35 | } 36 | 37 | public String getTagName() { 38 | return this.tagName; 39 | } 40 | 41 | public void setUserList(List userList) { 42 | this.userList = userList; 43 | } 44 | 45 | public List getUserList() { 46 | return this.userList; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/UserLabelChild.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | public class UserLabelChild { 4 | private String userID; 5 | private String userName; 6 | 7 | public UserLabelChild() { 8 | } 9 | 10 | public void setUserID(String userID) { 11 | this.userID = userID; 12 | } 13 | 14 | public String getUserID() { 15 | return userID; 16 | } 17 | 18 | public void setUserName(String userName) { 19 | this.userName = userName; 20 | } 21 | 22 | public String getUserName() { 23 | return userName; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/entity/UserList.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.entity; 2 | 3 | import java.util.List; 4 | 5 | import io.openim.android.sdk.models.UserInfo; 6 | 7 | public class UserList { 8 | public int total; 9 | public List users; 10 | } 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/ex/AtUser.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.ex; 2 | 3 | import java.io.Serializable; 4 | 5 | public class AtUser extends UserEx implements Serializable { 6 | 7 | 8 | public AtUser(String key) { 9 | super(key); 10 | } 11 | //用于在消息输入框监听删除键时 判断删除对应@的人 12 | public int spanHashCode; 13 | } 14 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/ex/CommEx.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.ex; 2 | 3 | import androidx.annotation.Nullable; 4 | 5 | import java.io.Serializable; 6 | import java.util.Objects; 7 | 8 | /** 9 | * 常用扩展字段 10 | */ 11 | @Deprecated 12 | public class CommEx implements Serializable { 13 | public String key; //Id 14 | public boolean isSticky = false; //是否是Sticky 15 | public String sortLetter; //显示数据拼音的首字母 16 | 17 | public boolean isSelect = false;//是否被选中 18 | public boolean isEnabled = true;//是否可点击 19 | 20 | @Override 21 | public boolean equals(@Nullable Object obj) { 22 | if (null != obj) { 23 | if (hashCode() == 24 | obj.hashCode()) return true; 25 | } 26 | return super.equals(obj); 27 | } 28 | 29 | @Override 30 | public int hashCode() { 31 | return Objects.hash(key); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/ex/Ex.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.ex; 2 | 3 | import androidx.annotation.Nullable; 4 | 5 | import java.io.Serializable; 6 | import java.util.Objects; 7 | 8 | public class Ex implements Serializable { 9 | 10 | public String key; //Id 11 | 12 | public Ex(String key) { 13 | this.key = key; 14 | } 15 | 16 | @Override 17 | public boolean equals(@Nullable Object obj) { 18 | if (null != obj) { 19 | if (hashCode() == obj.hashCode()) 20 | return true; 21 | } 22 | return super.equals(obj); 23 | } 24 | 25 | @Override 26 | public int hashCode() { 27 | return Objects.hash(key); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/ex/MultipleChoice.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.ex; 2 | 3 | import java.io.Serializable; 4 | 5 | public class MultipleChoice extends CommEx implements Serializable { 6 | public MultipleChoice() { 7 | } 8 | 9 | public MultipleChoice(String key) { 10 | this.key = key; 11 | } 12 | 13 | public String name; 14 | public String icon; 15 | public boolean isGroup; 16 | public String groupId; 17 | } 18 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/ex/Title.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.ex; 2 | 3 | public class Title extends Ex { 4 | public Title(String key) { 5 | super(key); 6 | } 7 | 8 | public String title; 9 | } 10 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/ex/UserEx.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.ex; 2 | 3 | import java.io.Serializable; 4 | 5 | public class UserEx extends Ex implements Serializable { 6 | 7 | public UserEx(String key) { 8 | super(key); 9 | } 10 | public String name; 11 | public String faceUrl; 12 | } 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/im/IM.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.im; 2 | 3 | 4 | import android.app.Application; 5 | 6 | import io.openim.android.ouicore.base.BaseApp; 7 | import io.openim.android.ouicore.utils.Constants; 8 | import io.openim.android.ouicore.utils.L; 9 | import io.openim.android.sdk.OpenIMClient; 10 | import io.openim.android.sdk.models.InitConfig; 11 | 12 | public class IM { 13 | public static void initSdk(Application app) { 14 | L.e("App", "---IM--initSdk"); 15 | InitConfig initConfig = new InitConfig(Constants.getImApiUrl(), 16 | Constants.getImWsUrl(), getStorageDir()); 17 | initConfig.isLogStandardOutput = true; 18 | initConfig.logLevel=5; 19 | 20 | ///IM 初始化 21 | OpenIMClient.getInstance().initSDK(app, 22 | initConfig, IMEvent.getInstance().connListener); 23 | 24 | IMEvent.getInstance().init(); 25 | } 26 | 27 | //存储路径 28 | public static String getStorageDir() { 29 | return BaseApp.inst().getFilesDir().getAbsolutePath(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/im/IMBack.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.im; 2 | 3 | import android.widget.Toast; 4 | 5 | import io.openim.android.ouicore.base.BaseApp; 6 | import io.openim.android.sdk.listener.OnBase; 7 | 8 | public class IMBack implements OnBase { 9 | @Override 10 | public void onError(int code, String error) { 11 | Toast.makeText(BaseApp.inst(), error+"("+code+")", 12 | Toast.LENGTH_LONG).show(); 13 | } 14 | 15 | @Override 16 | public void onSuccess(T data) { 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/net/RXRetrofit/Exception/NetworkException.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.net.RXRetrofit.Exception; 2 | 3 | 4 | import io.openim.android.ouicore.R; 5 | import io.openim.android.ouicore.base.BaseApp; 6 | 7 | public class NetworkException extends Exception { 8 | 9 | private static final long serialVersionUID = 114946L; 10 | 11 | 12 | public NetworkException() { 13 | super(BaseApp.inst().getString(R.string.network_unavailable_tips)); 14 | } 15 | 16 | public NetworkException(String message) { 17 | super(message); 18 | } 19 | 20 | 21 | public NetworkException(String message, Throwable cause) { 22 | super(message, cause); 23 | } 24 | 25 | public NetworkException(Throwable cause) { 26 | super(cause); 27 | } 28 | 29 | 30 | } 31 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/net/RXRetrofit/annotations/IdentityEncoding.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.net.RXRetrofit.annotations; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Retention(RetentionPolicy.RUNTIME) 9 | @Target(ElementType.METHOD) 10 | public @interface IdentityEncoding { 11 | } 12 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/net/RXRetrofit/interceptors/IdentityEncodingInterceptor.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.net.RXRetrofit.interceptors; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import java.io.IOException; 6 | 7 | import io.openim.android.ouicore.net.RXRetrofit.annotations.IdentityEncoding; 8 | import okhttp3.Interceptor; 9 | import okhttp3.Request; 10 | import okhttp3.Response; 11 | import retrofit2.Invocation; 12 | 13 | public class IdentityEncodingInterceptor implements Interceptor { 14 | @NonNull 15 | @Override 16 | public Response intercept(@NonNull Chain chain) throws IOException { 17 | Request request = chain.request(); 18 | Invocation invocation = request.tag(Invocation.class); 19 | if (invocation != null && invocation.method().getAnnotation(IdentityEncoding.class) != null) { 20 | Request newRequest = request.newBuilder() 21 | .header("Accept-Encoding", "identity") 22 | .build(); 23 | return chain.proceed(newRequest); 24 | } 25 | return chain.proceed(request); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/net/bage/Base.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.net.bage; 2 | 3 | /** 4 | * Created by WJ on 2017/12/29. 5 | */ 6 | 7 | public class Base { 8 | public int errCode; 9 | 10 | public String errMsg; 11 | public String errDlt; 12 | 13 | public T data; 14 | } 15 | 16 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/repository/OrganizationApi.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.repository; 2 | 3 | import io.reactivex.Observable; 4 | import okhttp3.RequestBody; 5 | import okhttp3.ResponseBody; 6 | import retrofit2.http.Body; 7 | import retrofit2.http.POST; 8 | 9 | public interface OrganizationApi { 10 | 11 | @POST("organization/department/find") 12 | Observable getDepartment(@Body RequestBody requestBody); 13 | 14 | /** 15 | * 获取所在部门 16 | * @param requestBody 17 | * @return 18 | */ 19 | @POST("organization/user/department") 20 | Observable getInDepartment(@Body RequestBody requestBody); 21 | } 22 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/services/IConversationBridge.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.services; 2 | 3 | import androidx.lifecycle.LifecycleOwner; 4 | 5 | import com.alibaba.android.arouter.facade.template.IProvider; 6 | 7 | import io.openim.android.ouicore.im.IMUtil; 8 | import io.openim.android.sdk.models.ConversationInfo; 9 | 10 | public interface IConversationBridge extends IProvider { 11 | void deleteConversationFromLocalAndSvr(String groupID); 12 | 13 | void closeChatPage(); 14 | 15 | ConversationInfo getConversationInfo(); 16 | } 17 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/utils/ByteUtil.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.utils; 2 | 3 | import java.text.DecimalFormat; 4 | 5 | public class ByteUtil { 6 | private static final int GB = 1024 * 1024 *1024; 7 | private static final int MB = 1024 * 1024; 8 | private static final int KB = 1024; 9 | 10 | public static String bytes2kb(long bytes){ 11 | DecimalFormat format = new DecimalFormat("###.0"); 12 | if (bytes / GB >= 1){ 13 | return format.format(bytes / GB) + "G"; 14 | } 15 | else if (bytes / MB >= 1){ 16 | return format.format(bytes / MB) + "M"; 17 | } 18 | else if (bytes / KB >= 1){ 19 | return format.format(bytes / KB) + "K"; 20 | }else { 21 | return bytes + "B"; 22 | } 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/utils/EmojiUtil.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.utils; 2 | 3 | import java.util.HashMap; 4 | 5 | public class EmojiUtil { 6 | public static HashMap emojiFaces = new HashMap() { 7 | { 8 | put("[亲亲]", "ic_face_01"); 9 | put("[看穿]", "ic_face_02"); 10 | put("[色]", "ic_face_03"); 11 | put("[吓哭]", "ic_face_04"); 12 | put("[笑脸]", "ic_face_05"); 13 | put("[眨眼]", "ic_face_06"); 14 | put("[搞怪]", "ic_face_07"); 15 | put("[龇牙]", "ic_face_08"); 16 | put("[无语]", "ic_face_09"); 17 | put("[可怜]", "ic_face_10"); 18 | put("[咒骂]", "ic_face_11"); 19 | put("[晕]", "ic_face_12"); 20 | put("[尴尬]", "ic_face_13"); 21 | put("[暴怒]", "ic_face_14"); 22 | put("[可爱]", "ic_face_15"); 23 | put("[哭泣]", "ic_face_16"); 24 | } 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/utils/FixSizeLinkedList.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.utils; 2 | 3 | import java.util.LinkedList; 4 | 5 | public class FixSizeLinkedList extends LinkedList { 6 | 7 | private int capacity; 8 | 9 | public FixSizeLinkedList(int capacity) { 10 | super(); 11 | this.capacity = capacity; 12 | } 13 | 14 | @Override 15 | public void add(int index, T element) { 16 | super.add(index, element); 17 | if (size() > capacity) { 18 | super.removeFirst(); 19 | } 20 | } 21 | 22 | @Override 23 | public boolean add(T t) { 24 | if (size() + 1 > capacity) { 25 | super.removeFirst(); 26 | } 27 | return super.add(t); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/utils/Obs.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.utils; 2 | 3 | import java.util.Observable; 4 | import java.util.Observer; 5 | 6 | /** 7 | * 观察者 8 | */ 9 | public class Obs extends Observable { 10 | private static Obs observer = null; 11 | 12 | public synchronized static Obs inst() { 13 | if (observer == null) { 14 | observer = new Obs(); 15 | } 16 | return observer; 17 | } 18 | 19 | public static void newMessage(int tag) { 20 | inst().setMessage(new Message(tag)); 21 | } 22 | 23 | public static void newMessage(int tag, Object object) { 24 | inst().setMessage(new Message(tag, object)); 25 | } 26 | 27 | private void setMessage(Message message) { 28 | observer.setChanged(); 29 | observer.notifyObservers(message); 30 | } 31 | 32 | public static class Message { 33 | public int tag; 34 | public Object object; 35 | 36 | public Message(int tag) { 37 | this.tag = tag; 38 | } 39 | 40 | public Message(int tag, Object object) { 41 | this.tag = tag; 42 | this.object = object; 43 | } 44 | } 45 | 46 | } 47 | 48 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/utils/OnDedrepClickListener.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.utils; 2 | 3 | 4 | import android.os.Handler; 5 | import android.os.Looper; 6 | import android.view.View; 7 | 8 | /** 9 | * 去重点击 10 | */ 11 | public abstract class OnDedrepClickListener implements View.OnClickListener { 12 | private long mLastClickTime; 13 | private long timeInterval = 700; 14 | 15 | public OnDedrepClickListener() { 16 | } 17 | 18 | public OnDedrepClickListener(long timeInterval) { 19 | this.timeInterval = timeInterval; 20 | } 21 | 22 | @Override 23 | public void onClick(View v) { 24 | long nowTime = System.currentTimeMillis(); 25 | if (nowTime - mLastClickTime < timeInterval) return; 26 | mLastClickTime = nowTime; 27 | click(v); 28 | } 29 | 30 | public abstract void click(View v); 31 | } 32 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/vm/ForwardVM.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.vm; 2 | 3 | import io.openim.android.ouicore.base.vm.injection.BaseVM; 4 | import io.openim.android.ouicore.im.IMUtil; 5 | import io.openim.android.ouicore.utils.Constants; 6 | import io.openim.android.sdk.OpenIMClient; 7 | import io.openim.android.sdk.models.Message; 8 | 9 | public class ForwardVM extends BaseVM { 10 | public Message forwardMsg; 11 | //转发的内容 用于显示 12 | public String tips; 13 | 14 | public void createForwardMessage(Message message) { 15 | reset(); 16 | tips = IMUtil.getMsgParse(message).toString(); 17 | forwardMsg = OpenIMClient.getInstance().messageManager.createForwardMessage(message); 18 | } 19 | 20 | public void reset() { 21 | forwardMsg = null; 22 | tips=""; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/vm/PreviewMediaVM.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.vm; 2 | 3 | import io.openim.android.ouicore.base.vm.injection.BaseVM; 4 | import io.openim.android.ouicore.ex.Ex; 5 | 6 | public class PreviewMediaVM extends BaseVM { 7 | public MediaData mediaData; 8 | public int currentIndex; //当前选择 9 | 10 | public void preview(MediaData mediaData){ 11 | this.mediaData = mediaData; 12 | } 13 | 14 | public static class MediaData extends Ex { 15 | public boolean isVideo; 16 | public String mediaUrl; 17 | public String thumbnail; //缩略图或第一帧 18 | 19 | public MediaData(String key) { 20 | super(key); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/voice/listener/OnDownloadListener.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.voice.listener; 2 | 3 | import java.io.File; 4 | 5 | public interface OnDownloadListener { 6 | void onDownloadSuccess(File file); 7 | 8 | void onDownloading(int progress); 9 | 10 | void onDownloadFailed(Exception e); 11 | } 12 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/voice/listener/PlayByAssetsListener.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.voice.listener; 2 | 3 | 4 | import io.openim.android.ouicore.voice.player.SMediaPlayer; 5 | 6 | public interface PlayByAssetsListener { 7 | 8 | void onCompletion(SMediaPlayer mediaPlayer); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/voice/listener/PlayerListener.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.voice.listener; 2 | 3 | 4 | import io.openim.android.ouicore.voice.player.SMediaPlayer; 5 | 6 | public interface PlayerListener { 7 | void LoadSuccess(SMediaPlayer mediaPlayer); 8 | 9 | void Loading(SMediaPlayer mediaPlayer, int i); 10 | 11 | void onCompletion(SMediaPlayer mediaPlayer); 12 | 13 | void onError(Exception e); 14 | } 15 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/widget/ImageTxtViewHolder.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.widget; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | 7 | import androidx.annotation.NonNull; 8 | import androidx.recyclerview.widget.RecyclerView; 9 | 10 | import io.openim.android.ouicore.databinding.ItemImgTxtBinding; 11 | 12 | public class ImageTxtViewHolder extends RecyclerView.ViewHolder { 13 | public ItemImgTxtBinding view; 14 | 15 | public ImageTxtViewHolder(@NonNull View itemView) { 16 | super(ItemImgTxtBinding.inflate(LayoutInflater.from(itemView.getContext()), (ViewGroup) itemView,false).getRoot()); 17 | view = ItemImgTxtBinding.bind(this.itemView); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/widget/PlaceHolderDrawable.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.widget; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.annotation.ColorInt; 6 | import androidx.annotation.ColorRes; 7 | import androidx.core.content.res.ResourcesCompat; 8 | import androidx.swiperefreshlayout.widget.CircularProgressDrawable; 9 | 10 | import io.openim.android.ouicore.R; 11 | 12 | public class PlaceHolderDrawable extends CircularProgressDrawable { 13 | /** 14 | * @param context application context 15 | */ 16 | public PlaceHolderDrawable(Context context) { 17 | super(context); 18 | setColorSchemeColors(getColorById(context, R.color.def_bg), getColorById(context, R.color.img_bg), getColorById(context, R.color.gray)); 19 | setCenterRadius(30f); 20 | setStrokeWidth(5f); 21 | start(); 22 | } 23 | 24 | @ColorInt 25 | private int getColorById(Context context, @ColorRes int id) { 26 | return ResourcesCompat.getColor(context.getResources(), id, null); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/widget/zoom/ScaleGestureManager.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.widget.zoom; 2 | 3 | import android.content.Context; 4 | import android.view.MotionEvent; 5 | import android.view.ScaleGestureDetector; 6 | 7 | /** 8 | * Description :放大缩放手势的点击器 9 | */ 10 | 11 | public class ScaleGestureManager extends ScaleGestureDetector { 12 | 13 | ScaleGestureManager(Context context, ScaleGestureListener scaleGestureListener) { 14 | super(context, scaleGestureListener); 15 | } 16 | 17 | @Override 18 | public boolean onTouchEvent(MotionEvent event) { 19 | return super.onTouchEvent(event); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/java/io/openim/android/ouicore/widget/zoom/ScrollGestureManager.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore.widget.zoom; 2 | 3 | import android.content.Context; 4 | import android.view.GestureDetector; 5 | 6 | /** 7 | * Description :滑动手势的管理类 8 | */ 9 | 10 | class ScrollGestureManager extends GestureDetector { 11 | 12 | ScrollGestureManager(Context context, ScrollGestureListener scrollGestureListener) { 13 | super(context, scrollGestureListener); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/anim/anim_fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/anim/anim_fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/anim/dialog_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/anim/dialog_exit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/anim/infinite_rotation.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/bg_dialog_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/bg_edit_vercode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/progress_style.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/selector_btn_theme.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/selector_checkbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/selector_guide_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/shape_guide_bg_defaut.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/shape_guide_bg_focus.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_10_aa666666.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_10_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_10_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_1_stroke.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_25_bottom_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_30_29e3a0.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_30_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_3_66000000.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_3_ff0089ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_3_ffffb300.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_3_stroke_418ae5.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_3_stroke_ffc7c7c8.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_4_33shallow.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_4_666666.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_4_bubble2.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_4_f0f0f0.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_4_f0f6ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_4_fff1f7ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_4_shallow.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_4_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_000000.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_330089ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_33warning.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_e8eaef.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_eeeeee.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_ff0089ff.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_stroke_418ae5.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_stroke_e6e6e6.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_tr_stroke_e6e6e6.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_warning.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_6_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_8_a2c9f8.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_8_fddfa1.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_max_10cc64.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_radius_max_ff999999.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/drawable/sty_top_radius_30_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/item_img_txt.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 15 | 16 | 21 | 22 | 29 | 30 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/item_psrson_sticky.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/item_search_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 18 | 19 | 28 | 29 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/layout_label_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/layout_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 15 | 16 | 25 | 26 | 33 | 34 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/often_recycler_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 14 | 15 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/transparent_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/view_back.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/view_badge.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/view_dividing_line.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/view_dividing_line_verticle.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/view_image.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/view_recycler_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/view_select_image.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/view_swipe_recycler_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/layout/view_waitdilog.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xhdpi/ic_apple_null.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xhdpi/ic_apple_null.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic__copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic__copy.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic__mic_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic__mic_off.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic__mic_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic__mic_on.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic__tree.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic__tree.webp -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_add_friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_add_friend.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_angle_mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_angle_mark.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_back2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_back2.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_blue_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_blue_phone.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_chat_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_chat_photo.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_chat_shoot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_chat_shoot.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_close3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_close3.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_close4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_close4.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_down_arrow2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_down_arrow2.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_download.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_download_pause2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_download_pause2.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_excel.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_mask.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_pdf.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_ppt.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_unknown.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_word.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_file_zip.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_group.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_logo.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_logo2.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_logo2_void.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_logo2_void.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_my2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_my2.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_my_friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_my_friend.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_my_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_my_group.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_net_excellent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_net_excellent.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_net_good.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_net_good.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_net_poor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_net_poor.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_scan_it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_scan_it.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_tick.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_tools_video_call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_tools_video_call.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_un_newsletter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_un_newsletter.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_video_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_video_pause.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_video_s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_video_s2.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_voice_s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_voice_s1.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_white_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_white_down.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxhdpi/ic_zoom_out.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_add.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_add3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_add3.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_add_big2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_add_big2.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_add_big3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_add_big3.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_call_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_call_white.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_chat_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_chat_file.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_check_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_check_select.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_check_unselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_check_unselect.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_close.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_close2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_close2.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_label.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_more.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_not_msg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_not_msg.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_online.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_qrcode.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_right.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_right2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_right2.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_search.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_search2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_search2.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_top_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_top_right.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_triangle.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_triangle_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_triangle_red.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_video_call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_video_call.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_voice_call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_voice_call.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_work_moments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/mipmap-xxxhdpi/ic_work_moments.png -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/raw/message_ring.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUICore/src/main/res/raw/message_ring.wav -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/values/attr.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52dp 4 | 57dp 5 | 48dp 6 | 7 | 260dp 8 | 240dp 9 | 80dp 10 | 11 | 48dp 12 | 42dp 13 | 14 | 17sp 15 | 25dp 16 | 14sp 17 | 12sp 18 | 10sp 19 | 20 | 21 | 6dp 22 | 6dp 23 | 24 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/xml/locales_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /OUIKit/OUICore/src/test/java/io/openim/android/ouicore/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouicore; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /OUIKit/OUIGroup/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /OUIKit/OUIGroup/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/consumer-rules.pro -------------------------------------------------------------------------------- /OUIKit/OUIGroup/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/androidTest/java/io/openim/android/ouigroup/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouigroup; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("io.openim.android.ouigroup.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_at_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_at_all.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_edit.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_edit2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_edit2.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_file.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_init_group_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_init_group_icon.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_photo.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_search_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_search_chat.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_time.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_g_video.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_group_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_group_add.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_group_reduce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/OUIKit/OUIGroup/src/main/res/mipmap-xxhdpi/ic_group_reduce.png -------------------------------------------------------------------------------- /OUIKit/OUIGroup/src/test/java/io/openim/android/ouigroup/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package io.openim.android.ouigroup; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /docs/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/docs/images/logo.jpg -------------------------------------------------------------------------------- /docs/images/preview1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/docs/images/preview1.png -------------------------------------------------------------------------------- /docs/images/preview2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openimsdk/open-im-android-demo/f805dadb686ec751a9d4023f84dd152bb4c8f2cc/docs/images/preview2.png --------------------------------------------------------------------------------