diff --git a/.gitignore b/.gitignore index 054c047..6a7e025 100644 --- a/.gitignore +++ b/.gitignore @@ -1,32 +1,37 @@ -# Built application files +# built application files *.apk *.ap_ -# Files for the Dalvik VM +# files for the dex VM *.dex # Java class files *.class -# Generated files +# generated files bin/ gen/ -# Gradle files -.gradle/ -build/ - # Local configuration file (sdk path, etc) local.properties +# Eclipse project files +.classpath +.project + # Proguard folder generated by Eclipse proguard/ -# Log Files -*.log - -# Android Studio Navigation editor temp files -.navigation/ - -# Android Studio captures folder -captures/ \ No newline at end of file +# Intellij project files +*.iml +*.ipr +*.iws +.idea/ + +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 2140f45..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -Teameeting-Android \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 96cc43e..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf3..0000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 97626ba..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index ae2132d..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/libraries/EventBus2_4.xml b/.idea/libraries/EventBus2_4.xml deleted file mode 100644 index 0fe9ee5..0000000 --- a/.idea/libraries/EventBus2_4.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/android_async_http_1_4_7.xml b/.idea/libraries/android_async_http_1_4_7.xml deleted file mode 100644 index 24bda6d..0000000 --- a/.idea/libraries/android_async_http_1_4_7.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/anyrtc_1_0_0.xml b/.idea/libraries/anyrtc_1_0_0.xml deleted file mode 100644 index 3b9f57d..0000000 --- a/.idea/libraries/anyrtc_1_0_0.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/gson_2_5.xml b/.idea/libraries/gson_2_5.xml deleted file mode 100644 index 45bea3d..0000000 --- a/.idea/libraries/gson_2_5.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/jpush_android_2_0_5.xml b/.idea/libraries/jpush_android_2_0_5.xml deleted file mode 100644 index 9053d3f..0000000 --- a/.idea/libraries/jpush_android_2_0_5.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/logger_1_3.xml b/.idea/libraries/logger_1_3.xml deleted file mode 100644 index 6703565..0000000 --- a/.idea/libraries/logger_1_3.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/nineoldandroids_2_4_0.xml b/.idea/libraries/nineoldandroids_2_4_0.xml deleted file mode 100644 index d173cab..0000000 --- a/.idea/libraries/nineoldandroids_2_4_0.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/support_v4_19_1_0.xml b/.idea/libraries/support_v4_19_1_0.xml deleted file mode 100644 index 533da8e..0000000 --- a/.idea/libraries/support_v4_19_1_0.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/sweetAlertDialogLibrary_unspecified.xml b/.idea/libraries/sweetAlertDialogLibrary_unspecified.xml deleted file mode 100644 index 3d2aa0f..0000000 --- a/.idea/libraries/sweetAlertDialogLibrary_unspecified.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index f86d003..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1.8 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index be9c112..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index 3292c48..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,2552 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1452080935101 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index a3f08ec..71e0ea9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,118 @@ -# Teameeting -Submitted for the first time.Implement initialization, create a conference room, the overall framework design. +**由于业务原因,该项目暂时停止更新,为推动直播技术的更好发展,公司开源直播推拉流客户端,好学的你可以去看看;** -# 功能简介 +- **[AnyRTC-RTMP 开源推拉流客户端 android-windows-ios](https://github.com/AnyRTC/AnyRTC-RTMP)** + +- **[RTMPCHybridEngine-Android 连麦客户端](https://github.com/AnyRTC/RTMPCHybridEngine-Android)** + +- **[RTMPCHybridEngine-IOS 连麦客户端](https://github.com/AnyRTC/RTMPCHybridEngine-IOS)** + +**公司网址: [www.anyrtc.io](https://www.anyrtc.io)** + +### [Teameeting 简介](http://xblvip.cn/Teameeting-Android/) + +一款用集成多人视频通话,群聊功能应用,多达4同时实现通话,多人群聊,同时拥有**Android - IOS - Web- TV盒子**全平台所有版本,轻松实现**全平台**视频通话以及聊天功能。**开放所有源码**,**音频清晰**,断点续传,自适应网速优先音频传输; + +[GitHub地址](https://github.com/Teameeting/Teameeting-Android) + +欢迎小伙伴们加入该项目和我们一起交流,如果对你有帮助给个 **star** 吧,欢迎`pull requests`(^_^),我们为做得更好而不懈努力; + +### 项目演示 + +![enter image description here](https://github.com/DyncLang/Teameeting-Android/blob/master/img/image.gif?raw=true) + +[演示地址](http://7xirvo.com1.z0.glb.clouddn.com/meizuhuitest.mp4) + +### 项目功能 +1. 高清多人视频通话; +2. 多人群聊语音,群聊天; +3. 微信分享点击链接即可加入视频通话; +4. 消息实时提醒; +5. 无需注册; +6. 极光推送群聊,视频邀请时时提醒; +7. 离线消息保持; +8. 加入聊天室列表自动保存; +9. 聊天室权限控制以及聊天室控制; +10. 适配平板以及天猫电视盒子; + + +### 下载地址 +[Android 下载地址](http://app.mi.com/detail/366425) + +[Android-TV 盒子 ](#) + +[ -- IOS -- 下载地址](https://github.com/Teameeting/Teameeting-ios) + + +### 项目相关开源简介 +**视频服务** + **AnyRTC-Server]** https://github.com/AnyRTC](https://github.com/AnyRTC) + +**群聊消息服务** + **Teameeting-MsgServer :**[https://github.com/Teameeting/Teameeting-MsgServer +](https://github.com/Teameeting/Teameeting-MsgServer) + +**应用接口** +**Teameeting-node.js :** [https://github.com/Teameeting/Teameeting-node.js](https://github.com/Teameeting/Teameeting-node.js) + +**IOS 开源地址** +**Teameeting-IOS :** [https://github.com/Teameeting/Teameeting-ios](https://github.com/Teameeting/Teameeting-ios) + +**Android 开源地址** +**Teameeting-Android :** [https://github.com/Teameeting/Teameeting-Android](https://github.com/Teameeting/Teameeting-Android) + + +### Android 致以下开源项目开源敬意 +> **android-async-http** + +* **Link:** [https://github.com/loopj/android-async-http](https://github.com/loopj/android-async-http) + +> **EventBus** + +* **Link:** [https://github.com/greenrobot/EventBus](https://github.com/greenrobot/EventBus) + +> **NineOldAndroids** + +* **Link:** [https://github.com/JakeWharton/NineOldAndroids](https://github.com/JakeWharton/NineOldAndroids) + +> **logger** + +* **Link:** [https://github.com/orhanobut/logger](https://github.com/orhanobut/logger) + +> **gson** + +* **Link:** [https://github.com/google/gson](https://github.com/google/gson) + +> **greendao** + +* **Link:** [https://github.com/greenrobot/greenDAO](https://github.com/greenrobot/greenDAO) + +##联系方式
+ +**QQ群:** **554714720** + +**邮箱:**[zhulang@dync.cc](zhulang@dync.cc)
+ + + + +**该项目只做交流和学习不做商业用途** + + +# License + +Copyright 2015 SilenceDut + +Licensed under the Apache License, Version 2.0 (the "License");you may not use this + +file except in compliance with the License.You may obtain a copy of the License at + + [http://www.apache.org/licenses/LICENSE-2.0] + +Unless required by applicable law or agreed to in writing, software distributed under + +the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + +ANY KIND, either express or implied. See the License for the specific language + +governing permissions and limitations under the License. diff --git a/Teameeting-Android.iml b/Teameeting-Android.iml index 8e23967..6ec7aa6 100644 --- a/Teameeting-Android.iml +++ b/Teameeting-Android.iml @@ -8,12 +8,12 @@ - + - + \ No newline at end of file diff --git a/app/app.iml b/app/app.iml index 64fa87d..b76dc51 100644 --- a/app/app.iml +++ b/app/app.iml @@ -8,15 +8,12 @@ - - - + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -49,6 +88,15 @@ + + + + + + + + + @@ -56,6 +104,15 @@ + + + + + + + + + @@ -63,29 +120,36 @@ - - - - + + + + + - - + - + - - - - + + + - + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 98bed8f..913891b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,35 +1,80 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 19 - buildToolsVersion "23.0.2" + compileSdkVersion 23 + buildToolsVersion '25' defaultConfig { applicationId "org.dync.teameeting" - minSdkVersion 14 - targetSdkVersion 19 + minSdkVersion 16 + targetSdkVersion 23 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } + + versionCode 38 + versionName "1.6.1" + + manifestPlaceholders = [UMENG_CHANNEL_VALUE: "channel_name"] } + buildTypes { release { minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + zipAlignEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + + + productFlavors { + xiaomi {} + umeng {} + _360 {} + baidu {} + wandoujia {} + } + + + productFlavors.all { flavor -> + flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] + } + + applicationVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.apk')) { + def fileName = "teameeting_${variant.productFlavors[0].name}-${defaultConfig.versionName}.apk" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } + repositories { + flatDir { + dirs 'libs' + } + } + + useLibrary 'org.apache.http.legacy' } dependencies { - compile 'com.android.support:support-v4:19.1.0' - compile files('libs/android-async-http-1.4.7.jar') - compile files('libs/anyrtc-1.0.0.jar') - compile files('libs/EventBus2.4.jar') - compile files('libs/jpush-android-2.0.5.jar') + compile files('libs/msgclient_r1.0.1.jar') + compile files('libs/jpush-android-2.1.0.jar') compile files('libs/nineoldandroids-2.4.0.jar') - compile project(':sweetAlertDialogLibrary') + compile 'com.loopj.android:android-async-http:1.4.7' + compile 'de.greenrobot:eventbus:2.4.0' compile 'com.orhanobut:logger:1.3' compile 'com.google.code.gson:gson:2.5' + compile 'de.greenrobot:greendao:2.1.0' + /*debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1' + releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'*/ + compile(name:'meet_kit-release', ext:'aar') + compile 'com.android.support:support-v4:23.1.1' + compile files('libs/pgyer_sdk_2.2.2.jar') + compile files('libs/libammsdk.jar') + compile 'me.drakeet.materialdialog:library:1.3.0' + compile project(':SweetAlertDialogLibrary') } diff --git a/app/libs/EventBus2.4.jar b/app/libs/EventBus2.4.jar deleted file mode 100644 index 6e9d2df..0000000 Binary files a/app/libs/EventBus2.4.jar and /dev/null differ diff --git a/app/libs/android-async-http-1.4.7.jar b/app/libs/android-async-http-1.4.7.jar deleted file mode 100644 index d9e203e..0000000 Binary files a/app/libs/android-async-http-1.4.7.jar and /dev/null differ diff --git a/app/libs/anyrtc-1.0.0.jar b/app/libs/anyrtc-1.0.0.jar deleted file mode 100644 index d76314b..0000000 Binary files a/app/libs/anyrtc-1.0.0.jar and /dev/null differ diff --git a/app/libs/anyrtc-1.0.3.jar b/app/libs/anyrtc-1.0.3.jar new file mode 100644 index 0000000..2cf2d37 Binary files /dev/null and b/app/libs/anyrtc-1.0.3.jar differ diff --git a/app/libs/jpush-android-2.1.0.jar b/app/libs/jpush-android-2.1.0.jar new file mode 100644 index 0000000..867ed25 Binary files /dev/null and b/app/libs/jpush-android-2.1.0.jar differ diff --git a/app/libs/libammsdk.jar b/app/libs/libammsdk.jar new file mode 100644 index 0000000..bdb5909 Binary files /dev/null and b/app/libs/libammsdk.jar differ diff --git a/app/libs/meet_kit-release.aar b/app/libs/meet_kit-release.aar new file mode 100644 index 0000000..f53fe07 Binary files /dev/null and b/app/libs/meet_kit-release.aar differ diff --git a/app/libs/msgclient_r1.0.1.jar b/app/libs/msgclient_r1.0.1.jar new file mode 100644 index 0000000..54dbbb9 Binary files /dev/null and b/app/libs/msgclient_r1.0.1.jar differ diff --git a/app/libs/pgyer_sdk_2.2.2.jar b/app/libs/pgyer_sdk_2.2.2.jar new file mode 100644 index 0000000..66df8ae Binary files /dev/null and b/app/libs/pgyer_sdk_2.2.2.jar differ diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..4d6c8c0 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,162 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-optimizationpasses 7 +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-dontpreverify +-verbose +-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* + +-keep public class * extends android.app.Activity +-keep public class * extends android.app.Application +-keep public class * extends android.app.Service +-keep public class * extends android.content.BroadcastReceiver +-keep public class * extends android.content.ContentProvider +-keep public class * extends android.app.backup.BackupAgentHelper +-keep public class * extends android.preference.Preference +-keep public class com.android.vending.licensing.ILicensingService + +-keepclasseswithmember class * { + native ; +} + +-keepclasseswithmember class * { + public (android.content.Context, android.util.AttributeSet); +} + +-keepclasseswithmember class * { + public (android.content.Context, android.util.AttributeSet, int); +} + +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +-keep public class * extends android.view.View { + public (android.content.Context); + public (android.content.Context, android.util.AttributeSet); + public (android.content.Context, android.util.AttributeSet, int); + public void set*(...); +} + +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keep class * implements android.os.Parcelable { + public static final android.os.Parcelable$Creator *; +} + +-keepnames class * implements java.io.Serializable + +-keepclassmembers class * implements java.io.Serializable { + static final long serialVersionUID; + private static final java.io.ObjectStreamField[] serialPersistentFields; + !static !transient ; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepattributes *Annotation* +-keepattributes Exceptions,InnerClasses,Signature +-keepattributes SourceFile,LineNumberTable + +-keep class **.R$* { *; } +#-libraryjars libs/android-support-v4.jar +-dontwarn android.support.v4.** +-keep class android.support.v4.** { *; } +-keep interface android.support.v4.** { *; } +-keep public class * extends android.support.v4.** +-keep public class * extends android.app.Fragment + +#工程中含有第三方jar包 +#-libraryjars libs/anyrtc-1.0.2.jar +#-libraryjars libs/jpush-android-2.1.0.jar +#-libraryjars libs/libammsdk.jar +#-libraryjars libs/msgclient_r1.0.1.jar +#-libraryjars libs/nineoldandroids-2.4.0.jar +#libraryjars libs/pgyer_sdk_2.2.2.jar + +#项目里面包含的包也不能混淆 +-keep class android.support.v4.** {*;} +-dontwarn android.support.v4.** + +-keep class com.ypy.eventbus.** {*;} +-dontwarn com.ypy.eventbus.** +-keepclassmembers class ** { + public void onEvent*(**); +} + +-keep class org.anyrtc.** {*;} +-dontwarn org.anyrtc.** + +-keep class org.webrtc.** {*;} +-dontwarn org.webrtc.** + +-keep class cn.jpush.** {*;} +-dontwarn cn.jpush.** + +-keep class com.google.** {*;} +-dontwarn com.google.** + + -keep class com.tencent.mm.** {*;} +-dontwarn com.tencent.mm.** + +-keep class org.dync.teameeting.sdkmsgclient.** {*;} +-dontwarn org.dync.teameeting.sdkmsgclient.** + +-keep class com.nineoldandroids.animation.** {*;} +-dontwarn com.nineoldandroids.animation.** + +-keep class com.pgyersdk.** {*;} +-dontwarn com.pgyersdk.** + +-keep class org.dync.teameeting.bean.** {*;} +-dontwarn org.dync.teameeting.bean.** + +# # ------------------------------------------- + +# # ######## greenDao混淆 ########## + +# # ------------------------------------------- + +-keep class de.greenrobot.dao.** {*;} + +-keepclassmembers class * extends de.greenrobot.dao.AbstractDao { + public static java.lang.String TABLENAME; +} +-keep class **$Properties + +## ---------------------------------- + +## ########## Gson混淆 ########## + +## ---------------------------------- + +-keepattributes Signature + +-keep class sun.misc.Unsafe { *; } + +-keep class com.google.gson.examples.android.model.** { *; } diff --git a/app/src/androidTest/java/cn/zlpro/cn/function/ApplicationTest.java b/app/src/androidTest/java/cn/zlpro/cn/function/ApplicationTest.java new file mode 100644 index 0000000..ffcbc1d --- /dev/null +++ b/app/src/androidTest/java/cn/zlpro/cn/function/ApplicationTest.java @@ -0,0 +1,49 @@ +package cn.zlpro.cn.function; + +import android.app.Application; +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.test.ApplicationTestCase; +import android.util.Log; + +import org.dync.teameeting.db.CRUDChat; +import org.dync.teameeting.db.chatdao.ChatCacheEntity; +import org.dync.teameeting.db.chatdao.ChatCacheEntityDao; +import org.dync.teameeting.db.chatdao.DaoMaster; +import org.dync.teameeting.db.chatdao.DaoSession; + +import java.util.ArrayList; +import java.util.List; + +/** + * Testing Fundamentals + */ +public class ApplicationTest extends ApplicationTestCase { + public ApplicationTest() { + super(Application.class); + } + + public static List selectChatLsit(Context context, String meetingId) { + DaoSession sesion = getSession(context); + + ChatCacheEntityDao chatEnity = sesion.getChatCacheEntityDao(); + List list = new ArrayList(); + + list = chatEnity.queryBuilder().where(ChatCacheEntityDao.Properties.Meetingid.eq(meetingId)).list(); + Log.i("CRUDChat", "testLoadAll"); + for (ChatCacheEntity p : list) { + Log.i("CRUDChat-Content", p.getContent()); + } + + return list; + } + + public static DaoSession getSession(Context context) { + SQLiteDatabase db = new DaoMaster.DevOpenHelper(context, + "CHAT.db", null).getWritableDatabase(); + DaoMaster dm = new DaoMaster(db); + DaoSession sesion = dm.newSession(); + return sesion; + } + +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 45b9eef..b917b94 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,17 +1,14 @@ + android:versionCode="37" + android:versionName="1.5.7"> - - + @@ -40,6 +37,9 @@ + + + @@ -55,74 +55,89 @@ android:theme="@style/AppTheme"> + android:windowSoftInputMode="adjustPan" /> + android:label="@string/app_name"> - - + - + - + - - - - + android:theme="@android:style/Theme.Light.NoTitleBar" /> + android:theme="@android:style/Theme.Light.NoTitleBar" /> + android:theme="@android:style/Theme.Light.NoTitleBar" /> + android:windowSoftInputMode="adjustPan" /> + android:theme="@android:style/Theme.Light.NoTitleBar" /> + + + + android:name="cn.jpush.android.ui.PopWinActivity" + android:exported="false" + android:theme="@style/MyDialogStyle" /> + + + + - + - + + + + + - - + + android:exported="false" + android:process=".pushServerice"> @@ -140,18 +155,18 @@ - + - + + android:enabled="true" + android:exported="false"> - - - + + @@ -165,47 +180,26 @@ - - - - - - - - - - - + - + + android:enabled="true" + android:exported="false"> - - - + - - - - - - - - - - - - + + + + + + @@ -216,10 +210,12 @@ - - + + diff --git a/app/src/main/java/org/dync/teameeting/TeamMeetingApp.java b/app/src/main/java/org/dync/teameeting/TeamMeetingApp.java index cdcc271..4ab7192 100644 --- a/app/src/main/java/org/dync/teameeting/TeamMeetingApp.java +++ b/app/src/main/java/org/dync/teameeting/TeamMeetingApp.java @@ -1,175 +1,211 @@ package org.dync.teameeting; +import android.app.Activity; import android.app.Application; +import android.content.Context; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.media.MediaPlayer; import android.net.ConnectivityManager; import android.os.Bundle; import android.os.Environment; import android.provider.Settings.Secure; -import android.util.Log; import android.widget.Toast; -import org.anyrtc.Anyrtc; -import org.dync.teameeting.bean.MySelf; +import com.pgyersdk.crash.PgyCrashManager; +import com.tencent.mm.sdk.openapi.IWXAPI; + +import org.anyrtc.meet_kit.RTMeetKit; import org.dync.teameeting.bean.SelfData; +import org.dync.teameeting.chatmessage.ChatMessageClient; import org.dync.teameeting.receiver.NetWorkReceiver; +import org.dync.teameeting.sdkmsgclient.msgs.TMMsgSender; import org.dync.teameeting.utils.ScreenUtils; +import java.util.ArrayList; +import java.util.List; + import cn.jpush.android.api.JPushInterface; -public class TeamMeetingApp extends Application -{ +public class TeamMeetingApp extends Application { - public static boolean mIsDebug = true;// 是否需要打印bug, + private Context context; + public static boolean mIsDebug = true;// private static final String TAG = "Application"; - private static final boolean mDebug = true; private static TeamMeetingApp mTeamMeetingApp; - private static MySelf mMySelf; + private static ChatMessageClient mChatMessageClient; + public static boolean isInitFalg = false; // APP in the running state + private static SelfData mSelfData; private NetWorkReceiver mNetReceiver; public static boolean isPad = false; + private static TMMsgSender mMsgSender; + private MediaPlayer mediaPlayer; + + private RTMeetKit mMeetKit; + + public static List mMeetingActivityList = new ArrayList(); + + public static Activity getMainActivity() { + return mainActivity; + } + + public static void setMainActivity(Activity mainActivity) { + TeamMeetingApp.mainActivity = mainActivity; + } + + public void startMediaPlayer() { + if (mediaPlayer != null) { + mediaPlayer.reset(); + } + mediaPlayer = MediaPlayer.create(context, R.raw.ring); + mediaPlayer.start(); + } + + public void stopMediaplayer() { + if (mediaPlayer != null) { + mediaPlayer.stop(); + } + } + + public static Activity mainActivity; + + public static List getMeetingActivityList() { + return mMeetingActivityList; + } + + public static TeamMeetingApp getTeamMeetingApp() { + return mTeamMeetingApp; + } + + /*chat message deal with*/ + public static TMMsgSender getmMsgSender() { + return mMsgSender; + } + + public void setmMsgSender(TMMsgSender msgSender) { + mMsgSender = msgSender; + } + + public static void setSelfData(SelfData selfData) { + mSelfData = selfData; + } + + public static SelfData getmSelfData() { + return mSelfData; + } + + public static ChatMessageClient getmChatMessageClient() { + return mChatMessageClient; + } + + private IWXAPI api; @Override - public void onCreate() - { + public void onCreate() { // TODO Auto-generated method stub super.onCreate(); - mMySelf = new MySelf(); + context = this; mSelfData = new SelfData(); + mChatMessageClient = new ChatMessageClient(context); registerReceiver(); isPad = ScreenUtils.isPad(this); - if (mDebug) - { - Log.e(TAG, "onCreate: 当前设备是一个否是平板" + isPad); - } JPushInterface.setDebugMode(true); JPushInterface.init(this); + // refWatcher = LeakCanary.install(this); + + PgyCrashManager.register(this); + + } + - Anyrtc.InitAnyrtc("mzw0001", "defq34hj92mxxjhaxxgjfdqi1s332dd", "d74TcmQDMB5nWx9zfJ5al7JdEg3XwySwCkhdB9lvnd1", "org.dync.app"); + public Context getContext() { + return context; } /** * registerReceiver */ - private void registerReceiver() - { + private void registerReceiver() { mNetReceiver = new NetWorkReceiver(); IntentFilter netFilter = new IntentFilter(); netFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(mNetReceiver, netFilter); - } - public TeamMeetingApp() - { + public TeamMeetingApp() { super(); mTeamMeetingApp = this; } - public static TeamMeetingApp getTeamMeetingApp() - { - - return mTeamMeetingApp; - } - - public static MySelf getMyself() - { - return mMySelf; - } - - public static void setSelfData(SelfData selfData) - { - mSelfData = selfData; - } - - public static SelfData getmSelfData() - { - return mSelfData; - } - /** * get the Token from manifest.xml * * @return the value of Token */ - public String getToken() - { + public String getToken() { Bundle bundle = null; String tokenKey = ""; - try - { + try { ApplicationInfo info = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); - bundle = info.metaData;// 获取metaData标签内容 - if (bundle != null) - { - tokenKey = bundle.getString("TOKEN");// 这里获取的就是value值 + bundle = info.metaData; + if (bundle != null) { + tokenKey = bundle.getString("TOKEN"); } - } catch (PackageManager.NameNotFoundException localNameNotFoundException1) - { + } catch (PackageManager.NameNotFoundException localNameNotFoundException1) { } return tokenKey; } - public void Destroy() - { + public void Destroy() { unregisterReceiver(mNetReceiver); + if (mMsgSender != null) + mMsgSender.TMUnin(); } /** * Judge if device has SD card */ - public boolean hasSdcard() - { + public boolean hasSdcard() { String state = Environment.getExternalStorageState(); - if (state.equals(Environment.MEDIA_MOUNTED)) - { + if (state.equals(Environment.MEDIA_MOUNTED)) { return true; - } else - { + } else { return false; } } - public void showToast(String msg) - { + public void showToast(String msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } - public void showToast(int string) - { + public void showToast(int string) { Toast.makeText(this, getString(string), Toast.LENGTH_SHORT).show(); } - public String getVersionName() - { + public String getVersionName() { PackageInfo pkgInfo = null; - try - { + try { pkgInfo = getPackageManager().getPackageInfo(getPackageName(), 0); - } catch (NameNotFoundException e) - { + } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return pkgInfo.versionName; } - public int getVersionCode() - { + public int getVersionCode() { PackageInfo pkgInfo = null; - try - { + try { pkgInfo = getPackageManager().getPackageInfo(getPackageName(), 0); - } catch (NameNotFoundException e) - { + } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } @@ -181,8 +217,7 @@ public int getVersionCode() * * @return the device id */ - public String getDevId() - { + public String getDevId() { return Secure.getString(getContentResolver(), Secure.ANDROID_ID); } diff --git a/app/src/main/java/org/dync/teameeting/bean/ChatMessage.java b/app/src/main/java/org/dync/teameeting/bean/ChatMessage.java new file mode 100644 index 0000000..b44b803 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/bean/ChatMessage.java @@ -0,0 +1,80 @@ +package org.dync.teameeting.bean; + +import java.util.Date; + + +public class ChatMessage { + /** + * message type + */ + private Type type; + + /** + * Message Content + */ + private String content; + + /** + * Date + */ + private Date date; + + /** + * Date format + */ + private String dateStr; + + /** + * who send + */ + private String username; + + + + public ChatMessage(Type type, String msg, String name, String dateStr) { + super(); + this.type = type; + this.content = msg; + this.username = name; + this.dateStr = dateStr; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public long getDateStr() { + return Long.valueOf(dateStr); + } + + public void setDateStr(String dateStr) { + this.dateStr = dateStr; + } + + public Date getDate() { + return date; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + public enum Type {INPUT, + OUTPUT; + } +} diff --git a/app/src/main/java/org/dync/teameeting/bean/MeetingInfo.java b/app/src/main/java/org/dync/teameeting/bean/MeetingInfo.java new file mode 100644 index 0000000..7d27de7 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/bean/MeetingInfo.java @@ -0,0 +1,102 @@ +package org.dync.teameeting.bean; + +import java.io.Serializable; + + +/** + * Created by zhangqilu on 2016/1/12. + */ +public class MeetingInfo { + /* info {"meetingid":"400000000492","userid":"b1ea95e9-157f-4c7e-a144-e5636d582ba6","meetname":"1225","meetdesc":"","meetusable":1, + "pushable":1,"meettype1":0,"memnumber":0,"crttime":1452497084808}*/ + private String meetingid; + private String userid; + private String meetname; + private String meetdesc; + private int meetenable; + private int pushable; + private int meettype1; + private int memnumber; + private long crttime; + + public String getMeetingid() { + return meetingid; + } + + public void setMeetingid(String meetingid) { + this.meetingid = meetingid; + } + + public String getUserid() { + return userid; + } + + public void setUserid(String userid) { + this.userid = userid; + } + + public String getMeetname() { + return meetname; + } + + public void setMeetname(String meetname) { + this.meetname = meetname; + } + + public String getMeetdesc() { + return meetdesc; + } + + public void setMeetdesc(String meetdesc) { + this.meetdesc = meetdesc; + } + + public int getMeetenable() { + return meetenable; + } + + public void setMeetenable(int meetenable) { + this.meetenable = meetenable; + } + + public int getPushable() { + return pushable; + } + + public void setPushable(int pushable) { + this.pushable = pushable; + } + + public int getMeettype1() { + return meettype1; + } + + public void setMeettype1(int meettype1) { + this.meettype1 = meettype1; + } + + public int getMemnumber() { + return memnumber; + } + + public void setMemnumber(int memnumber) { + this.memnumber = memnumber; + } + + public long getCrttime() { + return crttime; + } + + public void setCrttime(long crttime) { + this.crttime = crttime; + } + + @Override + public String toString() { + return "MeetingInfo{" + "meetingid='" + meetingid + '\'' + + ", userid='" + userid + '\'' + ", meetname='" + meetname + '\'' + + ", meetdesc='" + meetdesc + '\'' + ", meetusable=" + meetenable + + ", pushable=" + pushable + ", meettype1=" + meettype1 + ", memnumber=" + + memnumber + ", crttime=" + crttime + '}'; + } +} diff --git a/app/src/main/java/org/dync/teameeting/bean/MeetingList.java b/app/src/main/java/org/dync/teameeting/bean/MeetingList.java index 44e9d80..a36221e 100644 --- a/app/src/main/java/org/dync/teameeting/bean/MeetingList.java +++ b/app/src/main/java/org/dync/teameeting/bean/MeetingList.java @@ -1,233 +1,48 @@ package org.dync.teameeting.bean; -import java.io.Serializable; import java.util.ArrayList; import java.util.List; + /** - * Created by 小白龙 on 2015/12/28 0028. + * Created by zhulang on 2015/12/28 0028. */ -public class MeetingList -{ - - /** - * code : 200 - * meetingList : [{"jointime":1451201381005,"meetdesc":"","meetingid":"400000000147","meetinguserid":"cc1f0115b54c46a1","meetname":"Untitled room","meettype":0,"meetusable":1,"memnumber":0,"owner":1,"pushable":1},{"jointime":1451130113421,"meetdesc":"","meetingid":"400000000146","meetinguserid":"cc1f0115b54c46a1","meetname":"Untitled room","meettype":0,"meetusable":1,"memnumber":0,"owner":1,"pushable":1},{"jointime":1451129707889,"meetdesc":"","meetingid":"400000000145","meetinguserid":"cc1f0115b54c46a1","meetname":"Untitled room???","meettype":0,"meetusable":1,"memnumber":0,"owner":1,"pushable":1},{"jointime":1451129691076,"meetdesc":"","meetingid":"400000000144","meetinguserid":"cc1f0115b54c46a1","meetname":"Untitled room","meettype":0,"meetusable":1,"memnumber":0,"owner":1,"pushable":1},{"jointime":1451129560784,"meetdesc":"","meetingid":"400000000142","meetinguserid":"cc1f0115b54c46a1","meetname":"Untitled room","meettype":0,"meetusable":1,"memnumber":0,"owner":1,"pushable":1},{"jointime":1451129548950,"meetdesc":"","meetingid":"400000000140","meetinguserid":"cc1f0115b54c46a1","meetname":"Untitled room","meettype":0,"meetusable":1,"memnumber":0,"owner":1,"pushable":1}] - * message : get user meeting room list success - * requestid : 1451292857674 - */ - +public class MeetingList { private int code; private String message; private long requestid; - /** - * jointime : 1451201381005 - * meetdesc : - * meetingid : 400000000147 - * meetinguserid : cc1f0115b54c46a1 - * meetname : Untitled room - * meettype : 0 - * meetusable : 1 - * memnumber : 0 - * owner : 1 - * pushable : 1 - */ private List meetingList = new ArrayList(); - public void setCode(int code) - { + public void setCode(int code) { this.code = code; } - public void setMessage(String message) - { + public void setMessage(String message) { this.message = message; } - public void setRequestid(long requestid) - { + public void setRequestid(long requestid) { this.requestid = requestid; } - public void setMeetingList(List meetingList) - { + public void setMeetingList(List meetingList) { this.meetingList = meetingList; } - public int getCode() - { + public int getCode() { return code; } - public String getMessage() - { + public String getMessage() { return message; } - public long getRequestid() - { + public long getRequestid() { return requestid; } - public List getMeetingList() - { + public List getMeetingList() { return meetingList; } - - public static class MeetingListEntity implements Serializable - { - private long jointime; - private String meetdesc; - private String meetingid; - private String meetinguserid; - private String meetname; - private int meettype; - private int meetusable; - private int memnumber; - private int owner; - private int pushable; - private int mMeetType2 = 0; - - private boolean applyTyep = true; //true:success false : wait - - public boolean isApplyTyep() - { - return applyTyep; - } - - public void setApplyTyep(boolean applyTyep) - { - this.applyTyep = applyTyep; - } - - - public void setJointime(long jointime) - { - this.jointime = jointime; - } - - public void setMeetdesc(String meetdesc) - { - this.meetdesc = meetdesc; - } - - public void setMeetingid(String meetingid) - { - this.meetingid = meetingid; - } - - public void setMeetinguserid(String meetinguserid) - { - this.meetinguserid = meetinguserid; - } - - public void setMeetname(String meetname) - { - this.meetname = meetname; - } - - public void setMeettype(int meettype) - { - this.meettype = meettype; - } - - public void setMeetusable(int meetusable) - { - this.meetusable = meetusable; - } - - public void setMemnumber(int memnumber) - { - this.memnumber = memnumber; - } - - public void setOwner(int owner) - { - this.owner = owner; - } - - public void setPushable(int pushable) - { - this.pushable = pushable; - } - - public long getJointime() - { - return jointime; - } - - public String getMeetdesc() - { - return meetdesc; - } - - public String getMeetingid() - { - return meetingid; - } - - public String getMeetinguserid() - { - return meetinguserid; - } - - public String getMeetname() - { - return meetname; - } - - public int getMeettype() - { - return meettype; - } - - public int getMeetusable() - { - return meetusable; - } - - public int getMemnumber() - { - return memnumber; - } - - public int getOwner() - { - return owner; - } - - public int getPushable() - { - return pushable; - } - - public int getmMeetType2() - { - return mMeetType2; - } - - public void setmMeetType2(int mMeetType2) - { - this.mMeetType2 = mMeetType2; - } - - @Override - public String toString() - { - return "MeetingListEntity{" + - "jointime=" + jointime + - ", meetdesc='" + meetdesc + '\'' + - ", meetingid='" + meetingid + '\'' + - ", meetinguserid='" + meetinguserid + '\'' + - ", meetname='" + meetname + '\'' + - ", meettype=" + meettype + - ", meetusable=" + meetusable + - ", memnumber=" + memnumber + - ", owner=" + owner + - ", pushable=" + pushable + - ", mMeetType2=" + mMeetType2 + - '}'; - } - } } diff --git a/app/src/main/java/org/dync/teameeting/bean/MeetingListEntity.java b/app/src/main/java/org/dync/teameeting/bean/MeetingListEntity.java new file mode 100644 index 0000000..3b935ee --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/bean/MeetingListEntity.java @@ -0,0 +1,200 @@ +package org.dync.teameeting.bean; + +import android.content.Context; + +import org.dync.teameeting.db.CRUDChat; +import org.dync.teameeting.db.chatdao.ChatCacheEntity; +import org.dync.teameeting.utils.StringHelper; + +import java.io.Serializable; + + +/** + * Created by zhulang on 2016/1/8 0008. + */ +public class MeetingListEntity implements Serializable { + private String anyrtcid; + private long createtime; + private long jointime; + private String meetdesc; + private String meetingid; + private String userid; + private String meetname; + private int meettype; + private int meetenable; + private int memnumber; + private int owner; + private int pushable; + private int mMeetType2 = 0; + private boolean isRead = true; + private String unReadMessage; + private boolean applyTyep = true; //true:success false : wait + + public int getMeetenable() { + return meetenable; + } + + public void setMeetenable(int meetenable) { + this.meetenable = meetenable; + } + + public long getCreatetime() { + return createtime; + } + + public void setCreatetime(long createtime) { + this.createtime = createtime; + } + + public boolean isRead(Context context) { + if (meetingid != null) { + long l = CRUDChat.selectLoadListSize(context, meetingid); + isRead = (l > 0) ? false : true; + } + + return isRead; + } + + public void setIsRead(boolean isRead) { + this.isRead = isRead; + } + + public String getUnReadMessage() { + return unReadMessage; + } + + public void setUnReadMessage(String unReadMessage) { + this.unReadMessage = unReadMessage; + } + + public boolean isApplyTyep() { + return applyTyep; + } + + public void setApplyTyep(boolean applyTyep) { + this.applyTyep = applyTyep; + } + + public void setJointime(long jointime) { + this.jointime = jointime; + } + + public void setMeetdesc(String meetdesc) { + this.meetdesc = meetdesc; + } + + public void setMeetingid(String meetingid) { + this.meetingid = meetingid; + } + + public void setMeetname(String meetname) { + this.meetname = meetname; + } + + public void setMeettype(int meettype) { + this.meettype = meettype; + } + + public void setMemnumber(int memnumber) { + this.memnumber = memnumber; + } + + public void setOwner(int owner) { + this.owner = owner; + } + + public void setPushable(int pushable) { + this.pushable = pushable; + } + + public long getJointime() { + return jointime; + } + + public String getMeetdesc() { + return meetdesc; + } + + public String getMeetingid() { + return meetingid; + } + + public boolean isRead() { + return isRead; + } + + public void setRead(boolean read) { + isRead = read; + } + + public String getUserid() { + return userid; + } + + public void setUserid(String userid) { + this.userid = userid; + } + + public String getAnyrtcid() { + return anyrtcid; + } + + public void setAnyrtcid(String anyrtcid) { + this.anyrtcid = anyrtcid; + } + + public String getMeetname() { + return meetname; + } + + public int getMeettype() { + return meettype; + } + + public int getMemnumber() { + return memnumber; + } + + public int getOwner() { + return owner; + } + + public int getPushable() { + return pushable; + } + + public int getmMeetType2() { + return mMeetType2; + } + + public void setmMeetType2(int mMeetType2) { + this.mMeetType2 = mMeetType2; + } + + /** + * 初始化未读消息 + * @param context + */ + public void initUnReadMessage(Context context) { + if (!isRead(context)) { + ChatCacheEntity chatCacheEntity = CRUDChat.selectTopChatMessage(context, + meetingid); + long l = CRUDChat.selectLoadListSize(context, meetingid); + long sendtimeOrlong = chatCacheEntity.getSendtimeOrlong(); + setUnReadMessage(StringHelper.unReadMessageStr(l, sendtimeOrlong, context.getResources())); + } + } + + @Override + public String toString() { + return "MeetingListEntity{" + "anyrtcid='" + anyrtcid + '\'' + + ", createtime=" + createtime + ", jointime=" + jointime + + ", meetdesc='" + meetdesc + '\'' + ", meetingid='" + meetingid + '\'' + + ", userid='" + userid + '\'' + ", meetname='" + meetname + '\'' + + ", meettype=" + meettype + ", meetusable=" + meetenable + + ", memnumber=" + memnumber + ", owner=" + owner + ", pushable=" + + pushable + ", mMeetType2=" + mMeetType2 + ", isRead=" + isRead + + ", unReadMessage='" + unReadMessage + '\'' + ", applyTyep=" + + applyTyep + '}'; + } +} diff --git a/app/src/main/java/org/dync/teameeting/bean/MessageList.java b/app/src/main/java/org/dync/teameeting/bean/MessageList.java new file mode 100644 index 0000000..21d696b --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/bean/MessageList.java @@ -0,0 +1,48 @@ +package org.dync.teameeting.bean; + +import java.util.List; + +/** + * Created by zhangqilu on 2016/1/14. + */ +public class MessageList { + + private long requestid; + private int code; + private String message; + + private List messageList; + + public void setRequestid(long requestid) { + this.requestid = requestid; + } + + public void setCode(int code) { + this.code = code; + } + + public void setMessage(String message) { + this.message = message; + } + + public void setMessageList(List messageList) { + this.messageList = messageList; + } + + public long getRequestid() { + return requestid; + } + + public int getCode() { + return code; + } + + public String getMessage() { + return message; + } + + public List getMessageList() { + return messageList; + } + +} diff --git a/app/src/main/java/org/dync/teameeting/bean/MessageListEntity.java b/app/src/main/java/org/dync/teameeting/bean/MessageListEntity.java new file mode 100644 index 0000000..958dffd --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/bean/MessageListEntity.java @@ -0,0 +1,93 @@ +package org.dync.teameeting.bean; + +/** + * Created by zhangqilu on 2016/1/14. + */ +public class MessageListEntity { + + private int id; + private int messagetype; + private String meetingid; + private String sessionid; + private String userid; + private long sendtime; + private String message; + private String username; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setId(int id) { + this.id = id; + } + + public void setMessagetype(int messagetype) { + this.messagetype = messagetype; + } + + public void setMeetingid(String meetingid) { + this.meetingid = meetingid; + } + + public void setSessionid(String sessionid) { + this.sessionid = sessionid; + } + + public void setUserid(String userid) { + this.userid = userid; + } + + public void setSendtime(long sendtime) { + this.sendtime = sendtime; + } + + public void setMessage(String message) { + this.message = message; + } + + public int getId() { + return id; + } + + public int getMessagetype() { + return messagetype; + } + + public String getMeetingid() { + return meetingid; + } + + public String getSessionid() { + return sessionid; + } + + public String getUserid() { + return userid; + } + + public long getSendtime() { + return sendtime; + } + + public String getMessage() { + return message; + } + + @Override + public String toString() { + return "MessageListEntity{" + + "id=" + id + + ", messagetype=" + messagetype + + ", meetingid='" + meetingid + '\'' + + ", sessionid='" + sessionid + '\'' + + ", userid='" + userid + '\'' + + ", sendtime=" + sendtime + + ", message='" + message + '\'' + + '}'; + } +} diff --git a/app/src/main/java/org/dync/teameeting/bean/MySelf.java b/app/src/main/java/org/dync/teameeting/bean/MySelf.java deleted file mode 100644 index cd70979..0000000 --- a/app/src/main/java/org/dync/teameeting/bean/MySelf.java +++ /dev/null @@ -1,183 +0,0 @@ -package org.dync.teameeting.bean; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -public class MySelf -{ - - /** - * package name - */ - private String mAppId; - /** - * name - */ - private String mName; - /** - * userId - */ - private String mUserId; - /** - * Status - */ - private String mStatus; - /** - * RegisterType - */ - private String mRegisterType; - /** - * LoginType - */ - private String mLoginType; - /** - * Authorization - */ - private String mAuthorization; - /** - * UserType - */ - private String mUserType; - /** - * RegisterTime - */ - private String mRegisterTime; - /** - * PushToken - */ - private String mPushToken; - /** - * IsNetConnected - */ - private boolean mIsNetConnected; - - private List mRoomList = new ArrayList(); - - public MySelf() - { - // TODO Auto-generated constructor stub - } - - public String getmAppId() - { - return mAppId; - } - - public void setmAppId(String mAppId) - { - this.mAppId = mAppId; - } - - public String getmName() - { - return mName; - } - - public void setmName(String mName) - { - this.mName = mName; - } - - public String getmUserId() - { - return mUserId; - } - - public void setmUserId(String mUserId) - { - this.mUserId = mUserId; - } - - public String getmStatus() - { - return mStatus; - } - - public void setmStatus(String mStatus) - { - this.mStatus = mStatus; - } - - public String getmRegisterType() - { - return mRegisterType; - } - - public void setmRegisterType(String mRegisterType) - { - this.mRegisterType = mRegisterType; - } - - public String getmLoginType() - { - return mLoginType; - } - - public void setmLoginType(String mLoginType) - { - this.mLoginType = mLoginType; - } - - public String getmAuthorization() - { - return mAuthorization; - } - - public void setmAuthorization(String mAuthorization) - { - this.mAuthorization = mAuthorization; - } - - public String getmUserType() - { - return mUserType; - } - - public void setmUserType(String mUserType) - { - this.mUserType = mUserType; - } - - public String getmRegisterTime() - { - return mRegisterTime; - } - - public void setmRegisterTime(String mRegisterTime) - { - this.mRegisterTime = mRegisterTime; - } - - public String getmPushToken() - { - return mPushToken; - } - - public void setmPushToken(String mPushToken) - { - this.mPushToken = mPushToken; - } - - public boolean ismIsNetConnected() - { - return mIsNetConnected; - } - - public void setmIsNetConnected(boolean mIsNetConnected) - { - this.mIsNetConnected = mIsNetConnected; - } - - public List getmRoomList() - { - return mRoomList; - } - - public void setmRoomList(List mRoomList) - { - this.mRoomList = mRoomList; - } - - -} diff --git a/app/src/main/java/org/dync/teameeting/bean/ReqSndMsgEntity.java b/app/src/main/java/org/dync/teameeting/bean/ReqSndMsgEntity.java new file mode 100644 index 0000000..15dcfb8 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/bean/ReqSndMsgEntity.java @@ -0,0 +1,194 @@ +package org.dync.teameeting.bean; + +/** + * Created by zhulang on 2016/1/9 0009. + */ +public class ReqSndMsgEntity { + + private int mtype; + private int messagetype; + private int signaltype; + private int cmd; + private int action; + private int tags; + private int type; + private int nmem; + private long ntime; + private int mseq; + private String from; + private String room; + private String to; + private String cont; + private String pass; + private String nname; + private String rname; + private int code; + + public void setMtype(int mtype) { + this.mtype = mtype; + } + + public void setMessagetype(int messagetype) { + this.messagetype = messagetype; + } + + public void setSignaltype(int signaltype) { + this.signaltype = signaltype; + } + + public void setCmd(int cmd) { + this.cmd = cmd; + } + + public void setAction(int action) { + this.action = action; + } + + public void setTags(int tags) { + this.tags = tags; + } + + public void setType(int type) { + this.type = type; + } + + public void setNmem(int nmem) { + this.nmem = nmem; + } + + public void setNtime(long ntime) { + this.ntime = ntime; + } + + public void setMseq(int mseq) { + this.mseq = mseq; + } + + public void setFrom(String from) { + this.from = from; + } + + public void setRoom(String room) { + this.room = room; + } + + public void setTo(String to) { + this.to = to; + } + + public void setCont(String cont) { + this.cont = cont; + } + + public void setPass(String pass) { + this.pass = pass; + } + + public void setNname(String nname) { + this.nname = nname; + } + + public void setRname(String rname) { + this.rname = rname; + } + + public void setCode(int code) { + this.code = code; + } + + public int getMtype() { + return mtype; + } + + public int getMessagetype() { + return messagetype; + } + + public int getSignaltype() { + return signaltype; + } + + public int getCmd() { + return cmd; + } + + public int getAction() { + return action; + } + + public int getTags() { + return tags; + } + + public int getType() { + return type; + } + + public int getNmem() { + return nmem; + } + + public long getNtime() { + return ntime; + } + + public int getMseq() { + return mseq; + } + + public String getFrom() { + return from; + } + + public String getRoom() { + return room; + } + + public String getTo() { + return to; + } + + public String getCont() { + return cont; + } + + public String getPass() { + return pass; + } + + public String getNname() { + return nname; + } + + public String getRname() { + return rname; + } + + public int getCode() { + return code; + } + + @Override + public String toString() { + return "ReqSndMsgEntity{" + + "mtype=" + mtype + + ", messagetype=" + messagetype + + ", signaltype=" + signaltype + + ", cmd=" + cmd + + ", action=" + action + + ", tags=" + tags + + ", type=" + type + + ", nmem=" + nmem + + ", ntime=" + ntime + + ", mseq=" + mseq + + ", from='" + from + '\'' + + ", room='" + room + '\'' + + ", to='" + to + '\'' + + ", cont='" + cont + '\'' + + ", pass='" + pass + '\'' + + ", nname='" + nname + '\'' + + ", rname='" + rname + '\'' + + ", code=" + code + + '}'; + } +} diff --git a/app/src/main/java/org/dync/teameeting/bean/RoomItem.java b/app/src/main/java/org/dync/teameeting/bean/RoomItem.java deleted file mode 100644 index b98ae4f..0000000 --- a/app/src/main/java/org/dync/teameeting/bean/RoomItem.java +++ /dev/null @@ -1,141 +0,0 @@ -package org.dync.teameeting.bean; - -import java.io.Serializable; - -public class RoomItem implements Serializable{ - /** - * - */ - private static final long serialVersionUID = 1L; - - private Long id; - - private int mMeetusable; - private int mPushable; - private int mMeetType; - private int mMeetType2; - private int mMemNumber; - private String mMeetingId; - private String mJoinTime; - private String mUserId; - private String mMeetName; - private String mMeetDesc; - private int mOwner; - - public RoomItem(Long id, int mMeetusable, int mPushable, int mMeetType, - int mMeetType2, int mMemNumber, String mMeetingId, String mJoinTime, - int mOwner, String mUserId, String mMeetName, String mMeetDesc - ) { - super(); - this.id = id; - this.mMeetusable = mMeetusable; - this.mPushable = mPushable; - this.mMeetType = mMeetType; - this.mMeetType2 = mMeetType2; - this.mMemNumber = mMemNumber; - this.mMeetingId = mMeetingId; - this.mJoinTime = mJoinTime; - this.mOwner = mOwner; - this.mUserId = mUserId; - this.mMeetName = mMeetName; - this.mMeetDesc = mMeetDesc; - - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getmMeetusable() { - return mMeetusable; - } - - public void setmMeetusable(int mMeetusable) { - this.mMeetusable = mMeetusable; - } - - public int getmPushable() { - return mPushable; - } - - public void setmPushable(int mPushable) { - this.mPushable = mPushable; - } - - public int getmMeetType() { - return mMeetType; - } - - public void setmMeetType(int mMeetType) { - this.mMeetType = mMeetType; - } - - public int getmMeetType2() { - return mMeetType2; - } - - public void setmMeetType2(int mMeetType2) { - this.mMeetType2 = mMeetType2; - } - - public int getmMemNumber() { - return mMemNumber; - } - - public void setmMemNumber(int mMemNumber) { - this.mMemNumber = mMemNumber; - } - - public String getmMeetingId() { - return mMeetingId; - } - - public void setmMeetingId(String mMeetingId) { - this.mMeetingId = mMeetingId; - } - - public String getmJoinTime() { - return mJoinTime; - } - - public void setmJoinTime(String mJoinTime) { - this.mJoinTime = mJoinTime; - } - - public int getmOwner() { - return mOwner; - } - - public void setmOwner(int mOwner) { - this.mOwner = mOwner; - } - - public String getmUserId() { - return mUserId; - } - - public void setmUserId(String mUserId) { - this.mUserId = mUserId; - } - - public String getmMeetName() { - return mMeetName; - } - - public void setmMeetName(String mMeetName) { - this.mMeetName = mMeetName; - } - - public String getmMeetDesc() { - return mMeetDesc; - } - - public void setmMeetDesc(String mMeetDesc) { - this.mMeetDesc = mMeetDesc; - } - -} diff --git a/app/src/main/java/org/dync/teameeting/bean/SelfData.java b/app/src/main/java/org/dync/teameeting/bean/SelfData.java index dca6bf5..c156ef7 100644 --- a/app/src/main/java/org/dync/teameeting/bean/SelfData.java +++ b/app/src/main/java/org/dync/teameeting/bean/SelfData.java @@ -1,89 +1,125 @@ package org.dync.teameeting.bean; +import java.util.ArrayList; +import java.util.List; + /** - * Created by 小白龙 on 2015/12/28 0028. + * Created by zhulang on 2015/12/28 0028. */ -public class SelfData -{ - - - /** - * authorization : 6d10ffe96955d5f5a9afdd9934c2d969f59705625dfb98d002807c43015d6b8d - * code : 200 - * information : {"uactype":2,"ulogindev":2,"uname":"12210836","upushtoken":"TeamMeeting","uregtime":1449470013699,"uregtype":0,"userid":"cc1f0115b54c46a1","ustatus":1} - * message : user init success - * requestid : 1451283887167 - */ +public class SelfData { private String authorization; private int code; - /** - * uactype : 2 - * ulogindev : 2 - * uname : 12210836 - * upushtoken : TeamMeeting - * uregtime : 1449470013699 - * uregtype : 0 - * userid : cc1f0115b54c46a1 - * ustatus : 1 - */ - private InformationEntity information; private String message; private long requestid; + private boolean mIsNetConnected; + + + + private List meetingLists = new ArrayList(); + private MeetingListEntity meetingListEntity; + + public MeetingListEntity getMeetingListEntity() { + if (meetingListEntity == null) { + throw new NullPointerException("My Slaf MeetingListEntity NullPointerException"); + } else { + return meetingListEntity; + } + } + + public void setMeetingListEntity(MeetingListEntity meetingListEntity) { + this.meetingListEntity = meetingListEntity; + } + + private List messageListEntityList = new ArrayList(); + + public List getMessageListEntityList() { + return messageListEntityList; + } + + public void setMessageListEntityList(List messageListEntityList) { + this.messageListEntityList = messageListEntityList; + } - public void setAuthorization(String authorization) - { + public List getMeetingLists() { + return meetingLists; + } + + public void setMeetingLists(List meetingLists) { + if (meetingLists != null) { + this.meetingLists.clear(); + this.meetingLists = meetingLists; + } + + } + public boolean ismIsNetConnected() { + return mIsNetConnected; + } + + public void setAuthorization(String authorization) { this.authorization = authorization; } - public void setCode(int code) - { + public void setCode(int code) { this.code = code; } - public void setInformation(InformationEntity information) - { + public void setInformation(InformationEntity information) { this.information = information; } - public void setMessage(String message) - { + public void setMessage(String message) { this.message = message; } - public void setRequestid(long requestid) - { + public void setRequestid(long requestid) { this.requestid = requestid; } - public String getAuthorization() - { + public String getAuthorization() { return authorization; } - public int getCode() - { + public int getCode() { return code; } - public InformationEntity getInformation() - { + public InformationEntity getInformation() { return information; } - public String getMessage() - { + public String getMessage() { return message; } - public long getRequestid() - { + public long getRequestid() { return requestid; } - public class InformationEntity - { + public void setmIsNetConnected(boolean mIsNetConnected) { + this.mIsNetConnected = mIsNetConnected; + } + + public void addMeetingHeardEntity() { + if (meetingListEntity != null) { + meetingListEntity.setJointime(System.currentTimeMillis()); + meetingLists.add(0, meetingListEntity); + } + } + + public int getMeetingIdPosition(String meetingId) { + + for (int i = 0; i < meetingLists.size(); i++) { + MeetingListEntity meetingListEntity = meetingLists.get(i); + if (meetingId.equals(meetingListEntity.getMeetingid())) { + return i; + } + } + return -1; + } + + public class InformationEntity { private int uactype; private int ulogindev; private String uname; @@ -93,89 +129,72 @@ public class InformationEntity private String userid; private int ustatus; - public void setUactype(int uactype) - { + public void setUactype(int uactype) { this.uactype = uactype; } - public void setUlogindev(int ulogindev) - { + public void setUlogindev(int ulogindev) { this.ulogindev = ulogindev; } - public void setUname(String uname) - { + public void setUname(String uname) { this.uname = uname; } - public void setUpushtoken(String upushtoken) - { + public void setUpushtoken(String upushtoken) { this.upushtoken = upushtoken; } - public void setUregtime(long uregtime) - { + public void setUregtime(long uregtime) { this.uregtime = uregtime; } - public void setUregtype(int uregtype) - { + public void setUregtype(int uregtype) { this.uregtype = uregtype; } - public void setUserid(String userid) - { + public void setUserid(String userid) { this.userid = userid; } - public void setUstatus(int ustatus) - { + public void setUstatus(int ustatus) { this.ustatus = ustatus; } - public int getUactype() - { + public int getUactype() { return uactype; } - public int getUlogindev() - { + public int getUlogindev() { return ulogindev; } - public String getUname() - { + public String getUname() { return uname; } - public String getUpushtoken() - { + public String getUpushtoken() { return upushtoken; } - public long getUregtime() - { + public long getUregtime() { return uregtime; } - public int getUregtype() - { + public int getUregtype() { return uregtype; } - public String getUserid() - { + public String getUserid() { return userid; } - public int getUstatus() - { + public int getUstatus() { return ustatus; } @Override - public String toString() - { + public String toString() { return "InformationEntity{" + "uactype=" + uactype + ", ulogindev=" + ulogindev + diff --git a/app/src/main/java/org/dync/teameeting/chatmessage/ChatMessageClient.java b/app/src/main/java/org/dync/teameeting/chatmessage/ChatMessageClient.java new file mode 100644 index 0000000..3418377 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/chatmessage/ChatMessageClient.java @@ -0,0 +1,243 @@ +package org.dync.teameeting.chatmessage; + +import android.content.Context; +import android.content.Intent; +import android.media.MediaPlayer; +import android.os.Message; +import android.util.Log; + +import com.google.gson.Gson; +import com.orhanobut.logger.Logger; + +import org.dync.teameeting.R; +import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.bean.MeetingListEntity; +import org.dync.teameeting.bean.ReqSndMsgEntity; +import org.dync.teameeting.db.CRUDChat; +import org.dync.teameeting.sdkmsgclient.jni.JMClientHelper; +import org.dync.teameeting.sdkmsgclient.jni.JMClientType; +import org.dync.teameeting.structs.EventType; +import org.dync.teameeting.structs.HttpApiTpye; +import org.dync.teameeting.ui.activity.NotifyActivity; +import org.dync.teameeting.ui.helper.ActivityTaskHelp; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import cn.jpush.android.api.JPushInterface; +import cn.jpush.android.data.JPushLocalNotification; +import de.greenrobot.event.EventBus; + + +public class ChatMessageClient implements JMClientHelper { + private Message mMessage; + private String TAG = this.getClass().getSimpleName(); + private boolean mDebug = TeamMeetingApp.mIsDebug; + private ArrayList mObServers = new ArrayList(); + private Context context; + ReqSndMsgEntity reqSndMsgEntity; + private MediaPlayer mediaPlayer; + + public ChatMessageClient(Context context) { + this.context = context; + } + + /** + * regiseter + * + * @param observer + */ + public synchronized void registerObserver(ChatMessageObserver observer) { + if ((observer != null) && !mObServers.contains(observer)) { + mObServers.add(observer); + } + } + + public synchronized void unregisterObserver(ChatMessageObserver observer) { + if ((observer != null) && mObServers.contains(observer)) { + mObServers.remove(observer); + } + } + + /** + * notify + * + * @param reqSndMsg + */ + public synchronized void notifyRequestMessage(ReqSndMsgEntity reqSndMsg) { + for (ChatMessageObserver observer : mObServers) { + Log.e(TAG, "notifyRequestMessage: " + 1); + observer.OnReqSndMsg(reqSndMsg); + } + } + + // + + /** + * implement for JMClientHelper + */ + + + public void OnSndMsg(String msg) { + if (mDebug) { + Logger.e(msg); + } + if (msg != null) { + senMag(msg); + } + } + + private void senMag(String msg) { + Gson gson = new Gson(); + reqSndMsgEntity = gson.fromJson(msg, ReqSndMsgEntity.class); + + if (mDebug) { + Log.e(TAG, reqSndMsgEntity.getFrom() + "-" + TeamMeetingApp.getTeamMeetingApp().getDevId()); + } + + if (reqSndMsgEntity.getTags() == JMClientType.MCSENDTAGS_TALK) { + CRUDChat.queryInsert(context, reqSndMsgEntity); + } + notifyRequestMessage(reqSndMsgEntity); + if(roomItemisNotifiation(reqSndMsgEntity.getRoom())){ + if (!ActivityTaskHelp.isPackageNameonResume(context, context.getPackageName())) { + sendPushNotifiaction(reqSndMsgEntity); + } else if (reqSndMsgEntity.getTags() == JMClientType.MCSENDTAGS_CALL) { + List activityList = TeamMeetingApp.getMeetingActivityList(); + if (activityList.size() > 0) { + String mMeetingId = activityList.get(0); + if (mMeetingId != null) { + if (!mMeetingId.equals(reqSndMsgEntity.getRoom())) { + sendNotify(); + } + } + } else { + sendNotify(); + } + + } + } + + } + + private void sendNotify() { + Intent intent = new Intent(context, NotifyActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); + intent.putExtra("roomMaster", reqSndMsgEntity.getNname()); + intent.putExtra("roomId", reqSndMsgEntity.getRoom()); + intent.putExtra("roomName", reqSndMsgEntity.getRname()); + context.startActivity(intent); + } + + + int i = 11111111; + + public void sendPushNotifiaction(ReqSndMsgEntity reqSndMsgEntity) { + + int tags = 0; + String title; + if (reqSndMsgEntity.getTags() == JMClientType.MCSENDTAGS_TALK) { + tags = 1; + title = reqSndMsgEntity.getRname() + " - " + reqSndMsgEntity.getNname() + ":" + reqSndMsgEntity.getCont(); + } else if (reqSndMsgEntity.getTags() == JMClientType.MCSENDTAGS_ENTER) { + tags = 2; + title = reqSndMsgEntity.getNname() + context.getString(R.string.notifi_str_enter_room); + title = title.replace("room name", reqSndMsgEntity.getRname()); + } else if (reqSndMsgEntity.getTags() == JMClientType.MCSENDTAGS_CALL) { + TeamMeetingApp.getTeamMeetingApp().startMediaPlayer(); + title = reqSndMsgEntity.getNname() + context.getString(R.string.notifi_str_notifation_room); + title = title.replace("room name", reqSndMsgEntity.getRname()); + } else { + return; + } + + + JPushLocalNotification ln = new JPushLocalNotification(); + ln.setBuilderId(0); + ln.setTitle("Teameeting"); + ln.setContent(title); + i++; + ln.setNotificationId(i); + + Map map = new HashMap(); + map.put("tags", tags); + map.put("roomid", reqSndMsgEntity.getRoom()); + + JSONObject json = new JSONObject(map); + ln.setExtras(json.toString()); + JPushInterface.addLocalNotification(context.getApplicationContext(), ln); + + } + + public boolean roomItemisNotifiation(String meetingID) { + List messageListEntityList = TeamMeetingApp.getmSelfData().getMeetingLists(); + if (messageListEntityList != null && messageListEntityList.size() > 0) { + for (MeetingListEntity meetingListEntity : messageListEntityList) { + if (meetingID.equals(meetingListEntity.getMeetingid()) && + meetingListEntity.getPushable() == HttpApiTpye.pushableYes) { + return true; + } + } + } + return false; + } + + private void callRingStart() { + + if (mediaPlayer != null) { + mediaPlayer.reset(); + } + mediaPlayer = MediaPlayer.create(context, R.raw.ring); + mediaPlayer.start(); + } + + + @Override + public void OnGetMsg(String msg) { + String s = "OnReqGetMsg msg:" + msg; + + if (mDebug) { + Log.e(TAG, "OnReqGetMsg: " + s); + } + } + + @Override + public void OnMsgServerConnected() { + mMessage = new Message(); + mMessage.what = EventType.MSG_MESSAGE_SERVER_CONNECTED.ordinal(); + EventBus.getDefault().post(mMessage); + + if (mDebug) { + Log.e(TAG, "OnMsgServerConnected: "); + } + } + + @Override + public void OnMsgServerDisconnect() { + if (mDebug) { + Log.e(TAG, "OnMsgServerDisconnect: "); + } + } + + @Override + public void OnMsgServerConnectionFailure() { + if (mDebug) { + Log.i(TAG, "OnMsgServerConnectionFailure: "); + } + } + + @Override + public void OnMsgServerState(int connStatus) { + if (mDebug) { + Log.i(TAG, "OnMsgServerState: " + connStatus); + } + } + + + public interface ChatMessageObserver { + void OnReqSndMsg(ReqSndMsgEntity reqSndMsg); + } +} diff --git a/app/src/main/java/org/dync/teameeting/chatmessage/IChatMessageInteface.java b/app/src/main/java/org/dync/teameeting/chatmessage/IChatMessageInteface.java new file mode 100644 index 0000000..0633cb2 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/chatmessage/IChatMessageInteface.java @@ -0,0 +1,10 @@ +package org.dync.teameeting.chatmessage; + +import org.dync.teameeting.bean.ReqSndMsgEntity; + +/** + * Created by zhulang on 2016/1/9 0009. + */ +public interface IChatMessageInteface { + void onRequesageMsg(ReqSndMsgEntity requestMsg); +} diff --git a/app/src/main/java/org/dync/teameeting/db/CRUDChat.java b/app/src/main/java/org/dync/teameeting/db/CRUDChat.java new file mode 100644 index 0000000..774d660 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/db/CRUDChat.java @@ -0,0 +1,144 @@ +package org.dync.teameeting.db; + +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.util.Log; + +import org.dync.teameeting.bean.ReqSndMsgEntity; +import org.dync.teameeting.db.chatdao.ChatCacheEntity; +import org.dync.teameeting.db.chatdao.ChatCacheEntityDao; +import org.dync.teameeting.db.chatdao.DaoMaster; +import org.dync.teameeting.db.chatdao.DaoSession; + +import java.util.ArrayList; +import java.util.List; + +import de.greenrobot.dao.query.DeleteQuery; +import de.greenrobot.dao.query.QueryBuilder; + +/** + * Created by zhulang on 2016/1/9 0009. + */ +public class CRUDChat { + + /******* + * select + */ + public static List selectChatList(Context context, String meetingId) { + + DaoSession session = getSession(context); + ChatCacheEntityDao chatEnity = session.getChatCacheEntityDao(); + List list = new ArrayList(); + list = chatEnity.queryBuilder().where(ChatCacheEntityDao.Properties.Meetingid.eq(meetingId)).list(); + closeDB(session); + return list; + + } + + public static long selectLoadListSize(Context context, String meetingId) { + DaoSession session = getSession(context); + ChatCacheEntityDao chatEnity = session.getChatCacheEntityDao(); + long count = chatEnity.queryBuilder().where(ChatCacheEntityDao.Properties.Meetingid.eq(meetingId)).count(); + + Log.i("CRUDChat", "count" + count); + closeDB(session); + return count; + } + + public static List setectAllList(Context context) { + DaoSession session = getSession(context); + ChatCacheEntityDao chatEnity = session.getChatCacheEntityDao(); + List list = chatEnity.loadAll(); + closeDB(session); + return list; + } + + + public static long selectIsReadSize(Context context, String meetingId) { + + DaoSession session = getSession(context); + ChatCacheEntityDao chatEnity = session.getChatCacheEntityDao(); + QueryBuilder where = chatEnity.queryBuilder().where(ChatCacheEntityDao.Properties.Meetingid.eq(meetingId)); + long isReadSize = (long) where.count(); + closeDB(session); + return isReadSize; + } + + public static ChatCacheEntity selectTopChatMessage(Context context, String meetingId) { + + DaoSession session = getSession(context); + String tablename = session.getChatCacheEntityDao().getTablename(); + + String sql = "select *from " + tablename + " where _id = (select max(_id) from " + + tablename + " where meetingid ='" + meetingId + "')"; + Cursor cursor = session.getDatabase().rawQuery(sql, null); + + if (cursor.moveToFirst() == true) { + String meeting = cursor.getString(cursor.getColumnIndex(ChatCacheEntity.MEETINGID)); + String sendtime = cursor.getString(cursor.getColumnIndex(ChatCacheEntity.SENDTIME)); + String userId = cursor.getString(cursor.getColumnIndex(ChatCacheEntity.USERID)); + String content = cursor.getString(cursor.getColumnIndex(ChatCacheEntity.CONTENT)); + boolean isRead = cursor.getInt(cursor.getColumnIndex(ChatCacheEntity.ISREAD)) == 0 ? false : true; + cursor.close(); + return new ChatCacheEntity(meetingId, userId, content, sendtime, isRead); + } + return null; + } + + + /******* + * Insert + */ + + public static void queryInsert(Context context, ReqSndMsgEntity resquest) { + DaoSession session = getSession(context); + ChatCacheEntityDao dao = session.getChatCacheEntityDao(); + if (resquest != null) { + dao.insert(chatCacheEntityFractoty(resquest)); + } + + } + + + /******* + * delete + */ + + public static void deleteByMeetingId(Context context, String meetingId) { + + DaoSession session = getSession(context); + ChatCacheEntityDao personDao = session.getChatCacheEntityDao(); + QueryBuilder qb = personDao.queryBuilder(); + DeleteQuery bd = qb.where(ChatCacheEntityDao.Properties.Meetingid.eq(meetingId)).buildDelete(); + bd.executeDeleteWithoutDetachingEntities(); + closeDB(session); + } + + + public static DaoSession getSession(Context context) { + SQLiteDatabase db = new DaoMaster.DevOpenHelper(context, + "CHAT.db", null).getWritableDatabase(); + DaoMaster dm = new DaoMaster(db); + + DaoSession sesion = dm.newSession(); + return sesion; + } + + private static ChatCacheEntity chatCacheEntityFractoty(ReqSndMsgEntity reqSndMsgEntity) { + ChatCacheEntity chatCacheEntity = new ChatCacheEntity( + reqSndMsgEntity.getRoom(), + reqSndMsgEntity.getFrom(), + reqSndMsgEntity.getCont(), + reqSndMsgEntity.getNtime() + "", + false + ); + return chatCacheEntity; + } + + private static void closeDB(DaoSession session) { + session.getDatabase().close(); + } + + +} diff --git a/app/src/main/java/org/dync/teameeting/db/chatdao/ChatCacheEntity.java b/app/src/main/java/org/dync/teameeting/db/chatdao/ChatCacheEntity.java new file mode 100644 index 0000000..02e7231 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/db/chatdao/ChatCacheEntity.java @@ -0,0 +1,114 @@ +package org.dync.teameeting.db.chatdao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit. + +import java.io.Serializable; + +/** + * Entity mapped to table CHAT_CACHE_ENTITY. + */ +public class ChatCacheEntity implements Serializable { + + private Long id; + private String meetingid; + private String userid; + private String content; + private String sendtime; + private Boolean isread; + + + public static String MEETINGID = "MEETINGID"; + public static String USERID = "USERID"; + public static String CONTENT = "CONTENT"; + public static String SENDTIME = "SENDTIME"; + public static String ISREAD = "ISREAD"; + + public ChatCacheEntity() { + } + + public ChatCacheEntity(Long id) { + this.id = id; + } + + public ChatCacheEntity(Long id, String meetingid, String userid, String content, String sendtime, Boolean isread) { + this.id = id; + this.meetingid = meetingid; + this.userid = userid; + this.content = content; + this.sendtime = sendtime; + this.isread = isread; + } + + public ChatCacheEntity(String meetingid, String userid, String content, String sendtime, Boolean isread) { + this.meetingid = meetingid; + this.userid = userid; + this.content = content; + this.sendtime = sendtime; + this.isread = isread; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getMeetingid() { + return meetingid; + } + + public void setMeetingid(String meetingid) { + this.meetingid = meetingid; + } + + public String getUserid() { + return userid; + } + + public void setUserid(String userid) { + this.userid = userid; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getSendtime() { + return sendtime; + } + + public long getSendtimeOrlong() { + return Long.parseLong(sendtime); + } + + public void setSendtime(String sendtime) { + this.sendtime = sendtime; + } + + public Boolean getIsread() { + return isread; + } + + public void setIsread(Boolean isread) { + this.isread = isread; + } + + @Override + public String toString() { + return "ChatCacheEntity{" + + "meetingid='" + meetingid + '\'' + + ", userid='" + userid + '\'' + + ", content='" + content + '\'' + + ", sendtime='" + sendtime + '\'' + + ", isread=" + isread + + '}'; + } + + +} diff --git a/app/src/main/java/org/dync/teameeting/db/chatdao/ChatCacheEntityDao.java b/app/src/main/java/org/dync/teameeting/db/chatdao/ChatCacheEntityDao.java new file mode 100644 index 0000000..5803313 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/db/chatdao/ChatCacheEntityDao.java @@ -0,0 +1,171 @@ +package org.dync.teameeting.db.chatdao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteStatement; + +import de.greenrobot.dao.AbstractDao; +import de.greenrobot.dao.Property; +import de.greenrobot.dao.internal.DaoConfig; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * DAO for table CHAT_CACHE_ENTITY. + */ +public class ChatCacheEntityDao extends AbstractDao { + + public static final String TABLENAME = "CHAT_CACHE_ENTITY"; + + /** + * Properties of entity ChatCacheEntity.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property Meetingid = new Property(1, String.class, "meetingid", false, "MEETINGID"); + public final static Property Userid = new Property(2, String.class, "userid", false, "USERID"); + public final static Property Content = new Property(3, String.class, "content", false, "CONTENT"); + public final static Property Sendtime = new Property(4, String.class, "sendtime", false, "SENDTIME"); + public final static Property Isread = new Property(5, Boolean.class, "isread", false, "ISREAD"); + } + + ; + + + public ChatCacheEntityDao(DaoConfig config) { + super(config); + } + + public ChatCacheEntityDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** + * Creates the underlying database table. + */ + public static void createTable(SQLiteDatabase db, boolean ifNotExists) { + String constraint = ifNotExists ? "IF NOT EXISTS " : ""; + db.execSQL("CREATE TABLE " + constraint + "'CHAT_CACHE_ENTITY' (" + // + "'_id' INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "'MEETINGID' TEXT," + // 1: meetingid + "'USERID' TEXT," + // 2: userid + "'CONTENT' TEXT," + // 3: content + "'SENDTIME' TEXT," + // 4: sendtime + "'ISREAD' INTEGER);"); // 5: isread + } + + /** + * Drops the underlying database table. + */ + public static void dropTable(SQLiteDatabase db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "'CHAT_CACHE_ENTITY'"; + db.execSQL(sql); + } + + /** + * @inheritdoc + */ + @Override + protected void bindValues(SQLiteStatement stmt, ChatCacheEntity entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String meetingid = entity.getMeetingid(); + if (meetingid != null) { + stmt.bindString(2, meetingid); + } + + String userid = entity.getUserid(); + if (userid != null) { + stmt.bindString(3, userid); + } + + String content = entity.getContent(); + if (content != null) { + stmt.bindString(4, content); + } + + String sendtime = entity.getSendtime(); + if (sendtime != null) { + stmt.bindString(5, sendtime); + } + + Boolean isread = entity.getIsread(); + if (isread != null) { + stmt.bindLong(6, isread ? 1l : 0l); + } + } + + /** + * @inheritdoc + */ + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + /** + * @inheritdoc + */ + @Override + public ChatCacheEntity readEntity(Cursor cursor, int offset) { + ChatCacheEntity entity = new ChatCacheEntity( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // meetingid + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // userid + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // content + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // sendtime + cursor.isNull(offset + 5) ? null : cursor.getShort(offset + 5) != 0 // isread + ); + return entity; + } + + /** + * @inheritdoc + */ + @Override + public void readEntity(Cursor cursor, ChatCacheEntity entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setMeetingid(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setUserid(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setContent(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setSendtime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setIsread(cursor.isNull(offset + 5) ? null : cursor.getShort(offset + 5) != 0); + } + + /** + * @inheritdoc + */ + @Override + protected Long updateKeyAfterInsert(ChatCacheEntity entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + /** + * @inheritdoc + */ + @Override + public Long getKey(ChatCacheEntity entity) { + if (entity != null) { + return entity.getId(); + } else { + return null; + } + } + + /** + * @inheritdoc + */ + @Override + protected boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/org/dync/teameeting/db/chatdao/DaoMaster.java b/app/src/main/java/org/dync/teameeting/db/chatdao/DaoMaster.java new file mode 100644 index 0000000..bb49727 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/db/chatdao/DaoMaster.java @@ -0,0 +1,69 @@ +package org.dync.teameeting.db.chatdao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; +import de.greenrobot.dao.AbstractDaoMaster; +import de.greenrobot.dao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 3): knows all DAOs. +*/ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 3; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(SQLiteDatabase db, boolean ifNotExists) { + ChatCacheEntityDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(SQLiteDatabase db, boolean ifExists) { + ChatCacheEntityDao.dropTable(db, ifExists); + } + + public static abstract class OpenHelper extends SQLiteOpenHelper { + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + + public DaoMaster(SQLiteDatabase db) { + super(db, SCHEMA_VERSION); + registerDaoClass(ChatCacheEntityDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + +} diff --git a/app/src/main/java/org/dync/teameeting/db/chatdao/DaoSession.java b/app/src/main/java/org/dync/teameeting/db/chatdao/DaoSession.java new file mode 100644 index 0000000..9cc4eea --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/db/chatdao/DaoSession.java @@ -0,0 +1,45 @@ +package org.dync.teameeting.db.chatdao; + +import android.database.sqlite.SQLiteDatabase; + +import java.util.Map; + +import de.greenrobot.dao.AbstractDao; +import de.greenrobot.dao.AbstractDaoSession; +import de.greenrobot.dao.identityscope.IdentityScopeType; +import de.greenrobot.dao.internal.DaoConfig; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig chatCacheEntityDaoConfig; + + private final ChatCacheEntityDao chatCacheEntityDao; + + public DaoSession(SQLiteDatabase db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + chatCacheEntityDaoConfig = daoConfigMap.get(ChatCacheEntityDao.class).clone(); + chatCacheEntityDaoConfig.initIdentityScope(type); + + chatCacheEntityDao = new ChatCacheEntityDao(chatCacheEntityDaoConfig, this); + + registerDao(ChatCacheEntity.class, chatCacheEntityDao); + } + + public void clear() { + chatCacheEntityDaoConfig.getIdentityScope().clear(); + } + + public ChatCacheEntityDao getChatCacheEntityDao() { + return chatCacheEntityDao; + } + +} diff --git a/app/src/main/java/org/dync/teameeting/http/HttpContent.java b/app/src/main/java/org/dync/teameeting/http/HttpContent.java index 0340a07..ede46e3 100644 --- a/app/src/main/java/org/dync/teameeting/http/HttpContent.java +++ b/app/src/main/java/org/dync/teameeting/http/HttpContent.java @@ -1,53 +1,40 @@ package org.dync.teameeting.http; -import android.util.Log; - import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; -import com.loopj.android.http.TextHttpResponseHandler; - -import org.apache.http.Header; - -import javax.security.auth.login.LoginException; /** - * Created by 小白龙 on 2015/12/25 0025. + * Created by Zlang on 2015/12/25 00:25. + *

+ * net Content */ -public class HttpContent -{ - // private static final String BASE_URL = "http://api.twitter.com/1/"; - public static final String NODE_URL = "http://192.168.7.45:8055/";// 内网 - - public static final String RETURN_TYPE_JSON = "application/json"; // 返回json - public static final String RETURN_TYPE_XML = "application/xml"; // 返回xml\ - +public class HttpContent { + public static final String NODE_URL = "http://restful.teameeting.cn:8055/"; + //public static final String NODE_URL = "http://192.168.7.49:8055/";//123.59.68.21:8055 + public static final String SERVICE_URL = "message.anyrtc.io"; + // public static final String SERVICE_URL = "192.168.7.43"; + public static final Integer MSG_SERVICE_POINT = 6630; private static AsyncHttpClient client = new AsyncHttpClient(); - static - { + static { client.addHeader("Accept", "application/json"); } - public static void get(String url,AsyncHttpResponseHandler responseHandler) - { + public static void get(String url, AsyncHttpResponseHandler responseHandler) { url = getAbsoluteUrl(url); - Log.e("xbl", "get: url"+url ); client.get(url, responseHandler); } - public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) - { + + public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) { client.get(getAbsoluteUrl(url), responseHandler); } - public static void post(String url, RequestParams params,AsyncHttpResponseHandler responseHandler) - { + public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) { client.post(getAbsoluteUrl(url), params, responseHandler); } - private static String getAbsoluteUrl(String relativeUrl) - { - //return relativeUrl; + private static String getAbsoluteUrl(String relativeUrl) { return NODE_URL + relativeUrl; } } diff --git a/app/src/main/java/org/dync/teameeting/http/NetWork.java b/app/src/main/java/org/dync/teameeting/http/NetWork.java index d4100bd..04b0a22 100644 --- a/app/src/main/java/org/dync/teameeting/http/NetWork.java +++ b/app/src/main/java/org/dync/teameeting/http/NetWork.java @@ -1,134 +1,32 @@ package org.dync.teameeting.http; -import android.content.Context; -import android.os.Bundle; -import android.os.Message; import android.util.Log; -import android.webkit.WebView; import com.loopj.android.http.RequestParams; -import com.loopj.android.http.TextHttpResponseHandler; -import com.ypy.eventbus.EventBus; +import com.orhanobut.logger.Logger; import org.apache.http.Header; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; -import org.apache.http.util.EntityUtils; -import org.dync.teameeting.bean.MySelf; import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.bean.MeetingList; +import org.dync.teameeting.bean.MeetingListEntity; +import org.dync.teameeting.bean.MessageList; +import org.dync.teameeting.bean.MessageListEntity; import org.dync.teameeting.bean.SelfData; import org.dync.teameeting.structs.EventType; +import org.dync.teameeting.structs.JoinActType; import org.json.JSONException; import org.json.JSONObject; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -public class NetWork -{ +import de.greenrobot.event.EventBus; +public class NetWork { private static final String TAG = "NetWork"; - private static final boolean mDebug = TeamMeetingApp.mIsDebug; - public static final String MEETING_LIST = "meetingList"; - - // public static final String VIDEO_URL = "123.59.68.21";//公网 - // public static final String VIDEO_URL = "192.168.7.45";//内网 - - // public static final String NODE_URL = - // "http://123.59.68.21:7080/1.0/";//公网 - public static final String NODE_URL = "http://192.168.7.45:8055/";// 内网 - - public static final String RETURN_TYPE_JSON = "application/json"; // 返回json - public static final String RETURN_TYPE_XML = "application/xml"; // 返回xml - - /** - * Http - */ - private DefaultHttpClient mHttpClient; - private MySelf mMySelf; - - private SelfData mSelfData; - - /* - * request - * =========================Service======================================== - */ - - /** - * @param params - * @return - */ - private List getNameValuePairList(Map params) - { - List listParams = new ArrayList(); - Iterator> iterator = params.entrySet().iterator(); - while (iterator.hasNext()) - { - Map.Entry enter = iterator.next(); - listParams.add(new BasicNameValuePair(enter.getKey(), enter - .getValue())); - } - return listParams; - } - - /** - * get Response String - * - * @param params - * @param url - * @return String - */ - private String getResponseStr(Map params, String url) - { - String enityStr = null; - HttpPost httpPost = new HttpPost(NODE_URL + url); - httpPost.addHeader("Accept", RETURN_TYPE_JSON); - Message msg = new Message(); - List listParams = getNameValuePairList(params); - try - { - HttpEntity requestHttpEntity = new UrlEncodedFormEntity(listParams); - httpPost.setEntity(requestHttpEntity); - HttpResponse httpResponse = mHttpClient.execute(httpPost); - - int responseCode = httpResponse.getStatusLine().getStatusCode(); - if (mDebug) - Log.e(TAG, "responseCode" + responseCode); - if (responseCode == 200) - { - enityStr = EntityUtils.toString(httpResponse.getEntity()); - return enityStr; - } - - } catch (UnsupportedEncodingException e) - { - e.printStackTrace(); - } catch (ClientProtocolException e) - { - e.printStackTrace(); - } catch (IOException e) - { - e.printStackTrace(); - } - msg.what = EventType.MSG_RESPONS_ESTR_NULl.ordinal(); - EventBus.getDefault().post(msg); - return null; - } /** * init + * * @param userid * @param uactype * @param uregtype @@ -138,8 +36,7 @@ private String getResponseStr(Map params, String url) public void init(final String userid, final String uactype, final String uregtype, final String ulogindev, - final String upushtoken) - { + final String upushtoken) { String url = "users/init"; RequestParams params = new RequestParams(); params.put("userid", userid); @@ -147,103 +44,57 @@ public void init(final String userid, final String uactype, params.put("uregtype", uregtype); params.put("ulogindev", ulogindev); params.put("upushtoken", upushtoken); - - final Bundle bundle = new Bundle(); - final Message msg = new Message(); - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { + HttpContent.post(url, params, new TmTextHttpResponseHandler() { @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { - if (code == 200) - { + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { + if (mDebug) + Logger.e(responseString); + + if (code == 200) { SelfData selfData = gson.fromJson(responseString, SelfData.class); TeamMeetingApp.setSelfData(selfData); msg.what = EventType.MSG_ININT_SUCCESS.ordinal(); - if (mDebug) - { + if (mDebug) { Log.i(TAG, "getInformation" + selfData.getInformation().toString()); } - } else - { + } else { msg.what = EventType.MSG_ININT_FAILED.ordinal(); } - - bundle.putString(MEETING_LIST, message); msg.setData(bundle); EventBus.getDefault().post(msg); - } - }); - } - - public void getRoomLists(final String sign, final String pageNum, - final String pageSize) - { - String url = "meeting/getRoomList"; - RequestParams params = new RequestParams(); - params.put("sign", sign); - params.put("pageNum", pageNum); - params.put("pageSize", pageSize); - - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { - @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { - if (mDebug) - Log.i(TAG, "getList" + responseString); - if (statusCode == 200) - { - bundle.putString("meetingList", responseString); - msg.what = EventType.MSG_GET_ROOM_LIST_SUCCESS - .ordinal(); - } else - { - msg.what = EventType.MSG_GET_ROOM_LIST_FAILED - .ordinal(); - } - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); } }); - } - /** - * 更新网络参数 + * getRoomLists * - * @param userid - * @param upushtoken + * @param sign + * @param pageNum + * @param pageSize */ - public void updatePushtoken(final String sign, final String upushtoken) - { - String url = "users/updatePushtoken"; + public void getRoomLists(final String sign, final String pageNum, final String pageSize) { + String url = "meeting/getRoomList"; RequestParams params = new RequestParams(); params.put("sign", sign); - params.put("upushtoken", upushtoken); + params.put("pageNum", pageNum); + params.put("pageSize", pageSize); - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { + HttpContent.post(url, params, new TmTextHttpResponseHandler() { @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { - super.onSuccess(statusCode, code, message, responseString, headers); - - if (mDebug) - { - Log.e(TAG, "onSuccess:updatePushtoken " + responseString); + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { + if (mDebug) { + Logger.e(responseString); } - if (code == 200) - { - msg.what = EventType.MSG_UPDAT_EPUSH_TOKEN_SUCCESS - .ordinal(); - } else - { - msg.what = EventType.MSG_UPDAT_EPUSH_TOKEN_FAILED - .ordinal(); + if (statusCode == 200) { + msg.what = EventType.MSG_GET_ROOM_LIST_SUCCESS.ordinal(); + MeetingList meetingList = gson.fromJson(responseString, MeetingList.class); + if (meetingList != null) { + TeamMeetingApp.getmSelfData().setMeetingLists(meetingList.getMeetingList()); + } + } else { + msg.what = EventType.MSG_GET_ROOM_LIST_FAILED.ordinal(); } bundle.putString("message", message); msg.setData(bundle); @@ -251,56 +102,71 @@ public void onSuccess(int statusCode, int code, String message, String responseS } }); - } + /** * signOut * * @param sign */ - public void signOut(final String sign) - { + public void signOut(final String sign) { String url = "users/signout"; RequestParams params = new RequestParams(); params.put("sign", sign); - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { + HttpContent.post(url, params, new TmTextHttpResponseHandler() { @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { if (mDebug) Log.e(TAG, "onSuccess: signOut" + responseString); - if (code == 200) - { + if (code == 200) { msg.what = EventType.MSG_SIGNOUT_SUCCESS.ordinal(); - } else - { + } else { msg.what = EventType.MSG_SIGNOUT_FAILED.ordinal(); } bundle.putString("message", message); msg.setData(bundle); EventBus.getDefault().post(msg); + } }); } + /** + * applyRoom + * + * @param sign + * @param meetingname + * @param meetingtype + * @param meetdesc + * @param meetenable + * @param pushable + * @return + */ + public MeetingListEntity applyRoom(final String sign, final String meetingname, + final String meetingtype, final String meetdesc, final String meetenable, + final String pushable) { + applyRoom(sign, meetingname, meetingtype, meetdesc, meetenable, pushable, 1, 0); + + return null; + } /** * applyRoom * * @param sign * @param meetingname - * @param meettype + * @param meetingtype * @param meetdesc - * @param meetingid + * @param meetenable + * @param pushable */ - public void applyRoom(final String sign, final String meetingname, - final String meetingtype, final String meetdesc, final String meetenable, - final String pushable) - { + + public MeetingListEntity applyRoom(final String sign, final String meetingname, + final String meetingtype, final String meetdesc, final String meetenable, + final String pushable, final int netCachCreate, final int position) { String url = "meeting/applyRoom"; RequestParams params = new RequestParams(); params.put("sign", sign); @@ -310,49 +176,44 @@ public void applyRoom(final String sign, final String meetingname, params.put("meetenable", meetenable); params.put("pushable", pushable); + HttpContent.post(url, params, new TmTextHttpResponseHandler() { + - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { if (mDebug) Log.e(TAG, "onSuccess: applyRoom" + responseString); - - - - if (code == 200) - { - //Bundle bundle = new Bundle(); - + if (code == 200) { try { JSONObject json = new JSONObject(responseString); - String meetingInfo = json.getString("meetingInfo"); - JSONObject jsonMeetingInfo = new JSONObject(meetingInfo); - String meetingId = jsonMeetingInfo.getString("meetingid"); - bundle.putString("meetingId",meetingId); - if(mDebug){ - Log.e(TAG,"meetingId "+meetingId); + String meetingInfo = json.getString("meetingInfo"); + MeetingListEntity meeting = gson.fromJson(meetingInfo, MeetingListEntity.class); + + meeting.setCreatetime(meeting.getJointime()); + meeting.setOwner(1); + meeting.setMemnumber(0); + meeting.setUserid(TeamMeetingApp.getTeamMeetingApp().getDevId()); + List meetingLists = TeamMeetingApp.getmSelfData().getMeetingLists(); + if (meetingLists.size() >= 20) { + meetingLists.remove(19); } - + meetingLists.remove(position); + meetingLists.add(0, meeting); } catch (JSONException e) { e.printStackTrace(); } + msg.what = EventType.MSG_APPLY_ROOM_SUCCESS.ordinal(); + } else { + msg.what = EventType.MSG_APPLY_ROOMT_FAILED.ordinal(); + } + if (netCachCreate == 1) { + bundle.putString("message", message); msg.setData(bundle); - msg.what = EventType.MSG_APPLY_ROOM_SUCCESS - .ordinal(); - } else - { - msg.what = EventType.MSG_APPLY_ROOMT_FAILED - .ordinal(); + EventBus.getDefault().post(msg); } - - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); } }); - + return null; } /** @@ -362,113 +223,26 @@ public void onSuccess(int statusCode, int code, String message, String responseS * @param meetingid */ - public void deleteRoom(final String sign, final String meetingid) - { + public void deleteRoom(final String sign, final String meetingid) { String url = "meeting/deleteRoom"; RequestParams params = new RequestParams(); params.put("sign", sign); params.put("meetingid", meetingid); - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { + HttpContent.post(url, params, new TmTextHttpResponseHandler() { @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { if (mDebug) Log.e(TAG, "onSuccess: deleteRoom" + responseString); - if (code == 200) - { + if (code == 200) { msg.what = EventType.MSG_DELETE_ROOM_SUCCESS .ordinal(); - } else - { + } else { msg.what = EventType.MSG_DELETE_ROOM_FAILED .ordinal(); } - - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); - } - }); - - - } - - /** - * updateRoomMinuxMemNumber - * - * @param sign - * @param meetingid - */ - public void updateRoomMinuxMemNumber(final String sign, - final String meetingid) - { - String url = "meeting/updateRoomMinuxMemNumber"; - - RequestParams params = new RequestParams(); - params.put("sign", sign); - params.put("meetingid", meetingid); - - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { - @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { - super.onSuccess(statusCode, code, message, responseString, headers); - if (mDebug) - Log.e(TAG, "onSuccess: updateRoomMinuxMemNumber" + responseString); - if (code == 200) - { - msg.what = EventType.MSG_UPDATE_ROOM_Minux_MEM_NUMBER_SUCCESS - .ordinal(); - } else - { - msg.what = EventType.MSG_UPDATE_ROOM_Minux_MEM_NUMBER_FAILED - .ordinal(); - } - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); - } - }); - - - } - - - /** - * updateRoomAddMemNumber - * - * @param sign - * @param meetingid - */ - public void updateRoomAddMemNumber(final String sign, final String meetingid) - { - String url = "meeting/updateRoomAddMemNumber"; - RequestParams params = new RequestParams(); - params.put("sign", sign); - params.put("meetingid", meetingid); - - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { - @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { - super.onSuccess(statusCode, code, message, responseString, headers); - if (mDebug) - Log.e(TAG, "onSuccess: updateRoomAddMemNumber" + responseString); - if (code == 200) - { - msg.what = EventType.MSG_UPDATE_ROOM_ADD_MEM_NUMBER_SUCCESS - .ordinal(); - } else - { - msg.what = EventType.MSG_UPDATE_ROOM_ADD_MEM_NUMBER_FAILED - .ordinal(); - } - + bundle.putString("meetingid", meetingid); bundle.putString("message", message); msg.setData(bundle); EventBus.getDefault().post(msg); @@ -484,28 +258,28 @@ public void onSuccess(int statusCode, int code, String message, String responseS * @param meetingid * @param pushable */ - public void updateRoomPushable(final String sign, final String meetingid, - final String pushable) - { + public void updateRoomPushable(final String sign, final String meetingid, final int pushable, final int position) { String url = "meeting/updateRoomPushable"; RequestParams params = new RequestParams(); params.put("sign", sign); params.put("meetingid", meetingid); params.put("pushable", pushable); - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { + HttpContent.post(url, params, new TmTextHttpResponseHandler() { + @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { super.onSuccess(statusCode, code, message, responseString, headers); if (mDebug) - Log.e(TAG, "onSuccess: updateRoomPushable" + responseString); - if (code == 200) - { + Log.e(TAG, "onSuccess: updateRoomPushable123" + responseString); + if (code == 200) { + + List meetingLists = TeamMeetingApp.getmSelfData().getMeetingLists(); + + meetingLists.get(position).setPushable(pushable); + msg.what = EventType.MSG_UPDATE_ROOM_PUSHABLE_SUCCESS.ordinal(); - } else - { + } else { msg.what = EventType.MSG_UPDATE_ROOM_PUSHABLE_FAILED.ordinal(); } bundle.putString("message", message); @@ -522,28 +296,23 @@ public void onSuccess(int statusCode, int code, String message, String responseS * @param meetingid * @param enable */ - public void updateRoomEnable(final String sign, final String meetingid, - final String enable) - { + public void updateRoomEnable(final String sign, final String meetingid, final int enable, final int position) { String url = "meeting/updateRoomEnable"; RequestParams params = new RequestParams(); params.put("sign", sign); params.put("meetingid", meetingid); params.put("enable", enable); - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { + HttpContent.post(url, params, new TmTextHttpResponseHandler() { @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { super.onSuccess(statusCode, code, message, responseString, headers); if (mDebug) Log.e(TAG, "onSuccess: updateRoomEnable" + responseString); - if (code == 200) - { + if (code == 200) { + TeamMeetingApp.getmSelfData().getMeetingLists().get(position).setMeetenable(enable); msg.what = EventType.MSG_UPDATE_ROOM_ENABLE_SUCCESS.ordinal(); - } else - { + } else { msg.what = EventType.MSG_UPDATE_ROOM_ENABLE_FAILED.ordinal(); } bundle.putString("message", message); @@ -551,108 +320,39 @@ public void onSuccess(int statusCode, int code, String message, String responseS EventBus.getDefault().post(msg); } }); - - } - /** - * updateRoomMemNumber 07 - * - * @param sign - * @param meetingid - * @param enable - */ - public void updateRoomMemNumber(final String sign, final String meetingid, - final String meetingMemNumber) - { - new Thread() - { - @Override - public synchronized void run() - { - // TODO Auto-generated method stub - super.run(); - - Map params = new HashMap(); - params.put("sign", sign); - params.put("meetingid", meetingid); - params.put("meetingMemNumber", meetingMemNumber); - - try - { - String ss = getResponseStr(params, - "meeting/updateRoomMemNumber"); - if (mDebug) - Log.e(TAG, "ss " + ss); - if (ss != null) - { - JSONObject jsonObject = new JSONObject(ss); - Bundle bundle = new Bundle(); - Message msg = new Message(); - int code = jsonObject.getInt("code"); - String message = jsonObject.getString("message"); - if (code == 200) - { - msg.what = EventType.MSG_UPDATE_ROOM_ENABLE_SUCCESS - .ordinal(); - } else - { - msg.what = EventType.MSG_UPDATE_ROOM_ENABLE_FAILED - .ordinal(); - } - - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); - } - - } catch (JSONException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }.start(); - - } - - /** * updateMeetRoomName * - * @param sign + * @param sign * @param meetingid * @param roomName */ public void updateMeetRoomName(final String sign, final String meetingid, - final String roomName) - { + final String roomName) { String url = "meeting/updateMeetRoomName"; RequestParams params = new RequestParams(); params.put("sign", sign); params.put("meetingid", meetingid); params.put("meetingname", roomName); - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { + HttpContent.post(url, params, new TmTextHttpResponseHandler() { @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { super.onSuccess(statusCode, code, message, responseString, headers); if (mDebug) - if (code == 200) - { - msg.what = EventType.MSG_UPDATE_MEET_ROOM_NAME_SUCCESS - .ordinal(); - } else - { - msg.what = EventType.MSG_UPDATE_MEET_ROOM_NAME_FAILED - .ordinal(); + if (code == 200) { + msg.what = EventType.MSG_UPDATE_MEET_ROOM_NAME_SUCCESS.ordinal(); + } else { + msg.what = EventType.MSG_UPDATE_MEET_ROOM_NAME_FAILED.ordinal(); } bundle.putString("message", message); msg.setData(bundle); + EventBus.getDefault().post(msg); + } }); @@ -669,515 +369,176 @@ public void onSuccess(int statusCode, int code, String message, String responseS */ public void getMeetingMsgList(final String sign, final String meetingid, - final String pageNum, final String pageSize) - { - new Thread() - { - @Override - public synchronized void run() - { - - Map params = new HashMap(); - params.put("sign", sign); - params.put("meetingid", meetingid); - params.put("pageNum", pageNum); - params.put("pageSize", pageSize); - try - { - - String ss = getResponseStr(params, - "meeting/getMeetingMsgList"); - - if (mDebug) - Log.e(TAG, "ss " + ss); - if (ss != null) - { - JSONObject jsonObject = new JSONObject(ss); - Bundle bundle = new Bundle(); - Message msg = new Message(); - int code = jsonObject.getInt("code"); - String message = jsonObject.getString("message"); - if (code == 200) - { - - msg.what = EventType.MSG_GET_MEETING_MSG_LIST_SUCCESS - .ordinal(); - - } else - { - - msg.what = EventType.MSG_GET_MEETING_MSG_LIST_FAILED - .ordinal(); - } - - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); - } - - } catch (JSONException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }.start(); + final String pageNum, final String pageSize) { - } + String url = "meeting/getMeetingMsgList"; + RequestParams params = new RequestParams(); + params.put("sign", sign); + params.put("meetingid", meetingid); + params.put("pageNum", pageNum); + params.put("pageSize", pageSize); - /** - * insertMeetingMsg 11 - * - * @param meetingid - * @param messageid - * @param messagetype - * @param sessionid - * @param strMsg - * @param userid - */ - public void insertMeetingMsg(final String meetingid, - final String messageid, final String messagetype, - final String sessionid, final String strMsg, final String userid) - { - new Thread() - { + HttpContent.post(url, params, new TmTextHttpResponseHandler() { @Override - public synchronized void run() - { - - Map params = new HashMap(); - params.put("meetingid", meetingid); - params.put("messageid", messageid); - params.put("messagetype", messagetype); - params.put("sessionid", sessionid); - params.put("strMsg", strMsg); - params.put("userid", userid); - - try - { - - String ss = getResponseStr(params, - "meeting/insertMeetingMsg"); + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { + super.onSuccess(statusCode, code, message, responseString, headers); + if (mDebug) + Log.e(TAG, "onSuccess: getMeetingMsgList" + responseString); + if (mDebug) + if (code == 200) { - if (mDebug) - Log.e(TAG, "ss " + ss); - if (ss != null) - { - JSONObject jsonObject = new JSONObject(ss); - Bundle bundle = new Bundle(); - Message msg = new Message(); - int code = jsonObject.getInt("code"); - String message = jsonObject.getString("message"); - if (code == 200) - { - msg.what = EventType.MSG_INSERT_MEETING_MSG_SUCCESS - .ordinal(); - - } else - { - msg.what = EventType.MSG_INSERT_MEETING_MSG_FAILED - .ordinal(); - } + MessageList messageList = gson.fromJson(responseString, MessageList.class); + List messageListEntity = messageList.getMessageList(); + TeamMeetingApp.getmSelfData().setMessageListEntityList(messageListEntity); - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); + msg.what = EventType.MSG_GET_MEETING_MSG_LIST_SUCCESS.ordinal(); + } else { + msg.what = EventType.MSG_GET_MEETING_MSG_LIST_FAILED.ordinal(); } - } catch (JSONException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } + bundle.putString("message", message); + msg.setData(bundle); + EventBus.getDefault().post(msg); + } - }.start(); + }); + } + public void getMeetingInfo(final String meetingid, final String joinType) { + getMeetingInfo(meetingid, -1, joinType); } /** - * insertSessionMeetingInfo 12 + * TODO Obtain information on the conference room A single 16 submit response Settings 16 * * @param meetingid - * @param sessionid - * @param sessionstatus - * @param sessiontype - * @param sessionnumber */ - - public void insertSessionMeetingInfo(final String meetingid, - final String sessionid, final String sessionstatus, - final String sessiontype, final String sessionnumber) - { - new Thread() - { + public void getMeetingInfo(final String meetingid, final int position, final String joinType) { + String url = "meeting/getMeetingInfo/" + meetingid; + HttpContent.get(url, new TmTextHttpResponseHandler() { @Override - public synchronized void run() - { - Map params = new HashMap(); - params.put("meetingid", meetingid); - params.put("sessionid", sessionid); - params.put("sessionstatus", sessionstatus); - params.put("sessiontype", sessiontype); - params.put("sessionnumber", sessionnumber); - - try - { - - String ss = getResponseStr(params, - "meeting/insertSessionMeetingInfo"); + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { + super.onSuccess(statusCode, code, message, responseString, headers); + if (code == 200) { if (mDebug) - Log.e(TAG, "ss " + ss); - if (ss != null) - { - JSONObject jsonObject = new JSONObject(ss); - Bundle bundle = new Bundle(); - Message msg = new Message(); - int code = jsonObject.getInt("code"); - String message = jsonObject.getString("message"); - if (code == 200) - { - - msg.what = EventType.MSG_INSERT_SESSION_MEETING_INFO_SUCCESS - .ordinal(); - - } else - { - - msg.what = EventType.MSG_INSERT_SESSION_MEETING_INFO_FAILED - .ordinal(); - } - - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); - } - - } catch (JSONException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }.start(); - - } - - /** - * updateSessionMeetingStatus 13 - * - * @param sessionid - * @param sessionstatus - */ - - public void updateSessionMeetingStatus(final String sessionid, - final String sessionstatus) - { - new Thread() - { - @Override - public synchronized void run() - { + Log.e(TAG, "onSuccess: getMeetingInfo" + responseString); + try { + JSONObject json = new JSONObject(responseString); + String info = json.getString("meetingInfo"); - Map params = new HashMap(); - params.put("sessionid", sessionid); - params.put("sessionstatus", sessionstatus); - try - { - String ss = getResponseStr(params, - "meeting/updateSessionMeetingStatus"); + MeetingListEntity meetingInfo = gson.fromJson(info, MeetingListEntity.class); + TeamMeetingApp.getmSelfData().setMeetingListEntity(meetingInfo); - if (mDebug) - Log.e(TAG, "ss " + ss); - if (ss != null) - { - JSONObject jsonObject = new JSONObject(ss); - Bundle bundle = new Bundle(); - Message msg = new Message(); - int code = jsonObject.getInt("code"); - String message = jsonObject.getString("message"); - if (code == 200) - { - msg.what = EventType.MSG_UPDATE_SESSION_MEETING_STATUS_SUCCESS - .ordinal(); - } else - { - - msg.what = EventType.MSG_UPDATE_SESSION_MEETING_STATUS_FAILED - .ordinal(); - } - - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); + } catch (JSONException e) { + e.printStackTrace(); } - - } catch (JSONException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); + msg.what = EventType.MSG_GET_MEETING_INFO_SUCCESS.ordinal(); + } else { + msg.what = EventType.MSG_GET_MEETING_INFO_FAILED.ordinal(); } + bundle.putString(JoinActType.JOIN_TYPE, joinType); + bundle.putString("message", message); + bundle.putString("meetingid", meetingid); + bundle.putInt("position",position); + msg.setData(bundle); + EventBus.getDefault().post(msg); } - }.start(); + }); } /** - * updateSessionMeetingEndtime14 + * updateUserMeetingJointime 18 * - * @param sessionid + * @param sign + * @param meetingid */ + public void updateUserMeetingJointime(final String sign, final String meetingid, final int position) { - public void updateSessionMeetingEndtime(final String sessionid) - { - new Thread() - { - @Override - public synchronized void run() - { - super.run(); - - Map params = new HashMap(); - params.put("sessionid", sessionid); - - try - { - String ss = getResponseStr(params, - "meeting/updateSessionMeetingEndtime"); - - if (mDebug) - Log.e(TAG, "ss " + ss); - if (ss != null) - { - JSONObject jsonObject = new JSONObject(ss); - Bundle bundle = new Bundle(); - Message msg = new Message(); - int code = jsonObject.getInt("code"); - String message = jsonObject.getString("message"); - if (code == 200) - { - - msg.what = EventType.MSG_UPDATE_SESSION_MEETING_ENDTIME_SUCCESS - .ordinal(); - - } else - { - - msg.what = EventType.MSG_UPDATE_SESSION_MEETING_ENDTIME_FAILED - .ordinal(); - } - - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); - } - - } catch (JSONException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }.start(); - - } - - /** - * updateSessionMeetingNumber15 - * - * @param sessionid - * @param sessionnumber - */ + RequestParams params = new RequestParams(); + params.put("sign", sign); + params.put("meetingid", meetingid); - public void updateSessionMeetingNumber(final String sessionid, - final String sessionnumber) - { - new Thread() - { + String url = "meeting/updateUserMeetingJointime"; + HttpContent.post(url, params, new TmTextHttpResponseHandler() { @Override - public synchronized void run() - { - Map params = new HashMap(); - params.put("sessionid", sessionid); - params.put("sessionnumber", sessionnumber); - - try - { - - String ss = getResponseStr(params, - "meeting/updateSessionMeetingNumber"); - - if (mDebug) - Log.e(TAG, "ss " + ss); - if (ss != null) - { - JSONObject jsonObject = new JSONObject(ss); - Bundle bundle = new Bundle(); - Message msg = new Message(); - int code = jsonObject.getInt("code"); - String message = jsonObject.getString("message"); - if (code == 200) - { - msg.what = EventType.MSG_UPDATE_SESSION_MEETING_NUMBER_SUCCESS - .ordinal(); - - } else - { - - msg.what = EventType.MSG_UPDATE_SESSION_MEETING_NUMBER_FAILED - .ordinal(); - } - - bundle.putString("message", message); - msg.setData(bundle); - - EventBus.getDefault().post(msg); + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { + super.onSuccess(statusCode, code, message, responseString, headers); + if (mDebug) + Log.e(TAG, "onSuccess: updateUserMeetingJointime" + responseString); + if (code == 200) { + try { + JSONObject jsonObject = new JSONObject(responseString); + long jointime = jsonObject.getLong("jointime"); + List meetingLists = TeamMeetingApp.getmSelfData().getMeetingLists(); + + MeetingListEntity meetingListEntity = meetingLists.get(position); + meetingListEntity.setJointime(jointime); + meetingLists.remove(position); + meetingLists.add(0, meetingListEntity); + } catch (JSONException e) { + e.printStackTrace(); } - - } catch (JSONException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); + msg.what = EventType.MSG_UP_DATE_USER_MEETING_JOIN_TIME_SUCCESS.ordinal(); + } else { + msg.what = EventType.MSG_UP_DATE_USER_MEETING_JOIN_TIME_FAILED.ordinal(); } + bundle.putString("message", message); + msg.setData(bundle); + EventBus.getDefault().post(msg); } - }.start(); - + }); } - // ****************************************** - /** - * .获取会议室的信息 单独封装 提交响应的设置 16 + * insertUserMeetingRoom * - * @param mettinString + * @param sign + * @param meetingid */ - public String getMeetingInfo(String mettinString) - { - return null; - } - /** - * /meeting/updateUserMeetingJointime 17 - * - * @param sessionid - * @param sessionnumber - */ - public void updateUserMeetingJointime(final String sign, - final String meetingid) - { - new Thread() - { - @Override - public synchronized void run() - { - super.run(); - - Map params = new HashMap(); - params.put("sign", sign); - params.put("meetingid", meetingid); - - try - { - - String ss = getResponseStr(params, - "meeting/updateUserMeetingJointime"); - if (ss != null) - { - JSONObject jsonObject = new JSONObject(ss); - Bundle bundle = new Bundle(); - Message msg = new Message(); - int code = jsonObject.getInt("code"); - String message = jsonObject.getString("message"); - if (code == 200) - { - msg.what = EventType.MSG_UP_DATE_USER_MEETING_JOIN_TIME_SUCCESS - .ordinal(); - } else - { - msg.what = EventType.MSG_UP_DATE_USER_MEETING_JOIN_TIME_FAILED - .ordinal(); - } - - bundle.putString("message", message); - msg.setData(bundle); - // 测试 - EventBus.getDefault().post(msg); - } - - } catch (JSONException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }.start(); + public void insertUserMeetingRoom(final String sign, final String meetingid, final String join_insert_type) { - } + String url = "meeting/insertUserMeetingRoom"; + RequestParams params = new RequestParams(); + params.put("sign", sign); + params.put("meetingid", meetingid); - /** - * updateUserMeetingJointime 18 - * - * @param sessionid - * @param sessionnumber - */ - public void insertUserMeetingRoom(final String sign, final String meetingid) - { - new Thread() - { + HttpContent.post(url, params, new TmTextHttpResponseHandler() { @Override - public synchronized void run() - { - super.run(); - - Map params = new HashMap(); - params.put("sign", sign); - params.put("meetingid", meetingid); - try - { - String ss = getResponseStr(params, - "meeting/insertUserMeetingRoom"); - if (ss != null) - { - JSONObject jsonObject = new JSONObject(ss); - Bundle bundle = new Bundle(); - Message msg = new Message(); - int code = jsonObject.getInt("code"); - String message = jsonObject.getString("message"); - if (code == 200) - { - msg.what = EventType.MSG_INSERT_USER_MEETING_ROOM_SUCCESS - .ordinal(); - } else - { - msg.what = EventType.MSG_INSERT_USER_MEETING_ROOM_FAILED - .ordinal(); - } - - bundle.putString("message", message); - msg.setData(bundle); - // 测试 - EventBus.getDefault().post(msg); - } - - } catch (JSONException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { + super.onSuccess(statusCode, code, message, responseString, headers); + if (mDebug) + Log.e(TAG, "onSuccess: insertUserMeetingRoom" + responseString); + if (code == 200) { + TeamMeetingApp.getmSelfData().addMeetingHeardEntity(); + msg.what = EventType.MSG_INSERT_USER_MEETING_ROOM_SUCCESS.ordinal(); + } else { + msg.what = EventType.MSG_INSERT_USER_MEETING_ROOM_FAILED + .ordinal(); } + bundle.putString("meetingid", meetingid); + bundle.putString("message", message); + bundle.putString(JoinActType.JOIN_INSERT_TYPE, join_insert_type); + msg.setData(bundle); + EventBus.getDefault().post(msg); } - }.start(); + }); } /** - * pushMeetingMsg 19 + * pushMeetingMsg 20 * - * @param sessionid - * @param sessionnumber + * @param sign + * @param meetingid + * @param pushMsg + * @param notification */ + public void pushMeetingMsg(final String sign, final String meetingid, - final String pushMsg, final String notification) - { + final String pushMsg, final String notification) { String url = "jpush/pushMeetingMsg"; RequestParams params = new RequestParams(); @@ -1186,24 +547,19 @@ public void pushMeetingMsg(final String sign, final String meetingid, params.put("pushMsg", pushMsg); params.put("notification", notification); - HttpContent.post(url, params, new TmTextHttpResponseHandler() - { + HttpContent.post(url, params, new TmTextHttpResponseHandler() { @Override - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { super.onSuccess(statusCode, code, message, responseString, headers); if (mDebug) Log.e(TAG, "onSuccess: pushMeetingMsg" + responseString); - if (code == 200) - { + if (code == 200) { msg.what = EventType.MSG_PUSH_MEETING_MSG_SUCCESS .ordinal(); - } else - { + } else { msg.what = EventType.MSG_PUSH_MEETING_MSG_FAILED .ordinal(); } - bundle.putString("message", message); msg.setData(bundle); // 测试 @@ -1211,63 +567,38 @@ public void onSuccess(int statusCode, int code, String message, String responseS } }); - } /** - * pushCommonMsg 20 + * updateNickname * * @param sign - * @param meetingid - * @param pushMsg - * @param notification + * @param nickname */ - public void pushCommonMsg(final String sign, final List targetid, - final String pushMsg, final String notification) - { - new Thread() - { - @Override - public synchronized void run() - { - Map params = new HashMap(); - params.put("sign", sign); - params.put("pushMsg", pushMsg); - params.put("targetid", targetid.toString()); - params.put("notification", notification); - try - { - String ss = getResponseStr(params, "jpush/pushCommonMsg"); - if (mDebug) - Log.e(TAG, "ss " + ss); - if (ss != null) - { - JSONObject jsonObject = new JSONObject(ss); - Bundle bundle = new Bundle(); - Message msg = new Message(); - int code = jsonObject.getInt("code"); - String message = jsonObject.getString("message"); - if (code == 200) - { - msg.what = EventType.MSG_PUSH_COMMO_NSG_SUCCESS - .ordinal(); - } else - { - msg.what = EventType.MSG_PUSH_OMMO_NMSG_FAILED - .ordinal(); - } - bundle.putString("message", message); - msg.setData(bundle); - EventBus.getDefault().post(msg); - } - } catch (JSONException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); + public void updateNickname(final String sign, final String nickname) { + String url = "users/updateNickname"; + + RequestParams params = new RequestParams(); + params.put("sign", sign); + params.put("nickname", nickname); + + HttpContent.post(url, params, new TmTextHttpResponseHandler() { + @Override + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { + super.onSuccess(statusCode, code, message, responseString, headers); + if (mDebug) + Log.e(TAG, "onSuccess: pushMeetingMsg" + responseString); + if (code == 200) { + msg.what = EventType.MSG_UPDATE_NICKNAME_SUCCESS.ordinal(); + } else { + msg.what = EventType.MSG_UPDATE_NICKNAME_FAILED + .ordinal(); } + bundle.putString("message", message); + msg.setData(bundle); + EventBus.getDefault().post(msg); } - }.start(); + }); } - } diff --git a/app/src/main/java/org/dync/teameeting/http/TmTextHttpResponseHandler.java b/app/src/main/java/org/dync/teameeting/http/TmTextHttpResponseHandler.java index 362f7b6..9730d5d 100644 --- a/app/src/main/java/org/dync/teameeting/http/TmTextHttpResponseHandler.java +++ b/app/src/main/java/org/dync/teameeting/http/TmTextHttpResponseHandler.java @@ -6,7 +6,7 @@ import com.google.gson.Gson; import com.loopj.android.http.TextHttpResponseHandler; -import com.ypy.eventbus.EventBus; +import com.orhanobut.logger.Logger; import org.apache.http.Header; import org.dync.teameeting.TeamMeetingApp; @@ -14,19 +14,19 @@ import org.json.JSONException; import org.json.JSONObject; +import de.greenrobot.event.EventBus; + /** - * Created by 小白龙 on 2015/12/28 0028. + * Created by zhulang on 2015/12/28 0028. */ -public class TmTextHttpResponseHandler extends TextHttpResponseHandler -{ +public class TmTextHttpResponseHandler extends TextHttpResponseHandler { + String TAG = this.getClass().getSimpleName(); public boolean mDebug = TeamMeetingApp.mIsDebug; public Gson gson = null; public Bundle bundle; public Message msg; - - public TmTextHttpResponseHandler() - { + public TmTextHttpResponseHandler() { super("UTF-8"); gson = new Gson(); msg = new Message(); @@ -34,42 +34,34 @@ public TmTextHttpResponseHandler() } @Override - public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) - { - // 网络问题。 or.服务器挂了。 + public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { + // network or server problem + Logger.e("onFailure: "+statusCode+"-----responseString" +responseString); msg.what = EventType.MSG_RESPONS_ESTR_NULl.ordinal(); EventBus.getDefault().post(msg); - if (mDebug) - { - Log.e("TextHttpResponseHandler", "onFailure: responseString" + responseString); - Log.e("TextHttpResponseHandler", "网络问题。 or.服务器挂了。"); - } } @Override - public void onSuccess(int statusCode, Header[] headers, String responseString) - { + public void onSuccess(int statusCode, Header[] headers, String responseString) { JSONObject jsonObject = null; String message = null; - try - { + try { jsonObject = new JSONObject(responseString); - int code = jsonObject.getInt("code"); message = jsonObject.getString("message"); - this.onSuccess(statusCode, code, message, responseString, headers); - - } catch (JSONException e) - { + this.onSuccess(statusCode, code, message, jsonObject); + } catch (JSONException e) { e.printStackTrace(); } } - - public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) - { + public void onSuccess(int statusCode, int code, String message, String responseString, Header[] headers) { Log.w("TextHttpResponseHandler", "onSuccess(int, Header[], JSONArray) was not overriden, but callback was received"); } + public void onSuccess(int statusCode, int code, String message, JSONObject jsonObject) { + // Log.w("TextHttpResponseHandler", "onSuccess(int, Header[], JSONArray) was not overriden, but callback was received"); + } + } diff --git a/app/src/main/java/org/dync/teameeting/msgs/MsgClient.java b/app/src/main/java/org/dync/teameeting/msgs/MsgClient.java deleted file mode 100644 index 17d22bb..0000000 --- a/app/src/main/java/org/dync/teameeting/msgs/MsgClient.java +++ /dev/null @@ -1,115 +0,0 @@ -package org.dync.teameeting.msgs; - -import android.app.Activity; - -import org.dync.teameeting.sdkmsgclientandroid.jni.JMClientApp; -import org.dync.teameeting.sdkmsgclientandroid.jni.JMClientHelper; -import org.dync.teameeting.sdkmsgclientandroid.jni.NativeContextRegistry; -import org.dync.teameeting.sdkmsgclientandroid.util.MsgUtils; - -/** - * Created by hp on 12/24/15. - */ -public abstract class MsgClient implements JMClientHelper{ - - protected NativeContextRegistry mNativeContext; - protected JMClientApp mMApp; - protected Activity mActivity; - - public MsgClient(Activity activity) { - MsgUtils.assertIsTrue(null != activity); - mActivity = activity; - - mNativeContext = new NativeContextRegistry(); - mNativeContext.register(mActivity); - - mMApp = new JMClientApp(this); - } - - public void Destroy() { - if (null != mMApp) { - mMApp.Destroy(); - mMApp = null; - } - if (null != mNativeContext) { - mNativeContext.unRegister(); - mNativeContext = null; - } - } - - protected int MCConnStatus() { - return mMApp.ConnStatus(); - } - - protected int MCInit(String strServer, int nPort) { - if (null != mMApp) { - return mMApp.Init(strServer, nPort); - } else { - return -1; - } - } - - protected int MCUnin() { - if (null != mMApp) { - return mMApp.Unin(); - } else { - return -1; - } - } - - protected int MCLogin(String strUserid, String strPass) { - if (null != mMApp) { - return mMApp.Login(strUserid, strPass); - } else { - return -1; - } - } - - protected int MCSndMsg(String strUserid, String strPass, String strRoomid, String strMsg) { - if (null != mMApp) { - return mMApp.SndMsg(strUserid, strPass, strRoomid, strMsg); - } else { - return -1; - } - } - - protected int MCGetMsg(String strUserid, String strPass) { - if (null != mMApp) { - return mMApp.GetMsg(strUserid, strPass); - } else { - return -1; - } - } - - protected int MCLogout(String strUserid, String strPass) { - if (null != mMApp) { - return mMApp.Logout(strUserid, strPass); - } else { - return -1; - } - } - - protected int MCOptRoom(int cmd, String strUserid, String strPass, String strRoomid, String strRemain) { - if (null != mMApp) { - return mMApp.OptRoom(cmd, strUserid, strPass, strRoomid, strRemain); - } else { - return -1; - } - } - - protected int MCSndMsgTo(String strUserid, String strPass, String strRoomid, String strMsg, String[] arrUser) { - if (null != mMApp) { - return mMApp.SndMsgTo(strUserid, strPass, strRoomid, strMsg, arrUser); - } else { - return -1; - } - } - - protected int MCNotifyMsg(String strUserid, String strPass, String strRoomid, String strMsg) { - if (null != mMApp) { - return mMApp.NotifyMsg(strUserid, strPass, strRoomid, strMsg); - } else { - return -1; - } - } -} diff --git a/app/src/main/java/org/dync/teameeting/msgs/TMMsgSender.java b/app/src/main/java/org/dync/teameeting/msgs/TMMsgSender.java deleted file mode 100644 index f6dc2b4..0000000 --- a/app/src/main/java/org/dync/teameeting/msgs/TMMsgSender.java +++ /dev/null @@ -1,195 +0,0 @@ -package org.dync.teameeting.msgs; - -import android.app.Activity; -import android.os.Bundle; -import android.os.Message; -import android.util.Log; - -import com.ypy.eventbus.EventBus; - -import org.dync.teameeting.structs.EventType; -import org.json.JSONException; -import org.json.JSONObject; - - -/** - * Created by hp on 12/24/15. - */ -public class TMMsgSender extends MsgClient { - - private Message mMessage; - private String TAG = "TMMsgSender"; - - public TMMsgSender(Activity activity) { - super(activity); - } - - /** - * provide for client to imvoke - * */ - - public int TMConnStatus() { - return this.MCConnStatus(); - } - - public int TMInit(String strServer, int nPort) { - return this.MCInit(strServer, nPort); - } - - public int TMUnin() { - return this.MCUnin(); - } - - - public int TMLogin(String strUserid, String strPass) { - return this.MCLogin(strUserid, strPass); - } - - public int TMSndMsg(String strUserid, String strPass, String strRoomid, String strMsg) { - return this.MCSndMsg(strUserid, strPass, strRoomid, strMsg); - } - - public int TMGetMsg(String strUserid, String strPass) { - return this.MCGetMsg(strUserid, strPass); - } - - public int TMLogout(String strUserid, String strPass) { - return this.MCLogout(strUserid, strPass); - } - - public int TMOptRoom(int cmd, String strUserid, String strPass, String strRoomid, String strRemain) { - return this.MCOptRoom(cmd, strUserid, strPass, strRoomid, strRemain); - } - - public int TMSndMsgTo(String strUserid, String strPass, String strRoomid, String strMsg, String[] arrUser) { - return this.MCSndMsgTo(strUserid, strPass, strRoomid, strMsg, arrUser); - } - - public int TMNotifyMsg(String strUserid, String strPass, String strRoomid, String strMsg) { - return this.MCNotifyMsg(strUserid, strPass, strRoomid, strMsg); - } - - - /** - * implement for JMClientHelper - * */ - @Override - public void OnReqLogin(int code, String status, String userid) { - String s = "OnReqLogin status:"+status+", userid"+userid; - System.out.println(s); - - - } - - @Override - public void OnRespLogin(int code, String status, String userid) { - String s = "OnRespLogin status:"+status+", userid"+userid; - System.out.println(s); - mMessage = new Message(); - if(code==0){ - - mMessage.what = EventType.MSG_MESSAGE_LOGIN_SUCCESS.ordinal(); - }else{ - mMessage.what = EventType.MSG_MESSAGE_LOGIN_FAILED.ordinal(); - } - - EventBus.getDefault().post(mMessage); - } - - @Override - public void OnReqSndMsg(String msg) { - String s = "OnReqSndMsg msg:" + msg; - System.out.println(s); - - try { - JSONObject json = new JSONObject(msg); - int tags = json.getInt("tags"); - String content = json.getString("cont"); - Log.e(TAG, "OnReqSndMsg: " +content); - - mMessage = new Message(); - Bundle bundle = new Bundle(); - bundle.putInt("tags", tags); - bundle.putString("message",content); - // bundle.putString("name",from); - mMessage.setData(bundle); - mMessage.what = EventType.MSG_MESSAGE_RECEIVE.ordinal(); - EventBus.getDefault().post(mMessage); - - } catch (JSONException e) { - e.printStackTrace(); - } - } - - @Override - public void OnRespSndMsg(String msg) { - String s = "OnRespSndMsg msg:" + msg; - System.out.println(s); - - } - - @Override - public void OnReqGetMsg(String msg) { - String s = "OnReqGetMsg msg:"+ msg; - System.out.println(s); - - } - - @Override - public void OnRespGetMsg(String msg) { - String s = "OnRespGetMsg msg:"+ msg; - System.out.println(s); - - } - - @Override - public void OnReqLogout(int code, String status, String userid) { - String s = "OnReqLogout status:"+status+", userid"+userid; - System.out.println(s); - - } - - @Override - public void OnRespLogout(int code, String status, String userid) { - String s = "OnRespLogout status:"+status+", userid"+userid; - System.out.println(s); - mMessage = new Message(); - if(code==0){ - - mMessage.what = EventType.MSG_MESSAGE_LOGOUT_SUCCESS.ordinal(); - }else{ - mMessage.what = EventType.MSG_MESSAGE_LOGOUT_FAILED.ordinal(); - } - - EventBus.getDefault().post(mMessage); - - - } - - @Override - public void OnMsgServerConnected() { - String s = "OnMsgServerConnected was called"; - System.out.println(s); - mMessage = new Message(); - - - mMessage.what = EventType.MSG_MESSAGE_SERVER_CONNECTED.ordinal(); - - EventBus.getDefault().post(mMessage); - - } - - @Override - public void OnMsgServerDisconnect() { - String s = "OnMsgServerDisconnect was called"; - System.out.println(s); - - } - - @Override - public void OnMsgServerConnectionFailure() { - String s = "OnMsgServerConnectionFailure was called"; - System.out.println(s); - - } -} diff --git a/app/src/main/java/org/dync/teameeting/receiver/MyReceiver.java b/app/src/main/java/org/dync/teameeting/receiver/MyReceiver.java index 04dd8a8..87fe618 100644 --- a/app/src/main/java/org/dync/teameeting/receiver/MyReceiver.java +++ b/app/src/main/java/org/dync/teameeting/receiver/MyReceiver.java @@ -4,78 +4,119 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.os.Message; import android.util.Log; -import org.dync.teameeting.ui.TestActivity; +import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.structs.EventType; +import org.dync.teameeting.ui.activity.StartFlashActivity; +import org.dync.teameeting.ui.helper.ActivityTaskHelp; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.List; import cn.jpush.android.api.JPushInterface; +import de.greenrobot.event.EventBus; + +public class MyReceiver extends BroadcastReceiver { + private boolean mDebug = TeamMeetingApp.mIsDebug; + private static final String TAG = "JPush"; + public static final String ACTIVITY_ACTION_NOTIFACTION = "action_notifation"; + + @Override + public void onReceive(Context context, Intent intent) { + Bundle bundle = intent.getExtras(); + if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) { + chackNotifiaction(context, bundle); + } + + /* + if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) { + } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) { + } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) { + } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) { + chackNotifiaction(context, bundle); + } else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) { + } else if (JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) { + boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false); + Log.e(TAG, "[MyReceiver]" + intent.getAction() + " connected state change to " + connected); + } else { + Log.e(TAG, "[MyReceiver] Unhandled intent - " + intent.getAction()); + }*/ + } + + /** + * on click ontifiatin + * + * @param context + * @param bundle + */ + private void chackNotifiaction(Context context, Bundle bundle) { + + String notifaction = bundle.getString(JPushInterface.EXTRA_EXTRA); + + int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID); + JPushInterface.clearNotificationById(TeamMeetingApp.getTeamMeetingApp(), notifactionId); + Boolean userInfoBoolean = TeamMeetingApp.isInitFalg; + if (mDebug) { + Log.e(TAG, "chackNotifiaction: IsAppRun" + userInfoBoolean); + Log.e(TAG, "notifaction" + notifaction + "notifactionID" + notifactionId); + } + + if (userInfoBoolean) { + runAppFacation(context, bundle); + } else { + startfalshActivity(context, bundle); + } + } + + public void startfalshActivity(Context context, Bundle bundle) { + Intent i = new Intent(context, StartFlashActivity.class); + i.setAction(ACTIVITY_ACTION_NOTIFACTION); + i.putExtras(bundle); + i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); + context.startActivity(i); + } + + private void runAppFacation(Context context, Bundle bundle) { + String notifaction = bundle.getString(JPushInterface.EXTRA_EXTRA); + Message msg = new Message(); + msg.setData(bundle); + + String meetingId = null; + try { + JSONObject json = new JSONObject(notifaction); + meetingId = json.getString("roomid"); + } catch (JSONException e) { + e.printStackTrace(); + } + + List activityList = TeamMeetingApp.getMeetingActivityList(); + if (mDebug) { + //fan + Log.e + (TAG, "activityList Size: " + activityList.size()); + } + if (activityList.size() == 1) { + String notifiMeetingId = activityList.get(0); + boolean packageNameonResume = ActivityTaskHelp.isPackageNameonResume(context, null); + if (mDebug) { + Log.e(TAG, "MeetingId: " + notifiMeetingId + "packageNameonResume--" + packageNameonResume); + } + if (notifiMeetingId.equals(meetingId)) { + msg.what = EventType.MSG_NOTIFICATION_MEETINGID_EQUAL.ordinal(); + Log.e(TAG, "----- meetingId equqals "); + } else { + msg.what = EventType.MSG_NOTIFICATION_MEETING_CLOSE_MAIN.ordinal(); + Log.e(TAG, "----- meetingId not equals"); + } + } else { + msg.what = EventType.MSG_NOTIFICATION_MAIN.ordinal(); + Log.e(TAG, "---- activityList === 0 "); + } + EventBus.getDefault().post(msg); + } + -/** - * 自定义接收器 - * - * 如果不定义这个 Receiver,则: 1) 默认用户会打开主界面 2) 接收不到自定义消息 - */ -public class MyReceiver extends BroadcastReceiver -{ - private static final String TAG = "JPush"; - - @Override - public void onReceive(Context context, Intent intent) - { - Bundle bundle = intent.getExtras(); - - if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) - { - String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID); - Log.d(TAG, "[MyReceiver] 接收Registration Id : " + regId); - // send the Registration Id to your server... - - } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) - { - Log.d(TAG, - "[MyReceiver] 接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE)); - processCustomMessage(context, bundle); - - } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) - { - Log.d(TAG, "[MyReceiver] 接收到推送下来的通知"); - int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID); - Log.d(TAG, "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId); - - } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) - { - Log.d(TAG, "[MyReceiver] 用户点击打开了通知"); - - // 打开自定义的Activity - Intent i = new Intent(context, TestActivity.class); - i.putExtras(bundle); - // i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); - context.startActivity(i); - - } else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) - { - Log.d(TAG, - "[MyReceiver] 用户收到到RICH PUSH CALLBACK: " - + bundle.getString(JPushInterface.EXTRA_EXTRA)); - // 在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码,比如打开新的Activity, - // 打开一个网页等.. - - } else if (JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) - { - boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, - false); - Log.w(TAG, "[MyReceiver]" + intent.getAction() + " connected state change to " - + connected); - } else - { - Log.d(TAG, "[MyReceiver] Unhandled intent - " + intent.getAction()); - } - } - - // send msg to MainActivity - private void processCustomMessage(Context context, Bundle bundle) - { - - } } diff --git a/app/src/main/java/org/dync/teameeting/receiver/NetWorkReceiver.java b/app/src/main/java/org/dync/teameeting/receiver/NetWorkReceiver.java index 8940384..81a01b5 100644 --- a/app/src/main/java/org/dync/teameeting/receiver/NetWorkReceiver.java +++ b/app/src/main/java/org/dync/teameeting/receiver/NetWorkReceiver.java @@ -1,145 +1,190 @@ package org.dync.teameeting.receiver; -import org.dync.teameeting.TeamMeetingApp; -import org.dync.teameeting.structs.EventType; -import org.dync.teameeting.structs.NetType; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; + import android.net.ConnectivityManager; import android.net.NetworkInfo; + import android.os.Bundle; import android.os.Message; + import android.telephony.TelephonyManager; + import android.util.Log; -import com.ypy.eventbus.EventBus; +import de.greenrobot.event.EventBus; + +import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.structs.EventType; +import org.dync.teameeting.structs.NetType; + public class NetWorkReceiver extends BroadcastReceiver { - private static final String TAG = "NetWorkReceiver"; - private static final boolean mDebug= TeamMeetingApp.mIsDebug; - /* - * HACKISH: These constants aren't yet available in my API level (7), but I - * need to handle these cases if they come up, on newer versions - */ - public static final int NETWORK_TYPE_EHRPD = 14; // Level 11 - public static final int NETWORK_TYPE_EVDO_B = 12; // Level 9 - public static final int NETWORK_TYPE_HSPAP = 15; // Level 13 - public static final int NETWORK_TYPE_IDEN = 11; // Level 8 - public static final int NETWORK_TYPE_LTE = 13; // Level 11 - - private ConnectivityManager mConnectivity; - - @Override - public void onReceive(Context context, Intent intent) { - // TODO Auto-generated method stub - if (null == mConnectivity) { - mConnectivity = (ConnectivityManager) TeamMeetingApp.getTeamMeetingApp() - .getSystemService(Context.CONNECTIVITY_SERVICE); - } - - - NetworkInfo info = mConnectivity.getActiveNetworkInfo(); - - Message msg = new Message(); - msg.what = EventType.MSG_NET_WORK_TYPE.ordinal(); - Bundle bundle = new Bundle(); - - if (info == null || !mConnectivity.getBackgroundDataSetting()) { - bundle.putInt("net_type", NetType.TYPE_NULL.ordinal()); - TeamMeetingApp.getMyself().setmIsNetConnected(false); - msg.setData(bundle); - Log.d(TAG, "========>" - + NetType.values()[bundle.getInt("net_type")].toString()); - EventBus.getDefault().post(msg); - return; - } - - int netType = info.getType(); - int netSubtype = info.getSubtype(); - - if (netType == ConnectivityManager.TYPE_WIFI) { - if (info.isConnected()) { - bundle.putInt("net_type", NetType.TYPE_WIFI.ordinal()); - TeamMeetingApp.getMyself().setmIsNetConnected(true); - } else { - bundle.putInt("net_type", NetType.TYPE_NULL.ordinal()); - TeamMeetingApp.getMyself().setmIsNetConnected(false); - } - } else if (netType == ConnectivityManager.TYPE_MOBILE) { - TeamMeetingApp.getMyself().setmIsNetConnected(true); - switch (netSubtype) { - case TelephonyManager.NETWORK_TYPE_1xRTT: - bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); // ~ - // 50-100 - break; // kbps - case TelephonyManager.NETWORK_TYPE_CDMA: - bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); // ~ 14-64 - break; // kbps - case TelephonyManager.NETWORK_TYPE_EDGE: - bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); // ~ - // 50-100 - break; // kbps - case TelephonyManager.NETWORK_TYPE_EVDO_0: - bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ - // 400-1000 - break; // kbps - case TelephonyManager.NETWORK_TYPE_EVDO_A: - bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ - // 600-1400 - break; // kbps - case TelephonyManager.NETWORK_TYPE_GPRS: - bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); // ~ 100 - break; // kbps - case TelephonyManager.NETWORK_TYPE_HSDPA: - bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ 2-14 - break; // Mbps - case TelephonyManager.NETWORK_TYPE_HSPA: - bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ - // 700-1700 - break; // kbps - case TelephonyManager.NETWORK_TYPE_HSUPA: - bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ 1-23 - break; // Mbps - case TelephonyManager.NETWORK_TYPE_UMTS: - bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ - // 400-7000 - break; // kbps - // NOT AVAILABLE YET IN API LEVEL 7 - case NETWORK_TYPE_EHRPD: - bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ 1-2 - break; // Mbps - case NETWORK_TYPE_EVDO_B: - bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ 5 - break; // Mbps - case NETWORK_TYPE_HSPAP: - bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ 10-20 - break; // Mbps - case NETWORK_TYPE_IDEN: - bundle.putInt("net_type", NetType.TYPE_2G.ordinal());// ~25 kbps - break; - case NETWORK_TYPE_LTE: - bundle.putInt("net_type", NetType.TYPE_4G.ordinal()); // ~ 10+ - break; // Mbps - // Unknown - case TelephonyManager.NETWORK_TYPE_UNKNOWN: - bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); - break; - } - } else { - TeamMeetingApp.getMyself().setmIsNetConnected(true); - bundle.putInt("net_type", NetType.TYPE_UNKNOWN.ordinal()); - } - if(mDebug) - Log.e(TAG, - "========>" - + NetType.values()[bundle.getInt("net_type")] - .toString()); - - msg.setData(bundle); - - EventBus.getDefault().post(msg); - } + private static final String TAG = "NetWorkReceiver"; + private static final boolean mDebug = TeamMeetingApp.mIsDebug; + + /* + * HACKISH: These constants aren't yet available in my API level (7), but I + * need to handle these cases if they come up, on newer versions + */ + public static final int NETWORK_TYPE_EHRPD = 14; // Level 11 + public static final int NETWORK_TYPE_EVDO_B = 12; // Level 9 + public static final int NETWORK_TYPE_HSPAP = 15; // Level 13 + public static final int NETWORK_TYPE_IDEN = 11; // Level 8 + public static final int NETWORK_TYPE_LTE = 13; // Level 11 + private ConnectivityManager mConnectivity; + + @Override + public void onReceive(Context context, Intent intent) { + // TODO Auto-generated method stub + if (null == mConnectivity) { + mConnectivity = (ConnectivityManager) TeamMeetingApp.getTeamMeetingApp() + .getSystemService(Context.CONNECTIVITY_SERVICE); + } + + NetworkInfo info = mConnectivity.getActiveNetworkInfo(); + + Message msg = new Message(); + msg.what = EventType.MSG_NET_WORK_TYPE.ordinal(); + + Bundle bundle = new Bundle(); + + if ((info == null) || !mConnectivity.getBackgroundDataSetting()) { + bundle.putInt("net_type", NetType.TYPE_NULL.ordinal()); + TeamMeetingApp.getmSelfData().setmIsNetConnected(false); + msg.setData(bundle); + Log.e(TAG, + "========>" + + NetType.values()[bundle.getInt("net_type")].toString()); + EventBus.getDefault().post(msg); + + return; + } + + int netType = info.getType(); + int netSubtype = info.getSubtype(); + + if (netType == ConnectivityManager.TYPE_WIFI) { + if (info.isConnected()) { + Log.e(TAG, + "========>wifi1" + + NetType.values()[bundle.getInt("net_type")].toString()); + bundle.putInt("net_type", NetType.TYPE_WIFI.ordinal()); + TeamMeetingApp.getmSelfData().setmIsNetConnected(true); + } else { + Log.e(TAG, + "========>wifi2" + + NetType.values()[bundle.getInt("net_type")].toString()); + bundle.putInt("net_type", NetType.TYPE_WIFI_NULL.ordinal()); + TeamMeetingApp.getmSelfData().setmIsNetConnected(false); + } + } else if (netType == ConnectivityManager.TYPE_MOBILE) { + TeamMeetingApp.getmSelfData().setmIsNetConnected(true); + + switch (netSubtype) { + case TelephonyManager.NETWORK_TYPE_1xRTT: + bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); // ~ + // 50-100 + + break; // kbps + + case TelephonyManager.NETWORK_TYPE_CDMA: + bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); // ~ 14-64 + + break; // kbps + + case TelephonyManager.NETWORK_TYPE_EDGE: + bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); // ~ + // 50-100 + + break; // kbps + + case TelephonyManager.NETWORK_TYPE_EVDO_0: + bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ + // 400-1000 + + break; // kbps + + case TelephonyManager.NETWORK_TYPE_EVDO_A: + bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ + // 600-1400 + + break; // kbps + + case TelephonyManager.NETWORK_TYPE_GPRS: + bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); // ~ 100 + + break; // kbps + + case TelephonyManager.NETWORK_TYPE_HSDPA: + bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ 2-14 + + break; // Mbps + + case TelephonyManager.NETWORK_TYPE_HSPA: + bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ + // 700-1700 + + break; // kbps + + case TelephonyManager.NETWORK_TYPE_HSUPA: + bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ 1-23 + + break; // Mbps + + case TelephonyManager.NETWORK_TYPE_UMTS: + bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ + // 400-7000 + + break; // kbps + // NOT AVAILABLE YET IN API LEVEL 7 + + case NETWORK_TYPE_EHRPD: + bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ 1-2 + + break; // Mbps + + case NETWORK_TYPE_EVDO_B: + bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ 5 + + break; // Mbps + + case NETWORK_TYPE_HSPAP: + bundle.putInt("net_type", NetType.TYPE_3G.ordinal()); // ~ 10-20 + + break; // Mbps + + case NETWORK_TYPE_IDEN: + bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); // ~25 kbps + + break; + + case NETWORK_TYPE_LTE: + bundle.putInt("net_type", NetType.TYPE_4G.ordinal()); // ~ 10+ + + break; // Mbps + // Unknown + + case TelephonyManager.NETWORK_TYPE_UNKNOWN: + bundle.putInt("net_type", NetType.TYPE_2G.ordinal()); + + break; + } + } else { + TeamMeetingApp.getmSelfData().setmIsNetConnected(true); + bundle.putInt("net_type", NetType.TYPE_UNKNOWN.ordinal()); + } + + if (mDebug) { + Log.e(TAG, + "========>123" + + NetType.values()[bundle.getInt("net_type")].toString()); + } + + msg.setData(bundle); + EventBus.getDefault().post(msg); + } } diff --git a/app/src/main/java/org/dync/teameeting/receiver/PhoneStateReceiver.java b/app/src/main/java/org/dync/teameeting/receiver/PhoneStateReceiver.java index 42f5217..a093de4 100644 --- a/app/src/main/java/org/dync/teameeting/receiver/PhoneStateReceiver.java +++ b/app/src/main/java/org/dync/teameeting/receiver/PhoneStateReceiver.java @@ -1,39 +1,44 @@ package org.dync.teameeting.receiver; + import android.app.Service; + import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; + import android.telephony.TelephonyManager; + import android.util.Log; -public class PhoneStateReceiver extends BroadcastReceiver { +public class PhoneStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub if (intent.getAction().equals("android.intent.action.PHONE_STATE")) { - TelephonyManager tManager = (TelephonyManager) context - .getSystemService(Service.TELEPHONY_SERVICE); + TelephonyManager tManager = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE); + switch (tManager.getCallState()) { - case TelephonyManager.CALL_STATE_RINGING: - Log.e("PhoneStateReveiver", - "phoneNumber: " - + intent.getStringExtra("incoming_number")); - try { - /*挂断电话*/ - //RtkApp.the().getCore().getITelephony().endCall(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - break; - case TelephonyManager.CALL_STATE_OFFHOOK: - break; - case TelephonyManager.CALL_STATE_IDLE: - break; + case TelephonyManager.CALL_STATE_RINGING: + Log.e("PhoneStateReveiver", + "phoneNumber: " + + intent.getStringExtra("incoming_number")); + + try { + //RtkApp.the().getCore().getITelephony().endCall(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + break; + + case TelephonyManager.CALL_STATE_OFFHOOK: + break; + + case TelephonyManager.CALL_STATE_IDLE: + break; } } } - } diff --git a/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/JMClientApp.java b/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/JMClientApp.java deleted file mode 100644 index afc8772..0000000 --- a/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/JMClientApp.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.dync.teameeting.sdkmsgclientandroid.jni; - - -/** - * Created by hp on 12/24/15. - */ -public class JMClientApp { - /** - * 构造访问jni底层库的对象 - */ - - private final long fNativeAppId; - - public JMClientApp(JMClientHelper helper) { - fNativeAppId = Create(helper); - } - - private static native long Create(JMClientHelper helper); - - public native int ConnStatus(); - public native int Init(String strServer, int port); - public native int Unin(); - - public native int Login(String strUserid, String strPass); - public native int SndMsg(String strUserid, String strPass, String strRoomid, String strMsg); - public native int GetMsg(String strUserid, String strPass); - public native int Logout(String strUserid, String strPass); - public native int OptRoom(int cmd, String strUserid, String strPass, String strRoomid, String strRemain); - public native int SndMsgTo(String strUserid, String strPass, String strRoomid, String strMsg, String[] arrUser); - - public native int NotifyMsg(String strUserid, String strPass, String strRoomid, String strMsg); - - - /** - * 销毁APP - */ - public native void Destroy(); -} diff --git a/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/JMClientHelper.java b/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/JMClientHelper.java deleted file mode 100644 index e25db52..0000000 --- a/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/JMClientHelper.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.dync.teameeting.sdkmsgclientandroid.jni; - -/** - * Created by hp on 12/24/15. - */ -public interface JMClientHelper { - public void OnReqLogin(int code, String status, String userid); - public void OnRespLogin(int code, String status, String userid); - public void OnReqSndMsg(String msg); - public void OnRespSndMsg(String msg); - public void OnReqGetMsg(String msg); - public void OnRespGetMsg(String msg); - public void OnReqLogout(int code, String status, String userid); - public void OnRespLogout(int code, String status, String userid); - public void OnMsgServerConnected(); - public void OnMsgServerDisconnect(); - public void OnMsgServerConnectionFailure(); -} diff --git a/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/JMClientType.java b/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/JMClientType.java deleted file mode 100644 index fca95a5..0000000 --- a/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/JMClientType.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.dync.teameeting.sdkmsgclientandroid.jni; - -/** - * Created by hp on 12/24/15. - */ -public class JMClientType { - //* Connection Status - public static final int NOT_CONNECTED = 0; - public static final int RESOLVING = 1; - public static final int CONNECTTING = 2; - public static final int CONNECTED = 3; - - - //* MsgClient Callback Code - public static final int CODE_OK = 0; - public static final int CODE_INVPARAMS = 1; - public static final int CODE_ERRCONNINFO = 2; - public static final int CODE_ERRMODUINFO = 3; - public static final int CODE_ERRTOJSON = 4; - public static final int CODE_NEXISTROOM = 5; - public static final int CODE_NEXISTMEM = 6; - public static final int CODE_EXISTROOM = 7; - public static final int CODE_EXISTMEM = 8; - public static final int CODE_INVALID = 9; - - //* MsgClient Opt Room Cmd - public static final int TMCMD_ENTER = 1; - public static final int TMCMD_LEAVE = 2; - public static final int TMCMD_CREATE = 3; - public static final int TMCMD_DESTROY = 4; - public static final int TMCMD_REFRESH = 5; - public static final int TMCMD_DCOMM = 6; - public static final int TMCMD_MEETCMD_INVALID = 7; -} diff --git a/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/NativeContextRegistry.java b/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/NativeContextRegistry.java deleted file mode 100644 index ac17356..0000000 --- a/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/jni/NativeContextRegistry.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.dync.teameeting.sdkmsgclientandroid.jni; - -import android.content.Context; - - -/** - * Copyright (c) 2015 DYNC. All Rights Reserved. - * - * 向jni层注册和注销Java虚拟机 - * - * @author DYNC - * - */ - -/** - * Created by hp on 12/24/15. - */ - -public class NativeContextRegistry { - /** - * 加载api所需要的动态库 - */ - static { - System.loadLibrary("msgclient-jni"); - } - - /** - * 向Jni层注册Java虚拟机 - * - * @param context - * :应用的上下文 - */ - public native void register(Context context); - - /** - * 解除Java虚拟机与Jni层的绑定 - */ - public native void unRegister(); -} diff --git a/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/util/MsgUtils.java b/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/util/MsgUtils.java deleted file mode 100644 index e925349..0000000 --- a/app/src/main/java/org/dync/teameeting/sdkmsgclientandroid/util/MsgUtils.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.dync.teameeting.sdkmsgclientandroid.util; - -import android.os.Build; -import android.util.Log; - -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; - -/** - * RTKUtils 提供了辅助函数来管理线程安全 说明:工具类 By Dync.inc - 2015/7/20 - * - * @author Maozongwu - * - */ -public final class MsgUtils { - - private MsgUtils() { - } - - /** - * NonThreadSafe 是一个助手类用于帮助验证类的方法被称为从相同的线程。 - * - * @author Maozongwu - * - */ - public static class NonThreadSafe { - private final Long threadId; - - public NonThreadSafe() { - // Store thread ID of the creating thread. - threadId = Thread.currentThread().getId(); - } - - /** - * 检查是否有效的方法/创建线程。 - * - * @return 是否是同一个线程 - */ - public boolean calledOnValidThread() { - return threadId.equals(Thread.currentThread().getId()); - } - } - - /** - * 当断言失败时抛出一个异常 - * - * @param condition - * 断言条件 true/false - */ - public static void assertIsTrue(boolean condition) { - if (!condition) { - throw new AssertionError("Expected condition to be true"); - } - } - - /** - * 建立一个线程信息的字符串 - * - * @return 生成的字符串 - */ - public static String getThreadInfo() { - return "@[name=" + Thread.currentThread().getName() + ", id=" + Thread.currentThread().getId() + "]"; - } - - /** - * 来自系统属性的信息 - * - * @param tag - * 日志标识符 - */ - public static void logDeviceInfo(String tag) { - Log.d(tag, - "Android SDK: " + Build.VERSION.SDK_INT + ", " + "Release: " + Build.VERSION.RELEASE + ", " + "Brand: " - + Build.BRAND + ", " + "Device: " + Build.DEVICE + ", " + "Id: " + Build.ID + ", " - + "Hardware: " + Build.HARDWARE + ", " + "Manufacturer: " + Build.MANUFACTURER + ", " - + "Model: " + Build.MODEL + ", " + "Product: " + Build.PRODUCT); - } - - /** - * 字节流转化为字符串 - * - * @param buffer - * 字节流 - * @return 转过后的字符串 - */ - public static String byteBufferToString(ByteBuffer buffer) { - CharBuffer charBuffer = null; - try { - Charset charset = Charset.forName("UTF-8"); - CharsetDecoder decoder = charset.newDecoder(); - charBuffer = decoder.decode(buffer); - buffer.flip(); - return charBuffer.toString(); - } catch (Exception ex) { - ex.printStackTrace(); - return ""; - } - } -} diff --git a/app/src/main/java/org/dync/teameeting/structs/EventType.java b/app/src/main/java/org/dync/teameeting/structs/EventType.java index 0914bbe..1225070 100644 --- a/app/src/main/java/org/dync/teameeting/structs/EventType.java +++ b/app/src/main/java/org/dync/teameeting/structs/EventType.java @@ -1,75 +1,96 @@ package org.dync.teameeting.structs; -public enum EventType{ - - MSG_NET_WORK_TYPE, - - MSG_ININT_SUCCESS, - MSG_ININT_FAILED, - MSG_SIGNOUT_SUCCESS, - MSG_SIGNOUT_FAILED, - MSG_GET_ROOM_LIST_SUCCESS, - MSG_GET_ROOM_LIST_FAILED, - - MSG_RESPONS_ESTR_NULl, - - MSG_APPLY_ROOM_SUCCESS, - MSG_APPLY_ROOMT_FAILED, - MSG_DELETE_ROOM_SUCCESS, - MSG_DELETE_ROOM_FAILED, - MSG_UPDATE_ROOM_ADD_MEM_NUMBER_SUCCESS, - MSG_UPDATE_ROOM_ADD_MEM_NUMBER_FAILED, - MSG_UPDATE_ROOM_Minux_MEM_NUMBER_SUCCESS, - MSG_UPDATE_ROOM_Minux_MEM_NUMBER_FAILED, - - MSG_UPDATE_ROOM_PUSHABLE_SUCCESS, - MSG_UPDATE_ROOM_PUSHABLE_FAILED, - MSG_UPDATE_ROOM_ENABLE_SUCCESS, - MSG_UPDATE_ROOM_ENABLE_FAILED, - - MSG_UPDATE_MEET_ROOM_NAME_SUCCESS, - MSG_UPDATE_MEET_ROOM_NAME_FAILED, - MSG_GET_MEETING_MSG_LIST_SUCCESS, - MSG_GET_MEETING_MSG_LIST_FAILED, - - MSG_INSERT_MEETING_MSG_SUCCESS, - MSG_INSERT_MEETING_MSG_FAILED, - MSG_INSERT_SESSION_MEETING_INFO_SUCCESS, - MSG_INSERT_SESSION_MEETING_INFO_FAILED, - - MSG_UPDATE_SESSION_MEETING_STATUS_SUCCESS, - MSG_UPDATE_SESSION_MEETING_STATUS_FAILED, - - MSG_UPDATE_SESSION_MEETING_ENDTIME_SUCCESS, - MSG_UPDATE_SESSION_MEETING_ENDTIME_FAILED, - - MSG_UPDATE_SESSION_MEETING_NUMBER_SUCCESS, - MSG_UPDATE_SESSION_MEETING_NUMBER_FAILED, - - MSG_UPDAT_EPUSH_TOKEN_SUCCESS, - MSG_UPDAT_EPUSH_TOKEN_FAILED, - - MSG_UP_DATE_USER_MEETING_JOIN_TIME_SUCCESS, - MSG_UP_DATE_USER_MEETING_JOIN_TIME_FAILED, - - MSG_INSERT_USER_MEETING_ROOM_SUCCESS, - MSG_INSERT_USER_MEETING_ROOM_FAILED, - - MSG_PUSH_MEETING_MSG_SUCCESS, - MSG_PUSH_MEETING_MSG_FAILED, - - MSG_PUSH_COMMO_NSG_SUCCESS, - MSG_PUSH_OMMO_NMSG_FAILED, - - - /* Message */ - MSG_MESSAGE_LOGIN_SUCCESS, - MSG_MESSAGE_LOGIN_FAILED, - MSG_MESSAGE_LOGOUT_SUCCESS, - MSG_MESSAGE_LOGOUT_FAILED, - - MSG_MESSAGE_RECEIVE, - MSG_MESSAGE_SERVER_CONNECTED, +public enum EventType { + MSG_NET_WORK_TYPE, + + MSG_ININT_SUCCESS, + MSG_ININT_FAILED, + MSG_SIGNOUT_SUCCESS, + MSG_SIGNOUT_FAILED, + MSG_GET_ROOM_LIST_SUCCESS, + MSG_GET_ROOM_LIST_FAILED, + + MSG_RESPONS_ESTR_NULl, + + MSG_APPLY_ROOM_SUCCESS, + MSG_APPLY_ROOMT_FAILED, + MSG_DELETE_ROOM_SUCCESS, + MSG_DELETE_ROOM_FAILED, + MSG_UPDATE_ROOM_ADD_MEM_NUMBER_SUCCESS, + MSG_UPDATE_ROOM_ADD_MEM_NUMBER_FAILED, + MSG_UPDATE_ROOM_Minux_MEM_NUMBER_SUCCESS, + MSG_UPDATE_ROOM_Minux_MEM_NUMBER_FAILED, + + MSG_UPDATE_ROOM_PUSHABLE_SUCCESS, + MSG_UPDATE_ROOM_PUSHABLE_FAILED, + MSG_UPDATE_ROOM_ENABLE_SUCCESS, + MSG_UPDATE_ROOM_ENABLE_FAILED, + + MSG_UPDATE_MEET_ROOM_NAME_SUCCESS, + MSG_UPDATE_MEET_ROOM_NAME_FAILED, + MSG_GET_MEETING_MSG_LIST_SUCCESS, + MSG_GET_MEETING_MSG_LIST_FAILED, + + MSG_INSERT_MEETING_MSG_SUCCESS, + MSG_INSERT_MEETING_MSG_FAILED, + MSG_INSERT_SESSION_MEETING_INFO_SUCCESS, + MSG_INSERT_SESSION_MEETING_INFO_FAILED, + + MSG_UPDATE_SESSION_MEETING_STATUS_SUCCESS, + MSG_UPDATE_SESSION_MEETING_STATUS_FAILED, + + MSG_UPDATE_SESSION_MEETING_ENDTIME_SUCCESS, + MSG_UPDATE_SESSION_MEETING_ENDTIME_FAILED, + + MSG_UPDATE_SESSION_MEETING_NUMBER_SUCCESS, + MSG_UPDATE_SESSION_MEETING_NUMBER_FAILED, + + MSG_UPDAT_EPUSH_TOKEN_SUCCESS, + MSG_UPDAT_EPUSH_TOKEN_FAILED, + + MSG_UP_DATE_USER_MEETING_JOIN_TIME_SUCCESS, + MSG_UP_DATE_USER_MEETING_JOIN_TIME_FAILED, + + MSG_INSERT_USER_MEETING_ROOM_SUCCESS, + MSG_INSERT_USER_MEETING_ROOM_FAILED, + + MSG_PUSH_MEETING_MSG_SUCCESS, + MSG_PUSH_MEETING_MSG_FAILED, + + MSG_PUSH_COMMO_NSG_SUCCESS, + MSG_PUSH_OMMO_NMSG_FAILED, + + MSG_GET_MEETING_INFO_SUCCESS, + MSG_GET_MEETING_INFO_FAILED, + + + /* Message */ + MSG_MESSAGE_LOGIN_SUCCESS, + MSG_MESSAGE_LOGIN_FAILED, + MSG_MESSAGE_LOGOUT_SUCCESS, + MSG_MESSAGE_LOGOUT_FAILED, + + MSG_MESSAGE_RECEIVE, + MSG_MESSAGE_SERVER_CONNECTED, + + MCCMD_ENTER, + MCCMD_LEAVE, + MCCMD_DCOMM, + + JOIN_MEETINGID_EXIST, + MSG_UPDATE_NICKNAME_SUCCESS, + MSG_UPDATE_NICKNAME_FAILED, + + MSG_NOTIFICATION_MAIN, + MSG_NOTIFICATION_MEETINGID_EQUAL, + MSG_NOTIFICATION_MEETING_CLOSE, + MSG_NOTIFICATION_MEETING_CLOSE_MAIN, + + MSG_URL_START_MEETING, + MSG_URL_MEETING_EXIT, + + MSG_ROOMSEETING_ENTER_ROOM, + MSG_NOTIFY_OFF } diff --git a/app/src/main/java/org/dync/teameeting/structs/ExtraType.java b/app/src/main/java/org/dync/teameeting/structs/ExtraType.java index 5745475..9fa06f6 100644 --- a/app/src/main/java/org/dync/teameeting/structs/ExtraType.java +++ b/app/src/main/java/org/dync/teameeting/structs/ExtraType.java @@ -1,7 +1,6 @@ package org.dync.teameeting.structs; -public class ExtraType -{ +public class ExtraType { public final static int REQUEST_CODE_ROOM_SETTING = 1; public final static int RESULT_CODE_ROOM_SETTING_MESSAGE_INVITE = 2; @@ -11,4 +10,6 @@ public class ExtraType public final static int RESULT_CODE_ROOM_SETTING_RENAME = 6; public final static int RESULT_CODE_ROOM_SETTING_DELETE = 7; public final static int RESULT_CODE_ROOM_SETTING_CLOSE = 8; + public final static int REQUEST_CODE_ROOM_MEETING = 9; + } diff --git a/app/src/main/java/org/dync/teameeting/structs/HttpApiTpye.java b/app/src/main/java/org/dync/teameeting/structs/HttpApiTpye.java new file mode 100644 index 0000000..df8645e --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/structs/HttpApiTpye.java @@ -0,0 +1,13 @@ +package org.dync.teameeting.structs; + +/** + * Created by Xiao_Bailong on 2016/1/21. + */ +public class HttpApiTpye { + public static int pushableNO = 0; + public static int pushableYes = 1; + + public static int RoomEnableNo = 0; + public static int RoomEnableYes = 1; + public static int RoomEnablePrivate = 2; +} diff --git a/app/src/main/java/org/dync/teameeting/structs/Intent_KEY.java b/app/src/main/java/org/dync/teameeting/structs/Intent_KEY.java index 5a7d2b2..023f30f 100644 --- a/app/src/main/java/org/dync/teameeting/structs/Intent_KEY.java +++ b/app/src/main/java/org/dync/teameeting/structs/Intent_KEY.java @@ -7,4 +7,5 @@ public class Intent_KEY { public static String MEETING_ENTY = "meeting_enty"; public static String POSITION = "position"; + public static String URL_MEETING_ID = "url_meeting_id"; } diff --git a/app/src/main/java/org/dync/teameeting/structs/JoinActType.java b/app/src/main/java/org/dync/teameeting/structs/JoinActType.java new file mode 100644 index 0000000..800d7f2 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/structs/JoinActType.java @@ -0,0 +1,18 @@ +package org.dync.teameeting.structs; + +/** + * Created by Xiao_Bailong on 2016/1/16. + */ +public class JoinActType { + public static String JOIN_TYPE = "join_TYPE"; + public static String JOIN_INSERT_TYPE = "join_insert"; + public static String JOIN_INSERT_START_ACTIVITY = "join_insert_start_activity"; + public static String JOIN_INSERT_LINK_JOIN_ACTIVITY = "join_insert_link_join_activity"; + public static String JOIN_START_ACTIVITY = "join_start_activity"; + public static String JOIN_ENTER_ACTIVITY = "join_enter_activity"; + public static String JOIN_ENTER_JOIN_ACTIVITY = "join_enter_join_activity"; + public static String JOIN_LINK_JOIN_ACTIVITY = "join_link_join_activity"; + + public static String JOIN_URL_ACTVITY="join_url_activity"; + public static String JOIN_INSERT_URL_ACTIVITY="join_insert_url_activity"; +} diff --git a/app/src/main/java/org/dync/teameeting/structs/NetType.java b/app/src/main/java/org/dync/teameeting/structs/NetType.java index 7e3150d..bda639c 100644 --- a/app/src/main/java/org/dync/teameeting/structs/NetType.java +++ b/app/src/main/java/org/dync/teameeting/structs/NetType.java @@ -2,34 +2,34 @@ /** * The type of network connection - * + * * @author nyist - * */ -public enum NetType -{ - /** - * No network connection - */ - TYPE_NULL, - /** - * WIFI connection - */ - TYPE_WIFI, - /** - * 4G connection - */ - TYPE_4G, - /** - * 3G connection - */ - TYPE_3G, - /** - * 2G connection - */ - TYPE_2G, - /** - * unkenow connection - */ - TYPE_UNKNOWN +public enum NetType { + /** + * No network connection + */ + TYPE_NULL, + /** + * WIFI connection + */ + TYPE_WIFI, + TYPE_WIFI_NULL, + /** + * 4G connection + */ + TYPE_4G, + /** + * 3G connection + */ + TYPE_3G, + /** + * 2G connection + */ + TYPE_2G, + /** + * unkenow connection + */ + TYPE_UNKNOWN + } diff --git a/app/src/main/java/org/dync/teameeting/structs/ShareUrl.java b/app/src/main/java/org/dync/teameeting/structs/ShareUrl.java new file mode 100644 index 0000000..2d7f6dd --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/structs/ShareUrl.java @@ -0,0 +1,8 @@ +package org.dync.teameeting.structs; + +/** + * Created by Xiao_Bailong on 2016/3/29. + */ +public class ShareUrl { + public static String SHARE_URL="https://www.teameeting.cn/share_meetingRoom/#/"; +} diff --git a/app/src/main/java/org/dync/teameeting/ui/PushSetActivity.java b/app/src/main/java/org/dync/teameeting/ui/PushSetActivity.java index 99f0e04..fa25f21 100644 --- a/app/src/main/java/org/dync/teameeting/ui/PushSetActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/PushSetActivity.java @@ -1,13 +1,5 @@ package org.dync.teameeting.ui; -import java.util.LinkedHashSet; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import cn.jpush.android.api.JPushInterface; -import cn.jpush.android.api.TagAliasCallback; - import android.app.Activity; import android.content.Context; import android.net.ConnectivityManager; @@ -23,232 +15,213 @@ import android.widget.EditText; import android.widget.Toast; +import com.orhanobut.logger.Logger; + import org.dync.teameeting.R; +import org.dync.teameeting.TeamMeetingApp; + +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import cn.jpush.android.api.JPushInterface; +import cn.jpush.android.api.TagAliasCallback; -public class PushSetActivity extends Activity implements OnClickListener -{ - private static final String TAG = "JPush"; - - Button mSetTag; - Button mSetAlias; - - private static final int MSG_SET_ALIAS = 1001; - private static final int MSG_SET_TAGS = 1002; - - private final Handler mHandler = new Handler() - { - @Override - public void handleMessage(android.os.Message msg) - { - super.handleMessage(msg); - switch (msg.what) - { - case MSG_SET_ALIAS: - Log.d(TAG, "Set alias in handler."); - JPushInterface.setAliasAndTags(getApplicationContext(), (String) msg.obj, null, - mAliasCallback); - break; - - case MSG_SET_TAGS: - Log.d(TAG, "Set tags in handler."); - JPushInterface.setAliasAndTags(getApplicationContext(), null, - (Set) msg.obj, mTagsCallback); - break; - - default: - Log.i(TAG, "Unhandled msg - " + msg.what); - } - } - }; - - @Override - public void onCreate(Bundle icicle) - { - super.onCreate(icicle); - setContentView(R.layout.activity_push_set); - init(); - initListener(); - } - - private void initListener() - { - // TODO Auto-generated method stub - mSetTag.setOnClickListener(this); - mSetAlias.setOnClickListener(this); - } - - private void init() - { - mSetTag = (Button) findViewById(R.id.bt_tag); - mSetAlias = (Button) findViewById(R.id.bt_alias); - } - - @Override - public void onClick(View v) - { - switch (v.getId()) - { - case R.id.bt_tag: - setTag(); - break; - case R.id.bt_alias: - setAlias(); - break; - } - } - - private void setTag() - { - EditText tagEdit = (EditText) findViewById(R.id.et_tag); - String tag = tagEdit.getText().toString().trim(); - - // 检查 tag 的有效性 - if (TextUtils.isEmpty(tag)) - { - Toast.makeText(PushSetActivity.this, "tag不能为空", Toast.LENGTH_SHORT).show(); - return; - } - - // ","隔开的多个 转换成 Set - String[] sArray = tag.split(","); - Set tagSet = new LinkedHashSet(); - for (String sTagItme : sArray) - { - if (!isValidTagAndAlias(sTagItme)) - { - Toast.makeText(PushSetActivity.this, "格式不对", Toast.LENGTH_SHORT).show(); - return; - } - tagSet.add(sTagItme); - } - - // 调用JPush API设置Tag - mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_TAGS, tagSet)); - - } - - private void setAlias() - { - EditText aliasEdit = (EditText) findViewById(R.id.et_alias); - String alias = aliasEdit.getText().toString().trim(); - if (TextUtils.isEmpty(alias)) - { - Toast.makeText(PushSetActivity.this, "alias不能为空", Toast.LENGTH_SHORT).show(); - return; - } - if (!isValidTagAndAlias(alias)) - { - Toast.makeText(PushSetActivity.this, "格式不对", Toast.LENGTH_SHORT).show(); - return; - } - - // 调用JPush API设置Alias - mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_ALIAS, alias)); - } - - private final TagAliasCallback mAliasCallback = new TagAliasCallback() - { - @Override - public void gotResult(int code, String alias, Set tags) - { - String logs; - switch (code) - { - case 0: - logs = "Set tag and alias success"; - Log.i(TAG, logs); - break; - - case 6002: - logs = "Failed to set alias and tags due to timeout. Try again after 60s."; - Log.i(TAG, logs); - if (isConnected(getApplicationContext())) - { - mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS, alias), - 1000 * 60); - } else - { - Log.i(TAG, "No network"); - } - break; - - default: - logs = "Failed with errorCode = " + code; - Log.e(TAG, logs); - } - - showToast(logs, getApplicationContext()); - } - - }; - - private final TagAliasCallback mTagsCallback = new TagAliasCallback() - { - - @Override - public void gotResult(int code, String alias, Set tags) - { - String logs; - switch (code) - { - case 0: - logs = "Set tag and alias success"; - Log.i(TAG, logs); - break; - - case 6002: - logs = "Failed to set alias and tags due to timeout. Try again after 60s."; - Log.i(TAG, logs); - if (isConnected(getApplicationContext())) - { - mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_TAGS, tags), - 1000 * 60); - } else - { - Log.i(TAG, "No network"); - } - break; - - default: - logs = "Failed with errorCode = " + code; - Log.e(TAG, logs); - } - - showToast(logs, getApplicationContext()); - } - - }; - - // ******************************Utils******************************* - // 校验Tag Alias 只能是数字,英文字母和中文 - public static boolean isValidTagAndAlias(String s) - { - Pattern p = Pattern.compile("^[\u4E00-\u9FA50-9a-zA-Z_-]{0,}$"); - Matcher m = p.matcher(s); - return m.matches(); - } - - public static boolean isConnected(Context context) - { - ConnectivityManager conn = (ConnectivityManager) context - .getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo info = conn.getActiveNetworkInfo(); - return (info != null && info.isConnected()); - } - - public static void showToast(final String toast, final Context context) - { - new Thread(new Runnable() - { - - @Override - public void run() - { - Looper.prepare(); - Toast.makeText(context, toast, Toast.LENGTH_SHORT).show(); - Looper.loop(); - } - }).start(); - } +public class PushSetActivity extends Activity implements OnClickListener { + private static final String JPUSH = "JPush"; + + Button mSetTag; + Button mSetAlias; + + private static final int MSG_SET_ALIAS = 1001; + private static final int MSG_SET_TAGS = 1002; + + private final Handler mHandler = new Handler() { + @Override + public void handleMessage(android.os.Message msg) { + super.handleMessage(msg); + switch (msg.what) { + case MSG_SET_ALIAS: + Log.d(JPUSH, "Set alias in handler."); + JPushInterface.setAliasAndTags(getApplicationContext(), (String) msg.obj, null, + mAliasCallback); + break; + case MSG_SET_TAGS: + Log.d(JPUSH, "Set tags in handler."); + JPushInterface.setAliasAndTags(getApplicationContext(), null, + (Set) msg.obj, mTagsCallback); + break; + default: + Log.i(JPUSH, "Unhandled msg - " + msg.what); + } + } + }; + + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + setContentView(R.layout.activity_push_set); + init(); + initListener(); + } + + private void initListener() { + // TODO Auto-generated method stub + mSetTag.setOnClickListener(this); + mSetAlias.setOnClickListener(this); + } + + private void init() { + mSetTag = (Button) findViewById(R.id.bt_tag); + EditText viewById = (EditText) findViewById(R.id.et_tag); + String tag = TeamMeetingApp.getTeamMeetingApp().getDevId(); + viewById.setText(tag); + mSetAlias = (Button) findViewById(R.id.bt_alias); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.bt_tag: + setTag(); + break; + case R.id.bt_alias: + setAlias(); + break; + } + } + + private void setTag() { + EditText tagEdit = (EditText) findViewById(R.id.et_tag); + String tag = tagEdit.getText().toString().trim(); + + // 检查 tag 的有效性 + if (TextUtils.isEmpty(tag)) { + Toast.makeText(PushSetActivity.this, "tag不能为空", Toast.LENGTH_SHORT).show(); + return; + } + + Logger.e(tag); + // ","隔开的多个 转换成 Set + String[] sArray = tag.split(","); + Set tagSet = new LinkedHashSet(); + for (String sTagItme : sArray) { + if (!isValidTagAndAlias(sTagItme)) { + Toast.makeText(PushSetActivity.this, "格式不对", Toast.LENGTH_SHORT).show(); + return; + } + tagSet.add(sTagItme); + } + + // 调用JPush API设置Tag + mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_TAGS, tagSet)); + } + + private void setAlias() { + EditText aliasEdit = (EditText) findViewById(R.id.et_alias); + String alias = aliasEdit.getText().toString().trim(); + if (TextUtils.isEmpty(alias)) { + Toast.makeText(PushSetActivity.this, "alias不能为空", Toast.LENGTH_SHORT).show(); + return; + } + if (!isValidTagAndAlias(alias)) { + Toast.makeText(PushSetActivity.this, "格式不对", Toast.LENGTH_SHORT).show(); + return; + } + + // 调用JPush API设置Alias + mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_ALIAS, alias)); + } + + private final TagAliasCallback mAliasCallback = new TagAliasCallback() { + @Override + public void gotResult(int code, String alias, Set tags) { + String logs; + switch (code) { + case 0: + logs = "Set tag and alias success"; + Log.i(JPUSH, logs); + break; + + case 6002: + logs = "Failed to set alias and tags due to timeout. Try again after 60s."; + Log.i(JPUSH, logs); + if (isConnected(getApplicationContext())) { + mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS, alias), + 1000 * 60); + } else { + Log.i(JPUSH, "No network"); + } + break; + + default: + logs = "Failed with errorCode = " + code; + Log.e(JPUSH, logs); + } + + showToast(logs, getApplicationContext()); + } + + }; + + private final TagAliasCallback mTagsCallback = new TagAliasCallback() { + + @Override + public void gotResult(int code, String alias, Set tags) { + String logs; + switch (code) { + case 0: + logs = "Set tag and alias success"; + Log.i(JPUSH, logs); + break; + + case 6002: + logs = "Failed to set alias and tags due to timeout. Try again after 60s."; + Log.i(JPUSH, logs); + if (isConnected(getApplicationContext())) { + mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_TAGS, tags), + 1000 * 60); + } else { + Log.i(JPUSH, "No network"); + } + break; + + default: + logs = "Failed with errorCode = " + code; + Log.e(JPUSH, logs); + } + + showToast(logs, getApplicationContext()); + } + + }; + + // ******************************Utils******************************* + // 校验Tag Alias 只能是数字,英文字母和中文 + public static boolean isValidTagAndAlias(String s) { + Pattern p = Pattern.compile("^[\u4E00-\u9FA50-9a-zA-Z_-]{0,}$"); + Matcher m = p.matcher(s); + return m.matches(); + } + + public static boolean isConnected(Context context) { + ConnectivityManager conn = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo info = conn.getActiveNetworkInfo(); + return (info != null && info.isConnected()); + } + + public static void showToast(final String toast, final Context context) { + new Thread(new Runnable() { + + @Override + public void run() { + Looper.prepare(); + Toast.makeText(context, toast, Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + }).start(); + } } diff --git a/app/src/main/java/org/dync/teameeting/ui/TestActivity.java b/app/src/main/java/org/dync/teameeting/ui/TestActivity.java index b5a1a87..b35c497 100644 --- a/app/src/main/java/org/dync/teameeting/ui/TestActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/TestActivity.java @@ -1,9 +1,5 @@ package org.dync.teameeting.ui; -import org.dync.teameeting.R; -import org.dync.teameeting.TeamMeetingApp; -import org.dync.teameeting.http.NetWork; - import android.app.Activity; import android.content.Context; import android.os.Bundle; @@ -12,49 +8,48 @@ import android.widget.Button; import android.widget.Toast; -public class TestActivity extends Activity -{ - Context context = this; - private NetWork netWork; - private String sign; +import org.dync.teameeting.R; +import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.http.NetWork; +import org.dync.teameeting.structs.JoinActType; - @Override - protected void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - setContentView(R.layout.test_activity); - context = this; - sign = TeamMeetingApp.getMyself().getmAuthorization(); - netWork = new NetWork(); - Init(); - } +public class TestActivity extends Activity { + Context context = this; + private NetWork netWork; + private String sign; - private void Init() - { - Button btButton = (Button) findViewById(R.id.send); - btButton.setOnClickListener(new OnClickListener() - { - @Override - public void onClick(View v) - { - Toast.makeText(context, "测试", Toast.LENGTH_SHORT).show(); - pushTest(); - } - }); - } + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.test_activity); + context = this; + sign = TeamMeetingApp.getmSelfData().getAuthorization(); + netWork = new NetWork(); + Init(); + } - void pushTest() - { - /* + private void Init() { + Button btButton = (Button) findViewById(R.id.send); + btButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Toast.makeText(context, "测试", Toast.LENGTH_SHORT).show(); + pushTest(); + } + }); + } + + void pushTest() { + /* * // 推送测试 sign = TeamMeetingApp.getMyself().getmAuthorization(); * //mNetWork.pushMeetingMsg(sign, meetingId, "推送消息", "推送概要"); * List targetid = new ArrayList(); * targetid.add(mUserId); mNetWork.pushCommonMsg(sign, targetid, "推送消息", * "推送概要"); if (mDebug) { Log.i(TAG, "发送"); } */ - // netWork.updatePushtoken(sign, "haha");//更新token - // netWork.insertUserMeetingRoom(sign, "400000000062", "6"); - - netWork.insertUserMeetingRoom(sign, "400000000062"); - } + // netWork.updatePushtoken(sign, "haha");//更新token + // netWork.insertUserMeetingRoom(sign, "400000000062", "6"); + + netWork.insertUserMeetingRoom(sign, "400000000062", JoinActType.JOIN_INSERT_LINK_JOIN_ACTIVITY); + } } diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/BaseActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/BaseActivity.java index 40b2f9c..cb4ff11 100644 --- a/app/src/main/java/org/dync/teameeting/ui/activity/BaseActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/activity/BaseActivity.java @@ -3,98 +3,211 @@ import android.app.Activity; import android.content.pm.ActivityInfo; import android.os.Bundle; +import android.os.CountDownTimer; +import android.os.Looper; import android.os.Message; import android.util.Log; -import com.ypy.eventbus.EventBus; - -import org.dync.teameeting.http.NetWork; +import org.dync.teameeting.R; import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.bean.ReqSndMsgEntity; +import org.dync.teameeting.chatmessage.ChatMessageClient; +import org.dync.teameeting.chatmessage.IChatMessageInteface; +import org.dync.teameeting.http.NetWork; import cn.jpush.android.api.JPushInterface; +import cn.pedant.SweetAlert.SweetAlertDialog; +import de.greenrobot.event.EventBus; -public class BaseActivity extends Activity -{ +public class BaseActivity extends Activity implements IChatMessageInteface { public NetWork mNetWork; public String mSign; public boolean mDebug = TeamMeetingApp.mIsDebug; private String TAG = "BaseActivity"; + private ChatMessageClient mChatMessageClinet; + int i = -1; + public SweetAlertDialog pDialog; + public boolean netTyp = false; + private CountDownTimer countDownTimer; @Override - protected void onCreate(Bundle savedInstanceState) - { + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mNetWork = new NetWork(); EventBus.getDefault().register(this); - if (!TeamMeetingApp.isPad) - { + if (!TeamMeetingApp.isPad) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } + registerObserverClinet(); + createDialog(); + } - if (mDebug) - { - Log.e(TAG, "onCreate: BaseActivity"); - } + private void createDialog() { + pDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE); + } + + private void registerObserverClinet() { + mChatMessageClinet = TeamMeetingApp.getmChatMessageClient(); + mChatMessageClinet.registerObserver(chatMessageObserver); } + ChatMessageClient.ChatMessageObserver chatMessageObserver = new ChatMessageClient.ChatMessageObserver() { + @Override + public void OnReqSndMsg(final ReqSndMsgEntity reqSndMsg) { + if (Looper.myLooper() != Looper.getMainLooper()) { + runOnUiThread(new Runnable() { + @Override + public void run() { + onRequesageMsg(reqSndMsg); + } + }); + } else { + onRequesageMsg(reqSndMsg); + } + } + }; - public void initNetWork() - { + public void initNetWork() { String userid = TeamMeetingApp.getTeamMeetingApp().getDevId(); mNetWork.init(userid, "2", "2", "2", "TeamMeeting"); } - public String getSign() - { - return TeamMeetingApp.getmSelfData().getAuthorization(); + public String getSign() { + return TeamMeetingApp.getmSelfData().getAuthorization(); } + @Override - protected void onResume() - { + protected void onResume() { super.onResume(); // init(); - if (mDebug) - { + if (mDebug) { Log.i(TAG, "onResume: "); } JPushInterface.onResume(this); + TeamMeetingApp.getTeamMeetingApp().stopMediaplayer(); } @Override - protected void onPause() - { + protected void onPause() { super.onPause(); - if (mDebug) - { + if (mDebug) { Log.i(TAG, "onPause: "); } JPushInterface.onPause(this); } @Override - protected void onStop() - { + protected void onStop() { super.onStop(); - if (mDebug) - { + if (mDebug) { Log.i(TAG, "onStop: "); } } @Override - protected void onDestroy() - { + protected void onDestroy() { super.onDestroy(); - if (mDebug) - { + if (mDebug) { Log.i(TAG, "onDestroy: "); } + mChatMessageClinet.unregisterObserver(chatMessageObserver); EventBus.getDefault().unregister(this); } - public void onEventMainThread(Message msg) - { + @Override + public void onRequesageMsg(ReqSndMsgEntity requestMsg) { + } + + public void onEventMainThread(Message msg) { } + /** + * network monitoring diloag + */ + void progressDiloag() { + if (pDialog.isShowing()) { + return; + } + pDialog.setCancelable(false); + pDialog.setTitleText(getString(R.string.dialog_loading)); + pDialog.setContentText(getString(R.string.dialog_net_exception)); + pDialog.showCancelButton(false); + pDialog.changeAlertType(SweetAlertDialog.PROGRESS_TYPE); + pDialog.show(); + + countDownTimer = new CountDownTimer(800 * 7, 800) { + public void onTick(long millisUntilFinished) { + + if (netTyp) { + pDialog.cancel(); + pDialog.dismiss(); + this.cancel(); + return; + } + switch (i) { + case 0: + pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.blue_btn_bg_color)); + break; + case 1: + pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.material_deep_teal_50)); + break; + case 2: + pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.success_stroke_color)); + break; + case 3: + pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.material_deep_teal_20)); + break; + case 4: + pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.material_blue_grey_80)); + break; + case 5: + pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.warning_stroke_color)); + break; + case 6: + pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.success_stroke_color)); + break; + } + } + + public void onFinish() { + i = -1; + if (netTyp == false) { + pDialog.cancel(); + pDialog.dismiss(); + + final SweetAlertDialog sb = new SweetAlertDialog(BaseActivity.this, SweetAlertDialog.WARNING_TYPE); + sb.setCancelable(false); + sb.setTitleText(getString(R.string.dialog_net_conn_failure)) + .setContentText(getString(R.string.dialog_please_conn_network)) + .setCancelText(getString(R.string.dialog_exit)) + .setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + sweetAlertDialog.cancel(); + sweetAlertDialog.dismiss(); + finish(); + } + }) + .setConfirmText(getString(R.string.dialog_try)) + .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + sweetAlertDialog.cancel(); + sweetAlertDialog.dismiss(); + progressDiloag(); + } + }) + .showCancelButton(true) + .show(); + + } else { + pDialog.cancel(); + pDialog.dismiss(); + return; + } + + } + }.start(); + } } diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/DialogActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/DialogActivity.java new file mode 100644 index 0000000..063b731 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/ui/activity/DialogActivity.java @@ -0,0 +1,26 @@ +package org.dync.teameeting.ui.activity; + +import android.app.Activity; +import android.os.Bundle; +import android.view.View; + +import org.dync.teameeting.R; + +public class DialogActivity extends Activity implements View.OnClickListener { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_dialog); + } + + + @Override + public void onClick(View v) { + switch (v.getId()) { + //case R.id.btn_ok: + // finish(); + // break; + } + } +} diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/GuideActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/GuideActivity.java index 8c09885..a2906c4 100644 --- a/app/src/main/java/org/dync/teameeting/ui/activity/GuideActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/activity/GuideActivity.java @@ -1,13 +1,5 @@ package org.dync.teameeting.ui.activity; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledExecutorService; - -import org.dync.teameeting.R; -import org.dync.teameeting.http.NetWork; -import org.dync.teameeting.TeamMeetingApp; - import android.app.Activity; import android.content.Intent; import android.os.Bundle; @@ -18,48 +10,52 @@ import android.util.Log; import android.view.View; import android.view.View.OnClickListener; +import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.ImageView.ScaleType; +import org.dync.teameeting.R; +import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.http.NetWork; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ScheduledExecutorService; + /** * @author zhangqilu */ -public class GuideActivity extends Activity -{ +public class GuideActivity extends Activity { private ViewPager viewPager; private List imageViews; private boolean mDebug = TeamMeetingApp.mIsDebug; private String[] titles; private int[] imageResId; private List dots; - // private TextView tv_title; + private Button mGuideButton; private int currentItem = 0; - - // An ExecutorService that can schedule commands to run after a given delay, - // or to execute periodically. - private ScheduledExecutorService scheduledExecutorService; - @Override - public void onCreate(Bundle savedInstanceState) - { + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_guide_view_page); - final String meetingList = getIntent().getExtras().getString(NetWork.MEETING_LIST); - if (mDebug) - Log.e("xbl", "onClick: " + meetingList); + imageResId = new int[]{R.drawable.view_page_1, R.drawable.view_page_2, R.drawable.view_page_3}; imageViews = new ArrayList(); - for (int i = 0; i < imageResId.length; i++) - { + for (int i = 0; i < imageResId.length; i++) { ImageView imageView = new ImageView(this); imageView.setImageResource(imageResId[i]); - imageView.setScaleType(ScaleType.FIT_XY); + imageView.setScaleType(ScaleType.CENTER_INSIDE); + ViewPager.LayoutParams layoutParams = new ViewPager.LayoutParams(); + layoutParams.width = ViewPager.LayoutParams.WRAP_CONTENT; + layoutParams.height= ViewPager.LayoutParams.MATCH_PARENT; + imageView.setLayoutParams(layoutParams); + imageViews.add(imageView); } @@ -69,15 +65,12 @@ public void onCreate(Bundle savedInstanceState) dots.add(findViewById(R.id.v_dot2)); mGuideButton = (Button) findViewById(R.id.btn_guide); - mGuideButton.setOnClickListener(new OnClickListener() - { + mGuideButton.setOnClickListener(new OnClickListener() { @Override - public void onClick(View arg0) - { + public void onClick(View arg0) { Intent intent = new Intent(GuideActivity.this, MainActivity.class); - intent.putExtra(NetWork.MEETING_LIST, meetingList); startActivity(intent); finish(); } @@ -88,18 +81,17 @@ public void onClick(View arg0) viewPager.setOnPageChangeListener(new MyPageChangeListener()); + } - private class MyPageChangeListener implements OnPageChangeListener - { + private class MyPageChangeListener implements OnPageChangeListener { private int oldPosition = 0; /** * This method will be invoked when a new page becomes selected. * position: Position index of the new selected page. */ - public void onPageSelected(int position) - { + public void onPageSelected(int position) { if (position == 2) mGuideButton.setVisibility(View.VISIBLE); else @@ -110,66 +102,55 @@ public void onPageSelected(int position) oldPosition = position; } - public void onPageScrollStateChanged(int arg0) - { + public void onPageScrollStateChanged(int arg0) { } - public void onPageScrolled(int arg0, float arg1, int arg2) - { + public void onPageScrolled(int arg0, float arg1, int arg2) { } } - private class MyAdapter extends PagerAdapter - { + private class MyAdapter extends PagerAdapter { @Override - public int getCount() - { + public int getCount() { return imageResId.length; } @Override - public Object instantiateItem(View arg0, int arg1) - { + public Object instantiateItem(View arg0, int arg1) { ((ViewPager) arg0).addView(imageViews.get(arg1)); return imageViews.get(arg1); } @Override - public void destroyItem(View arg0, int arg1, Object arg2) - { + public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView((View) arg2); } @Override - public boolean isViewFromObject(View arg0, Object arg1) - { + public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override - public void restoreState(Parcelable arg0, ClassLoader arg1) - { + public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override - public Parcelable saveState() - { + public Parcelable saveState() { return null; } @Override - public void startUpdate(View arg0) - { + public void startUpdate(View arg0) { } @Override - public void finishUpdate(View arg0) - { + public void finishUpdate(View arg0) { } } diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/InvitePeopleActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/InvitePeopleActivity.java index d47a828..7191ebe 100644 --- a/app/src/main/java/org/dync/teameeting/ui/activity/InvitePeopleActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/activity/InvitePeopleActivity.java @@ -1,108 +1,124 @@ package org.dync.teameeting.ui.activity; -import org.dync.teameeting.R; -import org.dync.teameeting.ui.helper.ShareHelper; -import org.dync.teameeting.structs.ExtraType; -import org.dync.teameeting.widgets.BottomMenu; -import org.dync.teameeting.widgets.BottomMenu.OnTouchSpeedListener; - import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; -public class InvitePeopleActivity extends Activity -{ - - private final static String TAG = "MainActivity"; - private TextView mCloseTV, mMessageInviteTV, mWeixinInviteTV, mCopyLinkTV; - Context context; - private String mShareUrl; - private ShareHelper mShareHelper; - - @Override - protected void onCreate(Bundle savedInstanceState) - { - context = InvitePeopleActivity.this; - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_invite_people); - Intent intent = getIntent(); - mShareUrl = intent.getStringExtra("roomUrl"); - - inint(); - - } - - private void inint() - { - mShareHelper = new ShareHelper(InvitePeopleActivity.this); - mCloseTV = (TextView) findViewById(R.id.tv_close); - mMessageInviteTV = (TextView) findViewById(R.id.tv_invite_message); - mWeixinInviteTV = (TextView) findViewById(R.id.tv_invite_weixin); - mCopyLinkTV = (TextView) findViewById(R.id.tv_copy_link); - - mCloseTV.setOnClickListener(mOnClickListener); - mMessageInviteTV.setOnClickListener(mOnClickListener); - mWeixinInviteTV.setOnClickListener(mOnClickListener); - mCopyLinkTV.setOnClickListener(mOnClickListener); - - BottomMenu bottomMenu = (BottomMenu) findViewById(R.id.bottomMenu); - bottomMenu.setOnTouchQuickSpeedListener(onTouchSpeedListener); - - } - - /** - * Touch slide Listener - */ - OnTouchSpeedListener onTouchSpeedListener = new OnTouchSpeedListener() - { - @Override - public void touchSpeed(int velocityX, int velocityY) - { - finishActivity(); - } - }; - private OnClickListener mOnClickListener = new OnClickListener() - { - @Override - public void onClick(View view) - { - - switch (view.getId()) - { - case R.id.tv_close: - - finishActivity(); - return; - case R.id.tv_invite_message: - finishActivity(); - mShareHelper.shareSMS(InvitePeopleActivity.this, "", mShareUrl); - break; - case R.id.tv_invite_weixin: - mShareHelper.shareWeiXin("分享到... ", "诚挚邀请你加入我们会议吧!点击链接:", - mShareUrl); - finishActivity(); - break; - case R.id.tv_copy_link: - setResult(ExtraType.RESULT_CODE_ROOM_SETTING_COPY_LINK); - finish(); - break; - - default: - break; - } - - } - }; - - public void finishActivity() - { - finish(); - overridePendingTransition(R.anim.activity_close_enter, - R.anim.activity_close_exit); - - }; +import org.dync.teameeting.R; +import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.bean.MeetingListEntity; +import org.dync.teameeting.structs.ExtraType; +import org.dync.teameeting.structs.ShareUrl; +import org.dync.teameeting.ui.helper.ShareHelper; +import org.dync.teameeting.widgets.BottomMenu; +import org.dync.teameeting.widgets.BottomMenu.OnTouchSpeedListener; + +public class InvitePeopleActivity extends Activity { + + private final static String TAG = "MainActivity"; + private boolean mDebug = TeamMeetingApp.mIsDebug; + private TextView mCloseTV, mMessageInviteTV, mWeixinInviteTV, mCopyLinkTV; + private Context mContext; + private String mShareUrl; + private ShareHelper mShareHelper; + private MeetingListEntity mMeetingEntity; + private String mMeetingId; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_invite_people); + inintView(); + inintDate(); + + } + + + private void inintDate() { + + mContext = InvitePeopleActivity.this; + Intent intent = getIntent(); + mMeetingId = intent.getStringExtra("meetingId"); + + if (mDebug) { + Log.e(TAG, " mMeetingId " + mMeetingId); + } + + mShareUrl = ShareUrl.SHARE_URL + mMeetingId; + mShareHelper = new ShareHelper(mContext); + } + + private void inintView() { + + mCloseTV = (TextView) findViewById(R.id.tv_close); + mMessageInviteTV = (TextView) findViewById(R.id.tv_invite_message); + mWeixinInviteTV = (TextView) findViewById(R.id.tv_invite_weixin); + mCopyLinkTV = (TextView) findViewById(R.id.tv_copy_link); + + mCloseTV.setOnClickListener(mOnClickListener); + mMessageInviteTV.setOnClickListener(mOnClickListener); + mWeixinInviteTV.setOnClickListener(mOnClickListener); + mCopyLinkTV.setOnClickListener(mOnClickListener); + + BottomMenu bottomMenu = (BottomMenu) findViewById(R.id.bottomMenu); + bottomMenu.setOnTouchQuickSpeedListener(onTouchSpeedListener); + + } + + /** + * Touch slide Listener + */ + OnTouchSpeedListener onTouchSpeedListener = new OnTouchSpeedListener() { + @Override + public void touchSpeed(int velocityX, int velocityY) { + finishActivity(); + } + }; + private OnClickListener mOnClickListener = new OnClickListener() { + @Override + public void onClick(View view) { + + switch (view.getId()) { + case R.id.tv_close: + + finishActivity(); + return; + case R.id.tv_invite_message: + + mShareHelper.shareSMS(mContext, "", mShareUrl); + finishActivity(); + break; + case R.id.tv_invite_weixin: + mShareHelper.shareWeiXin(mShareUrl); + finishActivity(); + break; + case R.id.tv_copy_link: + Intent intent = new Intent(); + intent.putExtra("shareUrl", mShareUrl); + setResult(ExtraType.RESULT_CODE_ROOM_SETTING_COPY_LINK, intent); + + finish(); + break; + + default: + break; + } + + } + }; + + public void finishActivity() { + finish(); + overridePendingTransition(R.anim.activity_close_enter, + R.anim.activity_close_exit); + + } + + ; } diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/JoinMeetingActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/JoinMeetingActivity.java index c8aa6c8..1a1473b 100644 --- a/app/src/main/java/org/dync/teameeting/ui/activity/JoinMeetingActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/activity/JoinMeetingActivity.java @@ -1,33 +1,51 @@ package org.dync.teameeting.ui.activity; -import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.os.Message; import android.util.Log; import android.view.KeyEvent; import android.view.View; +import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.ImageButton; import android.widget.TextView; +import android.widget.Toast; + +import com.orhanobut.logger.Logger; import org.dync.teameeting.R; import org.dync.teameeting.TeamMeetingApp; -import org.dync.teameeting.sdkmsgclientandroid.jni.JMClientType; +import org.dync.teameeting.bean.MeetingListEntity; +import org.dync.teameeting.sdkmsgclient.msgs.TMMsgSender; +import org.dync.teameeting.structs.EventType; +import org.dync.teameeting.structs.JoinActType; + +import java.util.Timer; +import java.util.TimerTask; -public class JoinMeetingActivity extends Activity implements View.OnClickListener{ +import de.greenrobot.event.EventBus; + +public class JoinMeetingActivity extends BaseActivity implements View.OnClickListener { private final static String TAG = "JoinMeetingActivity"; private boolean mDebug = TeamMeetingApp.mIsDebug; private EditText mEtMeetingId; - private ImageButton mIbtnJoinMeeting,mIbtnback; - private final String mPass = TeamMeetingApp.getmSelfData().getAuthorization(); + private ImageButton mIbtnJoinMeeting, mIbtnback; + private TMMsgSender mMsgSender; + private String mMeetingId; + private String mMeetingName; + private String mAnyrtcid; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_join_meeting); inintView(); + inintdata(); } - private void inintView(){ + private void inintView() { mEtMeetingId = (EditText) findViewById(R.id.et_meeting_id); mIbtnJoinMeeting = (ImageButton) findViewById(R.id.ibtn_join_meeting); mIbtnback = (ImageButton) findViewById(R.id.ibtn_back); @@ -36,60 +54,165 @@ private void inintView(){ mEtMeetingId.setOnEditorActionListener(mOnEditorActionListener); } + private void inintdata() { + mMsgSender = TeamMeetingApp.getmMsgSender(); + + mEtMeetingId.setFocusable(true); + mEtMeetingId.setFocusableInTouchMode(true); + mEtMeetingId.requestFocus(); + + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + public void run() { + InputMethodManager inputManager = (InputMethodManager) mEtMeetingId.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + inputManager.showSoftInput(mEtMeetingId, 0); + } + + }, 998); + + } @Override public void onClick(View view) { - switch (view.getId()){ - + switch (view.getId()) { case R.id.ibtn_back: finish(); break; case R.id.ibtn_join_meeting: - joinMeeting(); + meetingDealWith(); break; - - } - - } - TextView.OnEditorActionListener mOnEditorActionListener = new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { - - joinMeeting(); + meetingDealWith(); return false; } }; + /** + * + */ + private void meetingDealWith() { + mMeetingId = mEtMeetingId.getText().toString(); + if (mMeetingId.length() == 10) { + if (mDebug) + Log.e(TAG, "meetingDealWith: " + getSign() + " mMeetingId " + mMeetingId); + int position = TeamMeetingApp.getmSelfData().getMeetingIdPosition(mMeetingId); + if (position >= 0) { + Message msg = new Message(); + msg.what = EventType.JOIN_MEETINGID_EXIST.ordinal(); + msg.obj = position; + EventBus.getDefault().post(msg); + finish(); + } else { + mNetWork.getMeetingInfo(mMeetingId, JoinActType.JOIN_START_ACTIVITY); + } + } else { + Toast.makeText(JoinMeetingActivity.this, R.string.str_meeting_id_error, Toast.LENGTH_SHORT).show(); + } + } + + /** * joinMeeting */ - private void joinMeeting(){ - - String meetingId = mEtMeetingId.getText().toString(); - if(meetingId.length()!=0&&meetingId!=null){ - String userId = TeamMeetingApp.getTeamMeetingApp().getDevId(); - int code = StartFlashActivity.mMsgSender.TMOptRoom(JMClientType.TMCMD_ENTER,userId, mPass, meetingId,""); - if(code==0){ - if(mDebug){ - Log.e(TAG, "joinMeeting: "+"TMEnterRoom Successed"); + private void joinMeeting() { + String userId = TeamMeetingApp.getTeamMeetingApp().getDevId(); + Intent intent = new Intent(JoinMeetingActivity.this, MeetingActivity.class); + +/* intent.putExtra("meetingId", mMeetingId); + intent.putExtra("userId", userId); + intent.putExtra("meetingName", mMeetingName); + intent.putExtra("anyrtcid", mAnyrtcid); + + Log.e(TAG, "joinMeeting: " + mAnyrtcid + "meetingName" + mMeetingName + "meetingId" + mMeetingId);*/ + Bundle bundle = new Bundle(); + bundle.putSerializable("meetingListEntity", TeamMeetingApp.getmSelfData().getMeetingListEntity()); + intent.putExtras(bundle); + startActivity(intent); + finish(); + } + + /** + * get meetng information success + * + * @param msg + */ + private void getMeetingInfoSuccess(Message msg) { + MeetingListEntity meetingListEntity = TeamMeetingApp.getmSelfData().getMeetingListEntity(); + Logger.e(meetingListEntity.toString()); + int usable = meetingListEntity.getMeetenable(); + mAnyrtcid = meetingListEntity.getAnyrtcid(); + mMeetingName = meetingListEntity.getMeetname(); + switch (usable) { + case 0://no + Toast.makeText(JoinMeetingActivity.this, R.string.str_meeting_deleted, Toast.LENGTH_SHORT).show(); + break; + case 1://yes + if (msg.getData().getString(JoinActType.JOIN_TYPE) == JoinActType.JOIN_START_ACTIVITY) { + mNetWork.insertUserMeetingRoom(getSign(), mMeetingId, JoinActType.JOIN_INSERT_START_ACTIVITY); } - }else if(mDebug){ - Log.e(TAG, "joinMeeting: "+"TMEnterRoom Failed"); - } - Intent intent = new Intent(JoinMeetingActivity.this,MeetingActivity.class); - intent.putExtra("meetingId", meetingId); - intent.putExtra("userId", userId); - startActivity(intent); + break; + case 2://private + Toast.makeText(JoinMeetingActivity.this, R.string.str_meeting_privated, Toast.LENGTH_SHORT).show(); + break; } - else{ + } + + @Override + public void onEventMainThread(Message msg) { + String join_insert_type; + switch (EventType.values()[msg.what]) { + case MSG_GET_MEETING_INFO_SUCCESS: + if (mDebug) + Log.e(TAG, "MSG_GET_MEETING_INFO_SUCCESS"); + getMeetingInfoSuccess(msg); + break; + case MSG_GET_MEETING_INFO_FAILED: + if (mDebug) + Log.e(TAG, "MSG_GET_MEETING_INFO_FAILED"); + join_insert_type = msg.getData().getString(JoinActType.JOIN_TYPE); + if (join_insert_type == JoinActType.JOIN_START_ACTIVITY) { + Toast.makeText(this, R.string.meeting_not_exist, Toast.LENGTH_SHORT).show(); + } + break; + case MSG_INSERT_USER_MEETING_ROOM_SUCCESS: + if (mDebug) + Log.e(TAG, "MSG_INSERT_USER_MEETING_ROOM_SUCCESS"); + join_insert_type = msg.getData().getString(JoinActType.JOIN_INSERT_TYPE); + if (join_insert_type == JoinActType.JOIN_INSERT_START_ACTIVITY) { + joinMeeting(); + } + break; + + case MSG_INSERT_USER_MEETING_ROOM_FAILED: + if (mDebug) + Log.e(TAG, "MSG_INSERT_USER_MEETING_ROOM_FAILED"); + join_insert_type = msg.getData().getString(JoinActType.JOIN_INSERT_TYPE); + if (join_insert_type == JoinActType.JOIN_INSERT_START_ACTIVITY) { + Toast.makeText(JoinMeetingActivity.this, msg.getData().getString("message"), Toast.LENGTH_SHORT).show(); + } + break; + + case MSG_NET_WORK_TYPE: + if (mDebug) + Log.e(TAG, "MSG_NET_WORK_TYPE"); + int type = msg.getData().getInt("net_type"); + break; + + case MSG_RESPONS_ESTR_NULl: + if (mDebug) + Log.e(TAG, "MSG_RESPONS_ESTR_NULl"); + break; + + default: + break; } } - } diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/MainActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/MainActivity.java index f9ef51b..2a35ada 100644 --- a/app/src/main/java/org/dync/teameeting/ui/activity/MainActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/activity/MainActivity.java @@ -1,18 +1,24 @@ package org.dync.teameeting.ui.activity; import android.app.Activity; +import android.app.Dialog; import android.content.Context; import android.content.Intent; +import android.content.res.Configuration; import android.graphics.Rect; +import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.text.Editable; +import android.text.Selection; import android.util.DisplayMetrics; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewTreeObserver.OnGlobalLayoutListener; +import android.view.Window; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; @@ -23,36 +29,48 @@ import android.widget.TextView.OnEditorActionListener; import android.widget.Toast; -import com.google.gson.Gson; +import com.orhanobut.logger.Logger; +import com.pgyersdk.javabean.AppBean; +import com.pgyersdk.update.PgyUpdateManager; +import com.pgyersdk.update.UpdateManagerListener; import org.dync.teameeting.R; -import org.dync.teameeting.sdkmsgclientandroid.jni.JMClientType; -import org.dync.teameeting.structs.Intent_KEY; -import org.dync.teameeting.ui.adapter.SwipeListAdapter; -import org.dync.teameeting.ui.adapter.SwipeListAdapter.SwipeListOnClick; -import org.dync.teameeting.http.NetWork; import org.dync.teameeting.TeamMeetingApp; -import org.dync.teameeting.bean.MeetingList; -import org.dync.teameeting.ui.helper.DialogHelper; +import org.dync.teameeting.bean.MeetingListEntity; +import org.dync.teameeting.bean.ReqSndMsgEntity; +import org.dync.teameeting.db.CRUDChat; +import org.dync.teameeting.sdkmsgclient.jni.JMClientType; +import org.dync.teameeting.sdkmsgclient.msgs.TMMsgSender; import org.dync.teameeting.structs.EventType; import org.dync.teameeting.structs.ExtraType; +import org.dync.teameeting.structs.Intent_KEY; +import org.dync.teameeting.structs.JoinActType; import org.dync.teameeting.structs.NetType; +import org.dync.teameeting.ui.adapter.SwipeListAdapter; +import org.dync.teameeting.ui.adapter.SwipeListAdapter.SwipeListOnClick; +import org.dync.teameeting.ui.helper.DialogHelper; +import org.dync.teameeting.utils.LocalUserInfo; +import org.dync.teameeting.utils.MeetingHelper; import org.dync.teameeting.utils.ScreenUtils; +import org.json.JSONException; +import org.json.JSONObject; import java.util.ArrayList; -import java.util.Collections; import java.util.List; +import java.util.Timer; +import java.util.TimerTask; +import cn.jpush.android.api.JPushInterface; import cn.pedant.SweetAlert.SweetAlertDialog; import cn.pedant.SweetAlert.SweetAlertDialog.OnSweetClickListener; -public class MainActivity extends BaseActivity -{ +public class MainActivity extends BaseActivity { public final static int UPDATE_COPY_LINK = 0X01; public final static int UPDATE_RENAME_SHOW = 0X02; public final static int UPDATE_LISTVIEW_SCROLL = 0X03; public final static int UPDATE_RENAME_END = 0X04; - public final static int SHOW_EDIT_TEXT_TIME = 2000; + public final static int SHOW_EDIT_TEXT_TIME = 1000; + public final static int ENTER_NEW_ROOM = 0X05; private final static String TAG = "MainActivity"; private boolean mDebug = TeamMeetingApp.mIsDebug; @@ -66,32 +84,37 @@ public class MainActivity extends BaseActivity private ImageButton mJoinMeeting; private Context mContext; - private List mRoomMeetingList = new ArrayList(); + private List mRoomMeetingList = new ArrayList(); private InputMethodManager mIMM; private long mExitTime = 0; - private Boolean mCreateRoomFlag = false; - private Boolean mReNameFlag = false; + private boolean mCreateRoomFlag = false; + private boolean mReNameFlag = false; + private boolean mUrlInsertMeegting = false; private boolean mSoftInputFlag = false; private int mDy; private int mPosition; - private String mShareUrl = "没有设置连接"; - private final String mPass = getSign(); private String mUserId = TeamMeetingApp.getTeamMeetingApp().getDevId(); + private TMMsgSender mMsgSender; + + private String mUrlMeetingId; + private int mNotifTags = 0; + private String mUrlMeetingName; - private Handler mUIHandler = new Handler() - { - public void handleMessage(Message msg) - { - switch (msg.what) - { + private SweetAlertDialog mWarningCancel; + private boolean isSetUserName; + private boolean isNotifactionChack; + + + private Handler mUIHandler = new Handler() { + public void handleMessage(Message msg) { + switch (msg.what) { case UPDATE_COPY_LINK: break; case UPDATE_RENAME_SHOW: int position = msg.getData().getInt("position"); mRoomMeetingList.get(position).setmMeetType2(2); - if (mDebug) - { + if (mDebug) { Log.e(TAG, "handleMessage:position " + position); } mAdapter.notifyDataSetChanged(); @@ -107,115 +130,321 @@ public void handleMessage(Message msg) mAdapter.notifyDataSetChanged(); if (mDy == 0) mListView.smoothScrollToPositionFromTop(0, 0, 1000); - else - { + else { mListView.animate().translationYBy(mDy).setDuration(10); mListView.smoothScrollToPositionFromTop(0, 0, 500); } break; - + case ENTER_NEW_ROOM: + if (mDebug) + Log.e(TAG, "handleMessage:ENTER_NEW_ROOM"); + msgNotificatinMain(msg); + break; default: break; } } - - ; }; - @Override - protected void onCreate(Bundle savedInstanceState) - { + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + TeamMeetingApp.isInitFalg = true; mContext = this; setContentView(R.layout.activity_main); - + TeamMeetingApp.setMainActivity(this); initdata(); inintLayout(); + if (mDebug) { + Log.e(TAG, "onCreate: " + TeamMeetingApp.getmSelfData().getMeetingLists().toString()); + } + updataApp(); + } + + + /** + * 再次启动 + * + * @param intent + */ + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + String urlMeetingId = intent.getStringExtra("urlMeetingId"); if (mDebug) - { - Log.e(TAG, "onCreate: MainActivity"); + Log.e(TAG, "onNewIntent-----: urlMeetingId" + urlMeetingId); + if (urlMeetingId != null) { + upDataMeetingList(); + int position = MeetingHelper.getMeetingIdPosition(mRoomMeetingList, urlMeetingId); + if (position >= 0) { + meetingPositiotrue(position); + } else { + Toast.makeText(mContext, R.string.str_join_room_wait, Toast.LENGTH_LONG); + mNetWork.getMeetingInfo(urlMeetingId, JoinActType.JOIN_LINK_JOIN_ACTIVITY); + } } } - private void initdata() - { + @Override + protected void onRestart() { + super.onRestart(); + Log.e(TAG, "onRestart: "); + } + + private void updataApp() { + PgyUpdateManager.register(MainActivity.this, new UpdateManagerListener() { + @Override + public void onUpdateAvailable(final String result) { + final AppBean appBean = getAppBeanFromString(result); + new SweetAlertDialog(mContext, + SweetAlertDialog.WARNING_TYPE).setTitleText("版本更新") + .setConfirmText("取消") + .setContentText(appBean.getReleaseNote()) + .setConfirmClickListener(new OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + sweetAlertDialog.dismiss(); + } + }) + .setCancelText("升级") + .setCancelClickListener(new OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + sweetAlertDialog.dismiss(); + startDownloadTask(MainActivity.this, appBean.getDownloadURL()); + } + }).show(); + } + + @Override + public void onNoUpdateAvailable() { + + } + }); + + } + + /** + * @param event + * @return + */ + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + + int keyCode = event.getKeyCode(); + if (event.getAction() == KeyEvent.ACTION_UP) { + + } else { + if (keyCode == KeyEvent.KEYCODE_DPAD_UP) { + //Toast.makeText(this, "上", Toast.LENGTH_SHORT).show(); + } else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { + //Toast.makeText(this, "左", Toast.LENGTH_SHORT).show(); + } else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { + //Toast.makeText(this, "右", Toast.LENGTH_SHORT).show(); + } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { + //Toast.makeText(this, "下", Toast.LENGTH_SHORT).show(); + } else if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_ENTER) { + // Toast.makeText(this, "ok", Toast.LENGTH_SHORT).show(); + } + } + return super.dispatchKeyEvent(event); + } + + private void initdata() { + mWarningCancel = DialogHelper.createWarningCancel(mContext); + + upDataMeetingList(); + + mMsgSender = TeamMeetingApp.getmMsgSender(); + isSetUserName = LocalUserInfo.getInstance(mContext).getUserInfoBoolean(LocalUserInfo.SET_USER_NAME); Intent intent = getIntent(); - String meetingListStr = intent.getExtras().getString(NetWork.MEETING_LIST); - upDataMeetingList(meetingListStr); + isNotifactionChack = intent.getBooleanExtra("isNotifactionChack", false); + mUrlMeetingId = intent.getStringExtra("urlMeetingId"); + + urlMeetingIdEnterRoom(intent); + } + + /** + * url enter room 判断 + * + * @param intent + */ + private void urlMeetingIdEnterRoom(Intent intent) { + if (isNotifactionChack) { + int position = MeetingHelper.getMeetingIdPosition(mRoomMeetingList, mUrlMeetingId); + mNotifTags = intent.getIntExtra("tags", 0); + if (position > -1) { + enterMeetingActivity(position); + } + return; + } + + if (mUrlMeetingId != null) { + mUrlInsertMeegting = true; + if (mDebug) { + Log.e(TAG, "initdata: mUrlMeetingId " + mUrlMeetingId); + } + int position = TeamMeetingApp.getmSelfData().getMeetingIdPosition(mUrlMeetingId); + if (position >= 0) { + meetingPositiotrue(position); + } else { + Toast.makeText(mContext, R.string.str_join_room_wait, Toast.LENGTH_LONG); + mNetWork.getMeetingInfo(mUrlMeetingId, JoinActType.JOIN_LINK_JOIN_ACTIVITY); + } + } } + /** * inintLayout */ - private void inintLayout() - { + private void inintLayout() { mIMM = (InputMethodManager) MainActivity.this .getSystemService(MainActivity.INPUT_METHOD_SERVICE); - createNetErroDilaog(); + mNetErrorSweetAlertDialog = DialogHelper.createNetErroDilaog(this, sweetClickListener); mRlMain = (RelativeLayout) findViewById(R.id.rl_main); mCreateRoom = (EditText) findViewById(R.id.et_create_room); mRoomCancel = (TextView) findViewById(R.id.tv_cancel_create_room); mListView = (ListView) findViewById(R.id.lv_listView); mListView.setEmptyView(findViewById(R.id.empty_layout)); mGetRoom = (Button) findViewById(R.id.btn_get_room); - mJoinMeeting =(ImageButton) findViewById(R.id.ibtn_join_meeting); + mJoinMeeting = (ImageButton) findViewById(R.id.ibtn_join_meeting); mGetRoom.setOnClickListener(mOnClickListener); mRoomCancel.setOnClickListener(mOnClickListener); mJoinMeeting.setOnClickListener(mOnClickListener); + // initSwipeRefreshLayout(); mAdapter = new SwipeListAdapter(mContext, mRoomMeetingList, mSwipeListOnClick); mListView.setAdapter(mAdapter); + addRlMainRlMain(); + + if (isSetUserName) { + showupdateNicknameDialog(); + } + } + + /** + * upDate Name Dialog + */ + private void showupdateNicknameDialog() { + final Dialog dialog = new Dialog(this); + dialog.show(); + Window window = dialog.getWindow(); + window.setBackgroundDrawable(new ColorDrawable(0)); + dialog.setCancelable(false); + dialog.setContentView(R.layout.dialog_ecaluation); + + final EditText editText = (EditText) window.findViewById(R.id.et_user_name); + final String uname = TeamMeetingApp.getmSelfData().getInformation().getUname(); + editText.setText(uname); + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + public void run() { + InputMethodManager inputManager = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + inputManager.showSoftInput(editText, 0); + } + + }, 500); + Editable etext = editText.getText(); + int position = etext.length(); + Selection.setSelection(etext, position); + + Button button = (Button) window.findViewById(R.id.confirm_button); + button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + String s = editText.getText().toString(); + if (!s.equals("")) { + + if (s.equals(uname)) { + LocalUserInfo.getInstance(mContext).setUserInfoBoolean(LocalUserInfo.SET_USER_NAME, false); + } else { + mNetWork.updateNickname(getSign(), s.trim()); + mMsgSender.TMSetNickName(s.trim()); + } + + dialog.cancel(); + return; + } else { + Toast.makeText(mContext, "不能为空", Toast.LENGTH_SHORT).show(); + } + + } + }); + + } + + private void addRlMainRlMain() { mRlMain.getViewTreeObserver().addOnGlobalLayoutListener( - new OnGlobalLayoutListener() - { + new OnGlobalLayoutListener() { @Override - public void onGlobalLayout() - { + public void onGlobalLayout() { - if (isKeyboardShown(mRlMain.getRootView())) - { + if (isKeyboardShown(mRlMain.getRootView())) { if (mDebug) Log.e(TAG, "isKeyboardShown open keyboard"); mSoftInputFlag = true; - } else - { + } else { if (mDebug) Log.e(TAG, "isKeyboardShown close keyboard"); - if (mReNameFlag && mSoftInputFlag) - { + if (mReNameFlag && mSoftInputFlag) { mUIHandler.sendEmptyMessageDelayed( UPDATE_RENAME_END, 500); mReNameFlag = false; mRoomMeetingList.get(mPosition).setmMeetType2(1); } - - if (mSoftInputFlag) - { + if (mSoftInputFlag) { mCreateRoom.setVisibility(View.GONE); mRoomCancel.setVisibility(View.GONE); mSoftInputFlag = false; } } - } }); } + @Override + protected void onStart() { + super.onStart(); + LocalUserInfo.getInstance(this).setUserInfoBoolean(LocalUserInfo.MAIN_ACTIVE, true); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + + boolean pushStopped = JPushInterface.isPushStopped(this); + if (mDebug) + Log.e(TAG, "onDestroy=--- !+pushStopped" + pushStopped); + LocalUserInfo.getInstance(this).setUserInfoBoolean(LocalUserInfo.MAIN_ACTIVE, false); + TMMsgSender tmMsgSender = TeamMeetingApp.getmMsgSender(); + if (tmMsgSender != null) { + tmMsgSender.TMUnin(); + } + System.exit(0); + } + + + private void meetingPositiotrue(final int position) { + if (mDebug) { + Log.e(TAG, "initdata:+position " + position); + } + enterMeetingActivity(position); + + } + /** * isKeyboardShown * * @param rootView * @return true soft keyboard is open false soft keyboard is open */ - - private boolean isKeyboardShown(View rootView) - { + private boolean isKeyboardShown(View rootView) { final int softKeyboardHeight = 100; Rect r = new Rect(); rootView.getWindowVisibleDisplayFrame(r); @@ -229,42 +458,41 @@ private boolean isKeyboardShown(View rootView) * * @param position */ - - private void listViewSetScroll(int position) - { + private void listViewSetScroll(int position) { int itemHeight = getItemHeight(mListView); float temp = mListView.getHeight() / (float) getItemHeight(mListView); int maxItemTop = 0; - + int d = 0; int visibleItem = (int) Math.ceil(temp); - if (mAdapter.getCount() < visibleItem) - { + if (mAdapter.getCount() < visibleItem) { mDy = itemHeight * position; + d = (int) (mDy * 0.5); mUIHandler.sendEmptyMessageDelayed(UPDATE_LISTVIEW_SCROLL, 100); + sendMsgUpDateReadMeShow(position, d); return; - } else - { + } else { maxItemTop = mAdapter.getCount() - visibleItem; } - if (position <= maxItemTop) - { + if (position <= maxItemTop) { mDy = 0; - mListView.smoothScrollToPositionFromTop(position, 0, 2000); - } else - { + int i = maxItemTop - position; + d = (int) (i * itemHeight * 0.5); + mListView.smoothScrollToPositionFromTop(position, 0, SHOW_EDIT_TEXT_TIME); + sendMsgUpDateReadMeShow(position, SHOW_EDIT_TEXT_TIME); + + } else { int incompleteItemheight = mListView.getHeight() - (visibleItem - 1) * itemHeight; mDy = itemHeight * (position - maxItemTop - 1) + incompleteItemheight; + int posDiff = position - maxItemTop; + d = (int) (posDiff * itemHeight * 0.5); mListView.setSelection(mListView.getBottom()); - mUIHandler.sendEmptyMessageDelayed(UPDATE_LISTVIEW_SCROLL, 1500); - + mUIHandler.sendEmptyMessageDelayed(UPDATE_LISTVIEW_SCROLL, d); + sendMsgUpDateReadMeShow(position, SHOW_EDIT_TEXT_TIME + d); Log.e(TAG, "maxItemTop " + maxItemTop + " incompleteItemheight " + incompleteItemheight); - // mListView.smoothScrollToPositionFromTop(maxItemTop, 0, 1000); - // mListView.smoothScrollToPosition(maxItemTop-1); - // mListView.animate().translationY(-mDy).setDuration(2000); } @@ -277,10 +505,8 @@ private void listViewSetScroll(int position) * @param listView * @return */ - private int getItemHeight(final ListView listView) - { + private int getItemHeight(final ListView listView) { View view = mAdapter.getView(0, null, listView); - view.measure(0, 0); int i = (int) ScreenUtils.dip2Dimension(10.0f, this); Log.e(TAG, " i " + i); @@ -292,19 +518,13 @@ private int getItemHeight(final ListView listView) * * @return */ - private boolean hideKeyboard() - { - if (mIMM.isActive(mCreateRoom)) - { - mIMM.hideSoftInputFromWindow(this.getCurrentFocus() - .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); + private boolean hideKeyboard() { + if (mIMM.isActive(mCreateRoom)) { + mIMM.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); mIMM.restartInput(mCreateRoom); - - // mIMM.hideSoftInputFromWindow(mCreateRoom.getWindowToken(), 0); mCreateRoom.setVisibility(View.GONE); mRoomCancel.setVisibility(View.GONE); mGetRoom.setVisibility(View.VISIBLE); - return true; } @@ -314,15 +534,12 @@ private boolean hideKeyboard() /** * OnClickListener */ - private OnClickListener mOnClickListener = new OnClickListener() - { + private OnClickListener mOnClickListener = new OnClickListener() { @Override - public void onClick(View view) - { + public void onClick(View view) { // TODO Auto-generated method stub - switch (view.getId()) - { + switch (view.getId()) { case R.id.tv_cancel_create_room: mIMM.hideSoftInputFromWindow(mCreateRoom.getWindowToken(), 0); @@ -345,10 +562,20 @@ public void onClick(View view) break; case R.id.ibtn_join_meeting: - Intent intent = new Intent(mContext,JoinMeetingActivity.class); + /** + * joinMeeting + */ + + /*String userId = TeamMeetingApp.getTeamMeetingApp().getDevId(); + Intent intent = new Intent(MainActivity.this, MeetingActivity.class); + intent.putExtra("meetingId", "4011926224"); + intent.putExtra("userId", userId); + intent.putExtra("meetingName", "1458179104626"); + intent.putExtra("anyrtcid", "800002606345"); + startActivity(intent);*/ + Intent intent = new Intent(mContext, JoinMeetingActivity.class); startActivity(intent); break; - default: break; } @@ -358,68 +585,28 @@ public void onClick(View view) /** * SwipeListOnClick */ - private SwipeListOnClick mSwipeListOnClick = new SwipeListOnClick() - { + private SwipeListOnClick mSwipeListOnClick = new SwipeListOnClick() { @Override - public void onItemClickListener(View v, int position) - { - int code; + public void onItemClickListener(View v, int position) { String meetingId; - String meetingName; - - if (hideKeyboard()) - { + if (hideKeyboard()) { return; } - - Intent intent; - switch (v.getId()) - { + switch (v.getId()) { case R.id.fl_front: - meetingName = mRoomMeetingList.get(position).getMeetname(); - meetingId = mRoomMeetingList.get(position).getMeetingid(); - // mUserId = mRoomMeetingList.get(position).getMeetinguserid(); - if (mDebug) - { - Log.i(TAG, "meetingId-fl_front" + meetingId); + if (mDebug) { + Log.i(TAG, "meetingId-fl_front" + position); } - code = StartFlashActivity.mMsgSender.TMOptRoom(JMClientType.TMCMD_ENTER,mUserId, mPass, meetingId,""); - if(code==0){ - if(mDebug){ - Log.e(TAG, "onItemClickListener: "+"TMEnterRoom Successed"); - } - }else if(mDebug){ - Log.e(TAG, "onItemClickListener: "+"TMEnterRoom Failed"); - } - - // 推送接口 - // 跳转 - intent = new Intent(mContext, MeetingActivity.class); - intent.putExtra("meetingName", meetingName); - intent.putExtra("meetingId", meetingId); - intent.putExtra("userId", mUserId); - mContext.startActivity(intent); - + enterMeetingActivity(position); break; - case R.id.btn_delete: mSign = getSign(); meetingId = mRoomMeetingList.get(position).getMeetingid(); //mUserId = mRoomMeetingList.get(position).getMeetinguserid(); + mNetWork.deleteRoom(mSign, meetingId); - mRoomMeetingList.remove(position); - mAdapter.notifyDataSetChanged(); - code = StartFlashActivity.mMsgSender.TMOptRoom(JMClientType.TMCMD_DESTROY,mUserId, mPass, meetingId,""); - if(code==0){ - if(mDebug){ - Log.e(TAG, "onItemClickListener: "+"TMDestroyRoom Successed"); - } - }else if(mDebug){ - Log.e(TAG, "onItemClickListener: "+"TMDestroyRoom Failed"); - } break; - case R.id.imgbtn_more_setting: moreSetting(position); break; @@ -429,8 +616,7 @@ public void onItemClickListener(View v, int position) String newName = reName.getText().toString(); String oldName = mRoomMeetingList.get(position).getMeetname(); - if (!newName.equals(oldName)) - { + if (!newName.equals(oldName)) { mSign = getSign(); meetingId = mRoomMeetingList.get(position).getMeetingid(); @@ -451,101 +637,126 @@ public void onItemClickListener(View v, int position) } }; + private void enterMeetingActivity(int position) { + MeetingListEntity meetingListEntity = mRoomMeetingList.get(position); + String meetingName = meetingListEntity.getMeetname(); + String meetingId = meetingListEntity.getMeetingid(); + String anyrtcId = meetingListEntity.getAnyrtcid(); + mNetWork.updateUserMeetingJointime(getSign(), meetingId, position); + + int owner = meetingListEntity.getOwner(); + if (owner == 0) { + mNetWork.getMeetingInfo(meetingId, position, JoinActType.JOIN_ENTER_ACTIVITY); + } else { + //statrMeetingActivity(meetingName, meetingId, anyrtcId); + statrMeetingActivity(meetingListEntity); + } + } + + + private void statrMeetingActivity(MeetingListEntity meetingListEntity) { + Intent intent = new Intent(mContext, MeetingActivity.class); + /* intent.putExtra("meetingName", meetingName); + intent.putExtra("meetingId", meetingId); + intent.putExtra("userId", mUserId); + intent.putExtra("anyrtcId", anyrtcId);*/ + if (isNotifactionChack) { + intent.putExtra("tags", mNotifTags); + isNotifactionChack = false; + } + Bundle bundle = new Bundle(); + bundle.putSerializable("meetingListEntity", meetingListEntity); + + intent.putExtras(bundle); + mContext.startActivity(intent); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + Log.e(TAG, "onConfigurationChanged: " + newConfig); + super.onConfigurationChanged(newConfig); + } /** - * soft keyboard Listener + * soft keyboard Listenerge */ - OnEditorActionListener editorActionListener = new OnEditorActionListener() - { + OnEditorActionListener editorActionListener = new OnEditorActionListener() { @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) - { - + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { String meetingName = mCreateRoom.getText().toString(); - - if (meetingName.length() == 0 || meetingName == null) - { - meetingName = "Untitled room"; + if (meetingName.length() == 0 || meetingName == null) { + Toast.makeText(mContext, R.string.toast_plase_roon_name, Toast.LENGTH_SHORT).show(); + return false; } mSign = getSign(); if (mDebug) - if (mDebug) - Log.e(TAG, "onEditorAction: roomName" + meetingName + mSign); - + Log.e(TAG, "onEditorAction: roomName" + meetingName + mSign); applyRoom(meetingName); - return false; } }; - private void applyRoom(String meetingName) - { + private void applyRoom(String meetingName) { mIMM.hideSoftInputFromWindow(mCreateRoom.getWindowToken(), 0); mCreateRoom.setVisibility(View.GONE); mRoomCancel.setVisibility(View.GONE); + String pushable = "1"; - String meetdesc = "";//会议描述 - String meetenablde = "1";//是否可用或者私密 + String meetenablde = "1"; - MeetingList.MeetingListEntity meetingList = new MeetingList.MeetingListEntity(); + MeetingListEntity meetingList = new MeetingListEntity(); meetingList.setMeetname(meetingName); meetingList.setPushable(1); meetingList.setApplyTyep(false); + meetingList.setJointime(System.currentTimeMillis()); - mRoomMeetingList.add(0,meetingList); + mRoomMeetingList.add(0, meetingList); mAdapter.notifyDataSetChanged(); mListView.setSelection(0); mNetWork.applyRoom(mSign, meetingName, "0", "", meetenablde, pushable); - //创建房间问题。 + mCreateRoomFlag = true; } + + /** * moreSetting + * * @param position */ - private void moreSetting(int position) - { - Intent intent; - intent = new Intent(mContext, RoomSettingActivity.class); - MeetingList.MeetingListEntity meetingEntity = mRoomMeetingList.get(position); + private void moreSetting(int position) { + + Intent intent = new Intent(mContext, RoomSettingActivity.class); + MeetingListEntity meetingEntity = mRoomMeetingList.get(position); Bundle mBundle = new Bundle(); mBundle.putSerializable(Intent_KEY.MEETING_ENTY, meetingEntity); + intent.putExtras(mBundle); intent.putExtra(Intent_KEY.POSITION, position); + startActivityForResult(intent, ExtraType.REQUEST_CODE_ROOM_SETTING); ((Activity) mContext).overridePendingTransition(R.anim.activity_open_enter, R.anim.activity_open_exit); } - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { + public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK - && event.getAction() == KeyEvent.ACTION_DOWN) - { - if (hideKeyboard()) - { + && event.getAction() == KeyEvent.ACTION_DOWN) { + if (hideKeyboard()) { return false; } - if ((System.currentTimeMillis() - mExitTime) > 2000) - { + if ((System.currentTimeMillis() - mExitTime) > 2000) { Toast.makeText(this, R.string.exit_once_more, Toast.LENGTH_SHORT).show(); mExitTime = System.currentTimeMillis(); - } else - { + } else { mSign = getSign(); mNetWork.signOut(mSign); - String userid = TeamMeetingApp.getTeamMeetingApp().getDevId(); - StartFlashActivity.mMsgSender.TMLogout(userid, mPass); - if (mDebug) - Log.e(TAG, "Exit-signOut"); this.finish(); } return true; } - if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) - { + if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { return true; } return super.onKeyDown(keyCode, event); @@ -554,18 +765,21 @@ public boolean onKeyDown(int keyCode, KeyEvent event) /** * onActivityResult */ - protected void onActivityResult(int requestCode, int resultCode, Intent data) - { + protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - switch (resultCode) - { + switch (resultCode) { case ExtraType.RESULT_CODE_ROOM_SETTING_MESSAGE_INVITE: break; case ExtraType.RESULT_CODE_ROOM_SETTING_WEIXIN_INVITE: break; case ExtraType.RESULT_CODE_ROOM_SETTING_COPY_LINK: - DialogHelper.onClickCopy(MainActivity.this, mShareUrl); + String shareurl = data.getStringExtra("shareUrl"); + if (mDebug) { + Log.e(TAG, "onActivityResult: shareurl " + shareurl); + } + + DialogHelper.onClickCopy(MainActivity.this, shareurl); break; case ExtraType.RESULT_CODE_ROOM_SETTING_NOTIFICATION: break; @@ -573,11 +787,19 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) settingReName(data); break; case ExtraType.RESULT_CODE_ROOM_SETTING_DELETE: + if (mDebug) + Log.e(TAG, "RESULT_CODE_ROOM_SETTING_DELETE: 关闭"); seetingDeleteRoom(data); + break; case ExtraType.RESULT_CODE_ROOM_SETTING_CLOSE: if (mDebug) - Log.e(TAG, "onActivityResult: 关闭"); - getListNetWork(); + Log.e(TAG, "onActivityResult-Seeting: 关闭"); + mAdapter.notifyDataSetChanged(); + break; + case ExtraType.REQUEST_CODE_ROOM_MEETING: + if (mDebug) + Log.e(TAG, "onActivityResult: -Meeting 关闭"); + mAdapter.notifyDataSetChanged(); break; default: break; @@ -586,26 +808,27 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) } - private void settingReName(Intent data) - { - String meetingId; + private void settingReName(Intent data) { + mReNameFlag = true; mSign = TeamMeetingApp.getmSelfData().getAuthorization(); int position = data.getIntExtra("position", 0); mPosition = position; - meetingId = data.getStringExtra("meetingId"); - String meetingName = data.getStringExtra("meetingName"); listViewSetScroll(position); + } + + private void sendMsgUpDateReadMeShow(int position, int delayed) { Message msg = new Message(); msg.what = UPDATE_RENAME_SHOW; Bundle bundle = new Bundle(); bundle.putInt("position", position); msg.setData(bundle); - mUIHandler.sendMessageDelayed(msg, SHOW_EDIT_TEXT_TIME); + mUIHandler.sendMessageDelayed(msg, delayed); } - private void seetingDeleteRoom(Intent data) - { + private void seetingDeleteRoom(Intent data) { + if (mDebug) + Log.e(TAG, "seetingDeleteRoom: "); mSign = getSign(); int position = data.getIntExtra("position", 0); String meetingId = data.getStringExtra("meetingId"); @@ -613,117 +836,184 @@ private void seetingDeleteRoom(Intent data) mRoomMeetingList.remove(position); mAdapter.notifyDataSetChanged(); - String userId = mRoomMeetingList.get(position).getMeetinguserid(); - int code = StartFlashActivity.mMsgSender.TMOptRoom(JMClientType.TMCMD_DESTROY,mUserId, mPass, meetingId,""); - if(code==0){ - if(mDebug){ - Log.e(TAG, "onItemClickListener: "+"TMDestroyRoom Successed"); - } - }else if(mDebug){ - Log.e(TAG, "onItemClickListener: "+"TMDestroyRoom Failed"); - } - } - - - - private void getListNetWork() - { - mNetWork.getRoomLists(mSign, 1 + "", 20 + ""); - } - - private void getRoomListSuccess(Message msg) - { - Bundle bundle = msg.getData(); - String meetingListStr = bundle.getString(NetWork.MEETING_LIST); - upDataMeetingList(meetingListStr); - + private void getRoomListSuccess(Message msg) { + upDataMeetingList(); mAdapter.notifyDataSetChanged(); - startInvitePeopleActivity(); } - private void startInvitePeopleActivity() - { - if (mCreateRoomFlag) - { + private void startInvitePeopleActivity() { + if (mCreateRoomFlag) { Intent intent = new Intent(MainActivity.this, InvitePeopleActivity.class); - intent.putExtra("roomUrl", "www.baidu.com"); + String meetingId = mRoomMeetingList.get(0).getMeetingid(); + intent.putExtra("meetingId", meetingId); startActivityForResult(intent, ExtraType.RESULT_CODE_ROOM_SETTING_COPY_LINK); overridePendingTransition(R.anim.activity_open_enter, R.anim.activity_open_exit); mCreateRoomFlag = false; } } - private void upDataMeetingList(String meetingListStr) - { - if (mDebug) - Log.e(TAG, "upDataMeetingList: " + meetingListStr); - if (meetingListStr != null) - { - mSign = getSign(); - Gson gson = new Gson(); - MeetingList meetingList = gson.fromJson(meetingListStr, MeetingList.class); - List list = meetingList.getMeetingList(); - mRoomMeetingList.clear(); - mRoomMeetingList.addAll(list); + /** + * init roomMeetingList + */ + private void upDataMeetingList() { + List list = TeamMeetingApp.getmSelfData().getMeetingLists(); + for (int i = 0; i < list.size(); i++) { + list.get(i).initUnReadMessage(mContext); + } + if (list != null) { + //mRoomMeetingList.clear(); + //mRoomMeetingList.addAll(); + mRoomMeetingList = list; + Logger.e(list.toString() + "----" + mRoomMeetingList.toString()); } - if (mListView != null) - { + if (mListView != null) { mListView.setSelection(0); } - } + } + OnSweetClickListener sweetClickListener = new OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + sweetAlertDialog.dismiss(); + } + }; - public void netWorkTypeStart(int type) - { - if (type == NetType.TYPE_NULL.ordinal()) - { - mNetErrorSweetAlertDialog.show(); - } else - { - mSign = getSign(); - Log.e(TAG, "netWorkTypeStart: mSign" + mSign); - getListNetWork(); + @Override + public void onRequesageMsg(ReqSndMsgEntity requestMsg) { + switch (requestMsg.getTags()) { + case JMClientType.MCSENDTAGS_TALK: + if (mDebug) + Log.e(TAG, CRUDChat.selectLoadListSize(mContext, requestMsg.getRoom()) + "onEventMainThread :" + (CRUDChat.setectAllList(mContext)).size()); + if (requestMsg.getTags() == JMClientType.MCSENDTAGS_TALK) { + mAdapter.notifyNoReadMessageChanged(requestMsg.getRoom(), requestMsg.getNtime()); + } + break; + case JMClientType.MCSENDTAGS_LEAVE: + if (mDebug && requestMsg.getCmd() == 2) + Log.e(TAG, "Someone is leave room !!!!!!!!!!!!!!!"); + case JMClientType.MCSENDTAGS_ENTER: + mAdapter.notifyMemnumberSetChanged(requestMsg.getRoom(), requestMsg.getNmem()); + + if (mDebug && requestMsg.getCmd() == 1) + Log.e(TAG, "Someone is go room !!!!!!!!!!!!!!!"); + break; } } - void createNetErroDilaog() - { - mNetErrorSweetAlertDialog = new SweetAlertDialog(this, - SweetAlertDialog.ERROR_TYPE).setTitleText("网络已断开...") - .setConfirmText("ok").setContentText("请连接网络!") - .setConfirmClickListener(sweetClickListener); - } - OnSweetClickListener sweetClickListener = new OnSweetClickListener() - { - @Override - public void onClick(SweetAlertDialog sweetAlertDialog) - { - sweetAlertDialog.dismiss(); - // 设置是否一只提示 没有网络状态 - // mNetWork.getRoomList(mSign, 1 + "", 20 + ""); + private void getMeetingInfoSuccess(Message msg) { + MeetingListEntity meetingListEntity = TeamMeetingApp.getmSelfData().getMeetingListEntity(); + int usable = meetingListEntity.getMeetenable(); + mUrlMeetingName = meetingListEntity.getMeetname(); + String meetinId = meetingListEntity.getMeetingid(); + String anyrtcId = meetingListEntity.getAnyrtcid(); + String joinType; + switch (usable) { + case 0://no + //// TODO: 2016/3/22 会议已经被删除, 非房主应该删除 + Toast.makeText(mContext, R.string.str_meeting_deleted, Toast.LENGTH_SHORT).show(); + + break; + case 1: + + joinType = msg.getData().getString(JoinActType.JOIN_TYPE); + if (joinType == JoinActType.JOIN_ENTER_ACTIVITY) { + //statrMeetingActivity(mUrlMeetingName, meetinId, anyrtcId); + statrMeetingActivity(meetingListEntity); + } else if (joinType == JoinActType.JOIN_LINK_JOIN_ACTIVITY) { + mNetWork.insertUserMeetingRoom(getSign(), meetinId, JoinActType.JOIN_INSERT_LINK_JOIN_ACTIVITY); + } + break; + + case 2://private + + joinType = msg.getData().getString(JoinActType.JOIN_TYPE); + if (joinType == JoinActType.JOIN_ENTER_ACTIVITY) { + // statrMeetingActivity(mUrlMeetingName, meetinId, anyrtcId); + statrMeetingActivity(meetingListEntity); + } else if (joinType == JoinActType.JOIN_LINK_JOIN_ACTIVITY) { + Toast.makeText(mContext, R.string.str_meeting_privated, Toast.LENGTH_SHORT).show(); + } + + break; } - }; + } + private void msgNotificatinMain(Message msg) { + Log.e(TAG, "msgNotificatinMain: "); + Bundle bundle = msg.getData(); + String notifaction = bundle.getString(JPushInterface.EXTRA_EXTRA); + JSONObject json = null; + try { + json = new JSONObject(notifaction); + String meetingId = json.getString("roomid"); + Log.e(TAG, "msgNotificatinMain: " + meetingId); + mNotifTags = json.getInt("tags"); + isNotifactionChack = true; + int position = MeetingHelper.getMeetingIdPosition(mRoomMeetingList, meetingId); + enterMeetingActivity(position); + } catch (JSONException e) { + e.printStackTrace(); + } + } + /** + * netWork can user + * + * @param type + */ + public void netWorkTypeStart(int type) { + switch (NetType.values()[type]) { + case TYPE_WIFI: + if (mDebug) + Log.e(TAG, "TYPE_WIFI "); + netTyp = true; + break; + case TYPE_4G: + if (mDebug) + Log.e(TAG, "TYPE_4G "); + netTyp = true; + break; + case TYPE_3G: + if (mDebug) + Log.e(TAG, "TYPE_3G "); + netTyp = true; + break; + case TYPE_2G: + if (mDebug) + Log.e(TAG, "TYPE_2G "); + netTyp = true; + break; + case TYPE_NULL: + if (mDebug) + Log.e(TAG, "TYPE_NULL "); + netTyp = false; + progressDiloag(); + break; + case TYPE_UNKNOWN: + netTyp = false; + if (mDebug) + Log.e(TAG, "TYPE_UNKNOWN: "); + default: + break; + } + } /** * For EventBus callback. */ - public void onEventMainThread(Message msg) - { - switch (EventType.values()[msg.what]) - { + public void onEventMainThread(Message msg) { + String meetingId; + switch (EventType.values()[msg.what]) { case MSG_SIGNOUT_SUCCESS: if (mDebug) Log.e(TAG, "MSG_SIGNOUT_SUCCESS"); finish(); - System.exit(0); break; case MSG_SIGNOUT_FAILED: if (mDebug) @@ -740,7 +1030,6 @@ public void onEventMainThread(Message msg) case MSG_GET_ROOM_LIST_SUCCESS: if (mDebug) Log.e(TAG, "MSG_GET_ROOM_LIST_SUCCESS"); - // 创建房间 getRoomListSuccess(msg); break; case MSG_GET_ROOM_LIST_FAILED: @@ -748,20 +1037,10 @@ public void onEventMainThread(Message msg) Log.e(TAG, "MSG_GET_ROOM_LIST_FAILED"); break; case MSG_APPLY_ROOM_SUCCESS: - String meetingId = msg.getData().getString("meetingId"); if (mDebug) - Log.e(TAG, "MSG_APPLY_ROOM_SUCCESS "+meetingId); - String userid = TeamMeetingApp.getTeamMeetingApp().getDevId(); - int code = StartFlashActivity.mMsgSender.TMOptRoom(JMClientType.TMCMD_CREATE,userid,mPass,meetingId,""); - if(code==0){ - if (mDebug) - Log.e(TAG, "TMCreateRoom "+"Successed"); - } - else { - if (mDebug) - Log.e(TAG, "TMCreateRoom "+"Failed"); - } - getListNetWork(); + Log.e(TAG, "MSG_APPLY_ROOM_SUCCESS "); + mAdapter.notifyDataSetChanged(); + startInvitePeopleActivity(); break; case MSG_APPLY_ROOMT_FAILED: if (mDebug) @@ -784,11 +1063,151 @@ public void onEventMainThread(Message msg) case MSG_RESPONS_ESTR_NULl: if (mDebug) Log.e(TAG, "MSG_RESPONS_ESTR_NULl"); - mNetErrorSweetAlertDialog.show(); + // mNetErrorSweetAlertDialog.show(); + break; + case MSG_MESSAGE_RECEIVE: + if (mDebug) + break; + case MCCMD_LEAVE: + + break; + case MCCMD_ENTER: + if (mDebug) + Log.e(TAG, "Some people comming room!!!!!!!!!!!!!!!!!"); + break; + case MSG_GET_MEETING_INFO_SUCCESS: + if (mDebug) + Log.e(TAG, "MSG_GET_MEETING_INFO_SUCCESS"); + if (msg.getData().getString(JoinActType.JOIN_TYPE).equals(JoinActType.JOIN_ENTER_ACTIVITY) + || msg.getData().getString(JoinActType.JOIN_TYPE).equals(JoinActType.JOIN_LINK_JOIN_ACTIVITY)) { + getMeetingInfoSuccess(msg); + } + + break; + case MSG_GET_MEETING_INFO_FAILED: + if (mDebug) + Log.e(TAG, "MSG_GET_MEETING_INFO_FAILED"); + + String join_type = msg.getData().getString(JoinActType.JOIN_TYPE); + if (join_type.equals(JoinActType.JOIN_LINK_JOIN_ACTIVITY) || join_type.equals(JoinActType.JOIN_ENTER_ACTIVITY)) { + //meetingId = msg.getData().getString("meetingid"); + //mNetWork.deleteRoom(getSign(), meetingId); + Toast.makeText(mContext, R.string.meeting_delete_create, Toast.LENGTH_SHORT).show(); + meetingId = msg.getData().getString("meetingid"); + int position = msg.getData().getInt("position"); + if (position != -1) { + mRoomMeetingList.remove(position); + mAdapter.notifyDataSetChanged(); + //CRUDChat.deleteByMeetingId(mContext, meetingId); + } + } + + + break; + case MSG_INSERT_USER_MEETING_ROOM_SUCCESS: + if (mDebug) + Log.e(TAG, "MSG_INSERT_USER_MEETING_ROOM_SUCCESS"); + Log.e(TAG, "insertUserMeetingRoomSuccess: " + msg.getData().toString()); + mAdapter.notifyDataSetChanged(); + String join_insert_type = msg.getData().getString(JoinActType.JOIN_INSERT_TYPE); + if (join_insert_type == JoinActType.JOIN_INSERT_LINK_JOIN_ACTIVITY) { + String anyrtcid = TeamMeetingApp.getmSelfData().getMeetingListEntity().getAnyrtcid(); + //statrMeetingActivity(mUrlMeetingName, mUrlMeetingId, anyrtcid); + statrMeetingActivity(TeamMeetingApp.getmSelfData().getMeetingListEntity()); + } + break; + case MSG_INSERT_USER_MEETING_ROOM_FAILED: + if (mDebug) + Log.e(TAG, "MSG_INSERT_USER_MEETING_ROOM_FAILED"); + + Toast.makeText(mContext, msg.getData().getString("message"), Toast.LENGTH_SHORT).show(); + break; + case MSG_UP_DATE_USER_MEETING_JOIN_TIME_SUCCESS: + mAdapter.notifyDataSetChanged(); + if (mDebug) + Log.e(TAG, "MSG_UP_DATE_USER_MEETING_JOIN_TIME_SUCCESS " + mAdapter.getCount()); + break; + case MSG_DELETE_ROOM_SUCCESS: + if (mDebug) { + Log.e(TAG, "onEventMainThread: MSG_DELETE_ROOM_SUCCESS"); + } + meetingId = msg.getData().getString("meetingid"); + deleteRoom(meetingId); + int position; + break; + case JOIN_MEETINGID_EXIST: + int pos = (int) msg.obj; + if (mDebug) + Log.e(TAG, "onEventMainThread: pos" + pos); + meetingPositiotrue(pos); + break; + case MSG_UPDATE_NICKNAME_SUCCESS: + LocalUserInfo.getInstance(mContext).setUserInfoBoolean(LocalUserInfo.SET_USER_NAME, true); + Toast.makeText(mContext, R.string.toast_seeting_success, Toast.LENGTH_SHORT).show(); + break; + case MSG_NOTIFICATION_MEETING_CLOSE: + if (mDebug) + Log.e(TAG, "MSG_NOTIFICATION_MEETING_CLOSE"); + msg.what = ENTER_NEW_ROOM; + mUIHandler.sendMessageDelayed(msg, 1000); + break; + case MSG_NOTIFICATION_MAIN: + if (mDebug) + Log.e(TAG, "MSG_NOTIFICATION_MAIN"); + msgNotificatinMain(msg); break; + + case MSG_URL_START_MEETING: + if (mDebug) + Log.e(TAG, "MSG_URL_START_MEETING: "); + Bundle bundle = msg.getData(); + String meetingid = bundle.getString("meetingid"); + if (mDebug) { + Log.e(TAG, "onEventMainThread:meetingid" + meetingid); + } + mRoomMeetingList = TeamMeetingApp.getmSelfData().getMeetingLists(); + Logger.e(mRoomMeetingList.toString()); + position = MeetingHelper.getMeetingIdPosition(mRoomMeetingList, meetingid); + Log.e(TAG, "onEventMainThread: position" + position); + if (position > -1) { + enterMeetingActivity(position); + } else { + //自己启动自己 + startActivity(new Intent(MainActivity.this, MainActivity.class)); + } + + break; + + case MSG_ROOMSEETING_ENTER_ROOM: + if (mDebug) + Log.e(TAG, "onEventMainThread: MSG_ROOMSEETING_ENTER_ROOM"); + position = (int) msg.obj; + final MeetingListEntity meetingListEntity = mRoomMeetingList.get(position); + mNetWork.updateUserMeetingJointime(getSign(), meetingListEntity.getMeetingid(), position); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + statrMeetingActivity(meetingListEntity); + } + },2); + /*if (position >= 0) { + enterMeetingActivity(position); + }*/ + + default: break; } } + private void deleteRoom(String meetingId) { + int position = mAdapter.getMeetingIdPosition(meetingId); + if (position != -1) { + mRoomMeetingList.remove(position); + mAdapter.notifyDataSetChanged(); + CRUDChat.deleteByMeetingId(mContext, meetingId); + } + } + + } diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/MeetingActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/MeetingActivity.java index 4181444..4229dd9 100644 --- a/app/src/main/java/org/dync/teameeting/ui/activity/MeetingActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/activity/MeetingActivity.java @@ -1,41 +1,17 @@ package org.dync.teameeting.ui.activity; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.anyrtc.AnyrtcM2Mutlier; -import org.anyrtc.m2multier.M2MPublisher; -import org.anyrtc.m2multier.M2MultierEvents; -import org.dync.teameeting.R; -import org.dync.teameeting.sdkmsgclientandroid.jni.JMClientType; -import org.dync.teameeting.structs.EventType; -import org.dync.teameeting.ui.adapter.ChatMessageAdapter; -import org.dync.teameeting.http.NetWork; -import org.dync.teameeting.TeamMeetingApp; -import org.dync.teameeting.ui.helper.Anims; -import org.dync.teameeting.ui.helper.DialogHelper; -import org.dync.teameeting.ui.helper.MeetingAnim; -import org.dync.teameeting.ui.helper.MeetingAnim.AnimationEndListener; -import org.dync.teameeting.widgets.PopupWindowCustom; -import org.dync.teameeting.widgets.PopupWindowCustom.OnPopupWindowClickListener; -import org.dync.teameeting.widgets.RoomControls; -import org.dync.teameeting.utils.ChatMessage; -import org.dync.teameeting.utils.ChatMessage.Type; -import org.webrtc.StatsReport; - import android.animation.Animator; +import android.content.Context; import android.content.Intent; import android.content.res.Configuration; -import android.opengl.GLSurfaceView; import android.os.Bundle; +import android.os.CountDownTimer; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.util.Log; import android.view.ContextMenu; +import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; @@ -46,46 +22,84 @@ import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; -import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.nineoldandroids.view.ViewPropertyAnimator; -import com.ypy.eventbus.EventBus; + +import org.anyrtc.meet_kit.RTMeetHelper; +import org.anyrtc.meet_kit.RTMeetKit; +import org.dync.teameeting.R; +import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.bean.ChatMessage; +import org.dync.teameeting.bean.ChatMessage.Type; +import org.dync.teameeting.bean.MeetingListEntity; +import org.dync.teameeting.bean.MessageListEntity; +import org.dync.teameeting.bean.ReqSndMsgEntity; +import org.dync.teameeting.db.CRUDChat; +import org.dync.teameeting.http.NetWork; +import org.dync.teameeting.sdkmsgclient.jni.JMClientType; +import org.dync.teameeting.sdkmsgclient.msgs.TMMsgSender; +import org.dync.teameeting.structs.EventType; +import org.dync.teameeting.structs.NetType; +import org.dync.teameeting.structs.ShareUrl; +import org.dync.teameeting.ui.adapter.ChatMessageAdapter; +import org.dync.teameeting.ui.helper.Anims; +import org.dync.teameeting.ui.helper.DialogHelper; +import org.dync.teameeting.ui.helper.MeetingAnim; +import org.dync.teameeting.ui.helper.MeetingAnim.AnimationEndListener; +import org.dync.teameeting.ui.helper.ShareHelper; +import org.dync.teameeting.utils.RTCVideoView; +import org.dync.teameeting.utils.ScreenUtils; +import org.dync.teameeting.widgets.PopupWindowCustom; +import org.dync.teameeting.widgets.PopupWindowCustom.OnPopupWindowClickListener; +import org.dync.teameeting.widgets.ReFlashListView; +import org.dync.teameeting.widgets.RoomControls; +import org.dync.teameeting.widgets.VitualKey; +import org.webrtc.VideoRenderer; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import cn.pedant.SweetAlert.SweetAlertDialog; +import de.greenrobot.event.EventBus; /** * @author zhangqilu org.dync.teammeeting.activity MeetingActivity create at * 2015-12-11 5:02:32 */ -public class MeetingActivity extends MeetingBaseActivity implements M2MultierEvents -{ +public class MeetingActivity extends MeetingBaseActivity implements RTMeetHelper, RTCVideoView.VideoViewPeopleEvent, ReFlashListView.IReflashListener { // Local preview screen position before call is connected. private static final boolean mDebug = TeamMeetingApp.mIsDebug; private static final String TAG = "MeetingActivity"; private static final int ANIMATOR_TANSLATION = 0X01; - - private AnyrtcM2Mutlier mAnyM2Mutlier; + private static final int MESSAGE_UPDATE = 0X02; + boolean MCSENDTAGS_SUBSCRIBE = false; + // private AnyrtcM2Mutlier mMeetKit; + private RTMeetKit mMeetKit; private MeetingAnim mMettingAnim; private ImageButton mChatButton, mInviteButton; private RoomControls mControlLayout; private RelativeLayout mTopbarLayout; + private VitualKey mParentLayout; + private ImageButton btn_reminder; private ImageButton mVoiceButton, mCameraButton, mHangUpButton, mSwitchCameraButton, mCameraOffButton; - private boolean mMeetingCameraFlag = true, mMeetingCameraOffFlag = true, - mMeetingVideoFlag = true, mMeetingVoiceFlag; + private boolean mMeetingCameraFlag = true, mMeetingCameraOffFlag = true, mMeetingVoiceFlag = true; private TextView mTvRoomName; - private String mBsNow, mBsBefore; - - double mTsNow, mTsBefore; - private String mBitrate; - private PopupWindowCustom mPopupWindowCustom; + private ShareHelper mShareHelper; + private String mShareUrl; + private RTCVideoView mVideoView; + private RelativeLayout mAnyrtcViewLayout; + private boolean isBreakLeave = false; // Left distance of this control button relative to its parent int mLeftDistanceCameraBtn; int mLeftDistanceHangUpBtn; @@ -96,98 +110,199 @@ public class MeetingActivity extends MeetingBaseActivity implements M2MultierEve private ImageButton mChatClose; private Button mSendMessage; private TextView mTvRemind; + private TextView mTvMessageCount; private String mUserId; - private final String mPass = TeamMeetingApp.getmSelfData().getAuthorization(); - private boolean mMessageShowFlag=true; - + private boolean mMessageShowFlag = true; + private TMMsgSender mMsgSender; + private int mMessagePageNum = 1; + + private SweetAlertDialog mNetErrorSweetAlertDialog; + private int mNotifTags; + private Message closeMsg = null; + private RelativeLayout mRlChatButton; + private TextView tvDuoyu; + private String mRoomName; + private int mMeetingType; + private ImageView mBtnReminder; + private long time; + private int state = 1; + private MyCountDownTimer m; + private SweetAlertDialog mSweetAlertDialog; + private String mAnyrtcId; @Override - public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) - { + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); } - private ListView mChatView; + private ReFlashListView mChatView; private ImageView mCloseVoice; + private ImageView mCloseVideo; private EditText mMsg; private List mDatas = new ArrayList(); + private List mMessageListEntity = new ArrayList(); private ChatMessageAdapter mAdapter; private InputMethodManager mIMM; boolean mChatLayoutShow = false; - private String mMeetingId; + public String mMeetingId; private NetWork mNetWork; + boolean isStartAcitvity = true; - private Handler mUiHandler = new Handler() - { - public void handleMessage(Message msg) - { - switch (msg.what) - { - case ANIMATOR_TANSLATION: + // private VideoViews mVideoView; + private String mPublishId; + private HashMap mVoiceSetting = new HashMap(); + private HashMap mVideoSetting = new HashMap(); + private Handler mUiHandler = new Handler() { + public void handleMessage(Message msg) { + switch (msg.what) { + case ANIMATOR_TANSLATION: mVoiceButton.setVisibility(View.VISIBLE); mHangUpButton.setVisibility(View.VISIBLE); mSwitchCameraButton.setVisibility(View.GONE); mCameraOffButton.setVisibility(View.GONE); break; + case MESSAGE_UPDATE: + mMessageListEntity = TeamMeetingApp.getmSelfData().getMessageListEntityList(); + int oldSize = mDatas.size(); + for (int i = 0; i < mMessageListEntity.size() - 1; i++) { + MessageListEntity messageListEntity = mMessageListEntity.get(i); + String message = messageListEntity.getMessage(); + long time = messageListEntity.getSendtime(); + ChatMessage chatMessage; + if (mMessageListEntity.get(i).getUserid().equals(mUserId)) { + chatMessage = new ChatMessage(Type.OUTPUT, message, messageListEntity.getUsername(), time + ""); + } else { + chatMessage = new ChatMessage(Type.INPUT, message, messageListEntity.getUsername(), time + ""); + } + mDatas.add(0, chatMessage); + } + mAdapter.notifyDataSetChanged(); + if (mMessagePageNum == 1) + mChatView.setSelection(mDatas.size() - 1); + else + mChatView.setSelection(mDatas.size() - oldSize); default: break; } - } }; + @Override - protected void onCreate(Bundle savedInstanceState) - { + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Intent intent = getIntent(); - mMeetingId = intent.getStringExtra("meetingId"); - mUserId = intent.getStringExtra("userId"); - EventBus.getDefault().register(this); + Log.e(TAG, "--------------onCreate: "); + initView(); + inintData(); + + List activityList = TeamMeetingApp.getMeetingActivityList(); + activityList.add(0, mMeetingId); if (mDebug) - { - Log.i(TAG, "meetingId" + mMeetingId); - } + Log.e(TAG, "onStart:save id " + mMeetingId); + } + + private void inintData() { + getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + EventBus.getDefault().register(this); - mAnyM2Mutlier = new AnyrtcM2Mutlier(this, this); - mAnyM2Mutlier.InitVideoView((GLSurfaceView) findViewById(R.id.glview_call)); - initView(); + mNetErrorSweetAlertDialog = DialogHelper.createNetErroDilaog(getApplicationContext(), sweetClickListener); + + mIMM = (InputMethodManager) MeetingActivity.this.getSystemService(MainActivity.INPUT_METHOD_SERVICE); + + Intent intent = getIntent(); +/* mMeetingId = intent.getStringExtra("meetingId"); + mUserId = intent.getStringExtra("userId"); + mNotifTags = intent.getIntExtra("tags", 0); + mRoomName = getIntent().getStringExtra("meetingName"); + String anyrtcId = intent.getStringExtra("anyrtcId");*/ - { - M2MPublisher.PublishParams params = new M2MPublisher.PublishParams(); - params.bEnableVideo = true; - params.eStreamType = M2MPublisher.StreamType.ST_RTC; - mAnyM2Mutlier.Publish(params); + MeetingListEntity meetingListEntity = (MeetingListEntity) intent.getSerializableExtra("meetingListEntity"); + if (mDebug) { + Log.e(TAG, "inintData: " + meetingListEntity.toString()); + } + mMeetingId = meetingListEntity.getMeetingid(); + mUserId = TeamMeetingApp.getTeamMeetingApp().getDevId(); + mNotifTags = intent.getIntExtra("tags", 0); + mRoomName = meetingListEntity.getMeetname(); + mAnyrtcId = meetingListEntity.getAnyrtcid(); + mMeetingType = meetingListEntity.getMeetenable(); + mTvRoomName.setText(mRoomName); + + if (mMeetingType == 2) { + mInviteButton.setVisibility(View.INVISIBLE); } - } - /* Init UI */ - private void initView() - { + if (meetingListEntity.getOwner() == 1) { + mBtnReminder.setVisibility(View.VISIBLE); + } + + mMeetKit = new RTMeetKit(this, this); + mMeetKit.InitEngineWithAnyrtcInfo("teameetingtest", "c4cd1ab6c34ada58e622e75e41b46d6d", "OPJXF3xnMqW+7MMTA4tRsZd6L41gnvrPcI25h9JCA4M", "meetingtest"); + mMeetKit.ConfigServerForPriCloud("teameeting.anyrtc.io", 9060); + mVideoView = new RTCVideoView(mAnyrtcViewLayout, this, mMeetKit.Egl(), mCloseVoice, mCloseVideo); + mVideoView.setVideoViewPeopleNumEvent(mVideoViewPeopleNumEvent); + + VideoRenderer render = mVideoView.OnRtcOpenLocalRender(); + mMeetKit.SetVideoCapturer(render.GetRenderPointer(), true); + mMeetKit.Join(mAnyrtcId); + + + mMsgSender = TeamMeetingApp.getmMsgSender(); mNetWork = new NetWork(); + mShareHelper = new ShareHelper(MeetingActivity.this); mMettingAnim = new MeetingAnim(); mMettingAnim.setAnimEndListener(mAnimationEndListener); - mIMM = (InputMethodManager) MeetingActivity.this - .getSystemService(MainActivity.INPUT_METHOD_SERVICE); + mShareUrl = ShareUrl.SHARE_URL + mMeetingId; + + mChatView.setInterface(this); + + leaveMessageDealWith(); + + int code = mMsgSender.TMOptRoom(JMClientType.MCCMD_ENTER, mMeetingId, mRoomName, ""); + if (code >= 0) { + if (mDebug) { + Log.e(TAG, "inintData: " + "TMEnterRoom Successed"); + } + } else if (mDebug) { + Log.e(TAG, "inintData: " + "TMEnterRoom Failed"); + } + + mNetWork.getMeetingMsgList(getSign(), mMeetingId, "" + mMessagePageNum, 20 + ""); + if (mNotifTags == 1) { + + if (TeamMeetingApp.isPad) { + chatLayoutControl(300); + } else { + mMessageShowFlag = false; + mChatLayout.setVisibility(View.VISIBLE); + } + } + } + + /* Init UI */ + private void initView() { // Create UI controls. + btn_reminder = (ImageButton) findViewById(R.id.btn_reminder); + mParentLayout = (VitualKey) findViewById(R.id.meet_parent); mTopbarLayout = (RelativeLayout) findViewById(R.id.rl_meeting_topbar); mControlLayout = (RoomControls) findViewById(R.id.rl_meeting_control); - + tvDuoyu = (TextView) findViewById(R.id.tv_duoyu); mChatButton = (ImageButton) findViewById(R.id.imgbtn_chat); mInviteButton = (ImageButton) findViewById(R.id.imgbtn_invite); mTvRoomName = (TextView) findViewById(R.id.tv_room_name); mTvRemind = (TextView) findViewById(R.id.tv_remind); - String roomName = getIntent().getStringExtra("meetingName"); - mTvRoomName.setText(roomName); + mRlChatButton = (RelativeLayout) findViewById(R.id.rl_chat_bottom); + mAnyrtcViewLayout = (RelativeLayout) findViewById(R.id.rl_videos); + mCloseVideo = (ImageView) findViewById(R.id.iv_close_video); mCloseVoice = (ImageView) findViewById(R.id.iv_close_voice); mVoiceButton = (ImageButton) findViewById(R.id.meeting_voice); mCameraButton = (ImageButton) findViewById(R.id.meeting_camera); @@ -203,18 +318,33 @@ private void initView() mSwitchCameraButton.setOnClickListener(onClickListener); mCameraOffButton.setOnClickListener(onClickListener); + mParentLayout.setInterface(mLayoutKeyChange); + // Chat ui inint + mTvMessageCount = (TextView) findViewById(R.id.tv_message_count); mChatLayout = (RelativeLayout) findViewById(R.id.rl_chating); mSendMessage = (Button) findViewById(R.id.btn_chat_send); mChatClose = (ImageButton) findViewById(R.id.imgbtn_back); - mChatView = (ListView) findViewById(R.id.listView_chat); + mChatView = (ReFlashListView) findViewById(R.id.listView_chat); mMsg = (EditText) findViewById(R.id.et_chat_msg); mSendMessage.setOnClickListener(onClickListener); mChatClose.setOnClickListener(onClickListener); - + mBtnReminder = (ImageView) findViewById(R.id.btn_reminder); + mBtnReminder.setOnClickListener(onClickListener); + + mSweetAlertDialog = DialogHelper.createAnyRTCLeave(MeetingActivity.this, new SweetAlertDialog.OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + mSweetAlertDialog.dismiss(); + mSweetAlertDialog = null; + msgSenderLeave(); + } + }); + //下拉刷新 + // initSwipeRefreshLayout(); mAdapter = new ChatMessageAdapter(this, mDatas); mChatView.setAdapter(mAdapter); - + m = new MyCountDownTimer(30000, 1000); } @@ -222,23 +352,23 @@ private void initView() float downY = 0; @Override - public boolean onTouchEvent(MotionEvent event) - { + public boolean onTouchEvent(MotionEvent event) { - switch (event.getAction()) - { + switch (event.getAction()) { case MotionEvent.ACTION_DOWN: downX = event.getX(); downY = event.getY(); + Log.e(TAG, downX + "onTouchEvent ACTION_DOWN " + downY); + break; case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: float moveX = event.getX() - downX; float moveY = event.getY() - downY; - if (Math.abs(moveX) > Math.abs(moveY) && TeamMeetingApp.isPad) - { + Log.e(TAG, moveY + "onTouchEvent ACTION_UP " + moveX); + if (Math.abs(moveX) > Math.abs(moveY) && TeamMeetingApp.isPad) { chatLayoutControl(moveX); - } else - { + } else { contralAnim(); } @@ -254,88 +384,104 @@ public boolean onTouchEvent(MotionEvent event) * * @param moveX */ - public void chatLayoutControl(float moveX) - { + public void chatLayoutControl(float moveX) { int controllMove = controllerMoveDistance(mChatLayout); int showTime = 500; - if (moveX > 0 && !mChatLayoutShow) - { + if (moveX > 0 && !mChatLayoutShow) { mChatLayoutShow = true; - Anims.animateRightMarginTo(mChatLayout, 0, mChatLayout.getWidth() - 10, showTime, Anims.ACCELERATE); + mMessageShowFlag = false; + Anims.animateRightMarginTo(mChatLayout, 0, mChatLayout.getWidth() - tvDuoyu.getWidth(), showTime, Anims.ACCELERATE); + Anims.animateRightMarginTo(mControlLayout, 0, controllMove, showTime, Anims.ACCELERATE); Anims.animateRightMarginTo(mControlLayout, 0, controllMove, showTime, Anims.ACCELERATE); Anims.animateRightMarginTo(mTvRemind, 0, controllMove, showTime, Anims.ACCELERATE); - Anims.animateRightMarginTo(mTvRoomName, 0, controllMove, showTime, Anims.ACCELERATE); + // Anims.animateRightMarginTo(mTvRoomName, 0, controllMove, showTime, Anims.ACCELERATE); + mTvMessageCount.setVisibility(View.INVISIBLE); - } - if (moveX < 0 && mChatLayoutShow) - { + } else if (moveX < 0 && mChatLayoutShow) { mChatLayoutShow = false; - Anims.animateRightMarginTo(mChatLayout, mChatLayout.getWidth() - 10, 0, showTime, Anims.ACCELERATE); + mMessageShowFlag = true; + Anims.animateRightMarginTo(mChatLayout, mChatLayout.getWidth() - tvDuoyu.getWidth(), 0, showTime, Anims.ACCELERATE); Anims.animateRightMarginTo(mControlLayout, controllMove, 0, showTime, Anims.ACCELERATE); Anims.animateRightMarginTo(mTvRemind, controllMove, 0, showTime, Anims.ACCELERATE); - Anims.animateRightMarginTo(mTvRoomName, controllMove, 0, showTime, Anims.ACCELERATE); + CRUDChat.deleteByMeetingId(MeetingActivity.this, mMeetingId); + } } - private void contralAnim() - { - if (mControlLayout.mAvailable) - { - mControlLayout.hide(); - - ViewPropertyAnimator.animate(mTopbarLayout).translationY( - -mTopbarLayout.getHeight()); - ViewPropertyAnimator.animate(mCloseVoice).translationY( - -mTopbarLayout.getHeight()); - } else - { - mControlLayout.show(); - ViewPropertyAnimator.animate(mTopbarLayout).translationY(0f); - ViewPropertyAnimator.animate(mCloseVoice).translationY(0f); + private void contralAnim() { + + if (MCSENDTAGS_SUBSCRIBE) { + if (mControlLayout.mAvailable) { + mControlLayout.hide(); + ViewPropertyAnimator.animate(mTopbarLayout).translationY( + -mTopbarLayout.getHeight()); + ViewPropertyAnimator.animate(mCloseVoice).translationY( + -mTopbarLayout.getHeight()); + mVideoView.MoveVideoView(true); + + } else { + mControlLayout.show(); + ViewPropertyAnimator.animate(mTopbarLayout).translationY(0f); + ViewPropertyAnimator.animate(mCloseVoice).translationY(0f); + mVideoView.MoveVideoView(false); + } } } @Override - public void onConfigurationChanged(Configuration newConfig) - { - - if (mPopupWindowCustom != null) - { + public void onConfigurationChanged(Configuration newConfig) { + if (mPopupWindowCustom != null) { mPopupWindowCustom.dismiss(); mPopupWindowCustom = null; } + if (mVideoView != null) { + mVideoView.onScreenChanged(); + } + + super.onConfigurationChanged(newConfig); } + @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { - - if (keyCode == KeyEvent.KEYCODE_BACK - && event.getAction() == KeyEvent.ACTION_DOWN - && mChatLayout.getVisibility() == View.VISIBLE) - { - mChatLayout.setVisibility(View.GONE); - mTopbarLayout.setVisibility(View.VISIBLE); - mControlLayout.setVisibility(View.VISIBLE); + public boolean onKeyDown(int keyCode, KeyEvent event) { + + if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { + if (TeamMeetingApp.isPad) { + if (mChatLayoutShow) + chatLayoutControl(-100); + else + msgSenderLeave(); + } else { + if (mChatLayout.getVisibility() == View.VISIBLE) { + mMessageShowFlag = true; + mChatLayout.setVisibility(View.GONE); + mTopbarLayout.setVisibility(View.VISIBLE); + mControlLayout.setVisibility(View.VISIBLE); + //delete db data + CRUDChat.deleteByMeetingId(MeetingActivity.this, mMeetingId); + mTvMessageCount.setVisibility(View.INVISIBLE); + } else { + msgSenderLeave(); + } + } return true; } return super.onKeyDown(keyCode, event); } @Override - public void onWindowFocusChanged(boolean hasFocus) - { + public void onWindowFocusChanged(boolean hasFocus) { measureLeftDistance(); super.onWindowFocusChanged(hasFocus); + } /** * Measuring the distance button */ - private void measureLeftDistance() - { + private void measureLeftDistance() { mLeftDistanceCameraBtn = mCameraButton.getLeft() + mCameraButton.getWidth() / 2; mLeftDistanceHangUpBtn = mHangUpButton.getLeft() @@ -344,11 +490,9 @@ private void measureLeftDistance() + mVoiceButton.getWidth() / 2; } - private AnimationEndListener mAnimationEndListener = new AnimationEndListener() - { + private AnimationEndListener mAnimationEndListener = new AnimationEndListener() { @Override - public void onAnimationEnd(Animator arg0) - { + public void onAnimationEnd(Animator arg0) { mVoiceButton.setVisibility(View.VISIBLE); mHangUpButton.setVisibility(View.VISIBLE); mSwitchCameraButton.setVisibility(View.GONE); @@ -358,30 +502,27 @@ public void onAnimationEnd(Animator arg0) } }; - private OnPopupWindowClickListener mPopupWindowListener = new OnPopupWindowClickListener() - { + private OnPopupWindowClickListener mPopupWindowListener = new OnPopupWindowClickListener() { @Override - public void onPopupClickListener(View view) - { - mPopupWindowCustom.dismiss(); - switch (view.getId()) - { + public void onPopupClickListener(View view) { + + switch (view.getId()) { case R.id.ibtn_close: - // mPopupWindowCustom.dismiss(); + mPopupWindowCustom.dismiss(); break; case R.id.ibtn_message: - // mPopupWindowCustom.dismiss(); + mPopupWindowCustom.dismiss(); + mShareHelper.shareSMS(MeetingActivity.this, "", mShareUrl); break; case R.id.ibtn_weixin: - // mPopupWindowCustom.dismiss(); + mPopupWindowCustom.dismiss(); + mShareHelper.shareWeiXin(mShareUrl); break; case R.id.tv_copy: - // mPopupWindowCustom.dismiss(); - break; + case R.id.btn_copy: - // mPopupWindowCust kom.dismiss(); - DialogHelper.onClickCopy(MeetingActivity.this, - "RoomUrl:www.baidu.com"); + mPopupWindowCustom.dismiss(); + DialogHelper.onClickCopy(MeetingActivity.this, mShareUrl); break; default: @@ -392,398 +533,660 @@ public void onPopupClickListener(View view) }; /* set button clickListener */ - OnClickListener onClickListener = new OnClickListener() - { + OnClickListener onClickListener = new OnClickListener() { @Override - public void onClick(View mView) - { - - switch (mView.getId()) - { + public void onClick(View mView) { + int code = 0; + switch (mView.getId()) { case R.id.imgbtn_invite: - - mPopupWindowCustom = new PopupWindowCustom( - MeetingActivity.this, mInviteButton, mTopbarLayout, - mPopupWindowListener); + mPopupWindowCustom = new PopupWindowCustom(MeetingActivity.this, mInviteButton, mTopbarLayout, + mPopupWindowListener, mShareUrl); break; - case R.id.meeting_camera: - - if (!mMeetingCameraOffFlag) - { - mAnyM2Mutlier.SetLocalVideoEnabled(true); - mCameraButton.setImageResource(R.drawable.btn_camera_on); - mMeetingCameraOffFlag = true; - return; - } - - if (mMeetingCameraFlag) - { - mCameraButton.setImageResource(R.drawable.btn_camera_back); - mVoiceButton.setVisibility(View.GONE); - mHangUpButton.setVisibility(View.GONE); - mSwitchCameraButton.setVisibility(View.VISIBLE); - mCameraOffButton.setVisibility(View.VISIBLE); - - mMettingAnim.rotationOrApaha(mCameraButton, - mMeetingCameraFlag); - mMettingAnim.translationAlphaAnimator(mSwitchCameraButton, - (mLeftDistanceCameraBtn - mLeftDistanceHangUpBtn), - 0, 400, true); - - mMettingAnim.translationAlphaAnimator(mCameraOffButton, - (mLeftDistanceCameraBtn - mLeftDistanceVoiceBtn), - 0, 400, true); - - } else - { - mCameraButton.setImageResource(R.drawable.btn_camera_on); - mMettingAnim.rotationOrApaha(mCameraButton, - mMeetingCameraFlag); - mMettingAnim.translationAlphaAnimator(mSwitchCameraButton, - 0, - (mLeftDistanceCameraBtn - mLeftDistanceHangUpBtn), - 300, false); - mMettingAnim.translationAlphaAnimator(mCameraOffButton, 0, - (mLeftDistanceCameraBtn - mLeftDistanceVoiceBtn), - 300, false); - - } - - mMeetingCameraFlag = !mMeetingCameraFlag; + videoSetting(); break; case R.id.meeting_hangup: - finish(); - int code = StartFlashActivity.mMsgSender.TMOptRoom(JMClientType.TMCMD_LEAVE,mUserId,mPass,mMeetingId,""); - if(code==0){ - if(mDebug){ - Log.e(TAG, "TMLeaveRoom Successed"); - } - }else if(mDebug){ - Log.e(TAG, "TMLeaveRoom Failed"); - } + msgSenderLeave(); break; case R.id.meeting_voice: - if (mMeetingVoiceFlag) - { - mVoiceButton.setImageResource(R.drawable.btn_voice_off); - mCloseVoice.setVisibility(View.VISIBLE); - mAnyM2Mutlier.SetLocalAudioEnabled(false); - } else - { - mVoiceButton.setImageResource(R.drawable.btn_voice_on); - mCloseVoice.setVisibility(View.INVISIBLE); - mAnyM2Mutlier.SetLocalAudioEnabled(true); - } - mMeetingVoiceFlag = !mMeetingVoiceFlag; + voiceSetting(); break; case R.id.meeting_camera_switch: - mAnyM2Mutlier.SwitchCamera(); + mMeetKit.SwitchCamera(); break; case R.id.meeting_camera_off: - mAnyM2Mutlier.SetLocalVideoEnabled(false); - mCameraButton - .setImageResource(R.drawable.btn_camera_off_select); - mMettingAnim.rotationOrApaha(mCameraButton, mMeetingCameraFlag); - mMettingAnim.translationAlphaAnimator(mSwitchCameraButton, 0, - (mLeftDistanceCameraBtn - mLeftDistanceHangUpBtn), 300, - false); - mMettingAnim.translationAlphaAnimator(mCameraOffButton, 0, - (mLeftDistanceCameraBtn - mLeftDistanceVoiceBtn), 300, - false); - mMeetingCameraOffFlag = false; - mMeetingCameraFlag = true; + + videoCloseSetting(); break; - case R.id.imgbtn_chat: - stopShowMessage(); - if (TeamMeetingApp.isPad) - { - chatLayoutControl(100); - } else - { + case R.id.imgbtn_chat: + if (TeamMeetingApp.isPad) { + int value = mChatLayoutShow == true ? -100 : 100; + chatLayoutControl(value); + } else { mMessageShowFlag = false; mChatLayout.setVisibility(View.VISIBLE); } + + break; case R.id.btn_chat_send: sendMessageChat(); break; case R.id.imgbtn_back: - //startShowMessage(); mMessageShowFlag = true; - mChatLayout.setVisibility(View.GONE); + CRUDChat.deleteByMeetingId(MeetingActivity.this, mMeetingId); + mTvMessageCount.setVisibility(View.INVISIBLE); mIMM.hideSoftInputFromWindow(mMsg.getWindowToken(), 0); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + mChatLayout.setVisibility(View.GONE); + } + }, 400); + break; + case R.id.btn_reminder: + if (state == 1) { + m.start(); + Toast toast = Toast.makeText(MeetingActivity.this, "喊别人进入房间啦", Toast.LENGTH_LONG); + toast.setGravity(Gravity.CENTER, 0, 0); + toast.show(); + mMsgSender.TMNotifyMsg(mMeetingId, mRoomName, JMClientType.MCSENDTAGS_CALL, "叫你开会了"); + btn_reminder.setAlpha(0.5f); + state = 2; + } else { + + Toast.makeText(MeetingActivity.this, "已经发送通知了," + time + "秒后再通知吧!", Toast.LENGTH_SHORT).show(); + } break; } } + + }; - private void sendMessageChat() - { + @Override + public void OnPeopleNumChange(int peopleNum) { + numberOfDisplay(peopleNum); + } + + class MyCountDownTimer extends CountDownTimer { + + /** + * @param millisInFuture The number of millis in the future from the call + * to {@link #start()} until the countdown is done and {@link #onFinish()} + * is called. + * @param countDownInterval The interval along the way to receive + * {@link #onTick(long)} callbacks. + */ + public MyCountDownTimer(long millisInFuture, long countDownInterval) { + super(millisInFuture, countDownInterval); + } + + @Override + public void onTick(long millisUntilFinished) { + time = millisUntilFinished / 1000; + } + + @Override + public void onFinish() { + state = 1; + btn_reminder.setAlpha(1.0f); + } + } + + /** + * Solve the problem of hide the virtual keyboard + * + * @param ev + * @return + */ + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + Log.e(TAG, "dispatchTouchEvent: " + super.dispatchTouchEvent(ev) + " ev.getAction() " + ev.getAction()); + + if (ev.getAction() == MotionEvent.ACTION_DOWN) { + // View v = getCurrentFocus(); + + if (isShouldHideInput(mMsg, ev)) { + + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm != null) { + imm.hideSoftInputFromWindow(mMsg.getWindowToken(), 0); + } + //return false; + } + // return false; + return super.dispatchTouchEvent(ev); + } + // Essential, otherwise all the components are there won't be TouchEvent + if (getWindow().superDispatchTouchEvent(ev)) { + Log.e(TAG, "dispatchTouchEvent: " + " getWindow() "); + return true; + } + // return onTouchEvent(ev); + return false; + } + + /** + * isShouldHideInput + * + * @param v + * @param event + * @return + */ + private boolean isShouldHideInput(View v, MotionEvent event) { + if (v != null && (v instanceof EditText)) { + int[] leftTop = {0, 0}; + //To obtain input box's current location location to obtain input box's current location + v.getLocationInWindow(leftTop); + int left = leftTop[0]; + int top = leftTop[1]; + int bottom = top + v.getHeight(); + int right = ScreenUtils.getScreenWidth(getApplicationContext()); + if (event.getX() > left && event.getX() < right + && event.getY() > top && event.getY() < bottom) { + return false; + } else { + return true; + } + } + return false; + } + + /** + * msgSenderLeave + */ + private void msgSenderLeave() { + int code = mMsgSender.TMOptRoom(JMClientType.MCCMD_LEAVE, mMeetingId, mRoomName, ""); + if (isStartAcitvity) { + //如果是通过Acitvity启动的 + Log.e(TAG, "msgSenderLeave:isStartAcitvity " + isStartAcitvity); + //Intent intent = new Intent(this, MainActivity.class); + //startActivity(intent); + } + isBreakLeave = true; + finish(); + if (code >= 0) { + if (mDebug) { + Log.e(TAG, "TMLeaveRoom Successed"); + } + } else if (mDebug) { + Log.e(TAG, "TMLeaveRoom Failed"); + } + } + + /** + * videoSetting + */ + + private void videoSetting() { + if (!mMeetingCameraOffFlag) { + mMeetKit.SetVideoEnable(true); + mCameraButton.setImageResource(R.drawable.btn_camera_on); + mMeetingCameraOffFlag = true; + if (mVideoView.getLocalVideoRenderer() != null) { +// mVideoView.getLocalVideoRenderer().setEnabled(true); +// mVideoView.updateLocalVideoImage(true); + } + return; + } + + if (mMeetingCameraFlag) { + mCameraButton.setImageResource(R.drawable.btn_camera_back); + mVoiceButton.setVisibility(View.GONE); + mHangUpButton.setVisibility(View.GONE); + mSwitchCameraButton.setVisibility(View.VISIBLE); + mCameraOffButton.setVisibility(View.VISIBLE); + + mMettingAnim.rotationOrApaha(mCameraButton, mMeetingCameraFlag); + mMettingAnim.translationAlphaAnimator(mSwitchCameraButton, (mLeftDistanceCameraBtn - mLeftDistanceHangUpBtn), 0, 400, true); + + mMettingAnim.translationAlphaAnimator(mCameraOffButton, (mLeftDistanceCameraBtn - mLeftDistanceVoiceBtn), 0, 400, true); + + } else { + + mCameraButton.setImageResource(R.drawable.btn_camera_on); + mMettingAnim.rotationOrApaha(mCameraButton, + mMeetingCameraFlag); + mMettingAnim.translationAlphaAnimator(mSwitchCameraButton, + 0, + (mLeftDistanceCameraBtn - mLeftDistanceHangUpBtn), + 300, false); + mMettingAnim.translationAlphaAnimator(mCameraOffButton, 0, + (mLeftDistanceCameraBtn - mLeftDistanceVoiceBtn), + 300, false); + + } + + mMeetingCameraFlag = !mMeetingCameraFlag; + } + + /** + * voice Setting + */ + private void voiceSetting() { + + if (mMeetingVoiceFlag) { + mVoiceButton.setImageResource(R.drawable.btn_voice_off); +// mVideoView.updateLocalVoiceImage(false); + mMeetKit.SetAudioEnable(false); + + } else { + mVoiceButton.setImageResource(R.drawable.btn_voice_on); +// mVideoView.updateLocalVoiceImage(true); + mMeetKit.SetAudioEnable(true); + + } + mMeetingVoiceFlag = !mMeetingVoiceFlag; + + } + + /** + * videoCloseSetting + */ + private void videoCloseSetting() { + + if (mVideoView.getLocalVideoRenderer() != null) { +// mVideoView.getLocalVideoRenderer().setEnabled(false); +// mVideoView.updateLocalVideoImage(false); + mMeetKit.SetVideoEnable(false); + } + + mCameraButton.setImageResource(R.drawable.btn_camera_off_select); + mMettingAnim.rotationOrApaha(mCameraButton, mMeetingCameraFlag); + mMettingAnim.translationAlphaAnimator(mSwitchCameraButton, 0, + (mLeftDistanceCameraBtn - mLeftDistanceHangUpBtn), 300, + false); + mMettingAnim.translationAlphaAnimator(mCameraOffButton, 0, + (mLeftDistanceCameraBtn - mLeftDistanceVoiceBtn), 300, + false); + mMeetingCameraOffFlag = false; + mMeetingCameraFlag = true; + } + + /** + * sendMessageChat + */ + + private void sendMessageChat() { final String pushMsg = mMsg.getText().toString(); - if (TextUtils.isEmpty(pushMsg)) - { - Toast.makeText(this, R.string.str_content_empty, Toast.LENGTH_SHORT) - .show(); + if (TextUtils.isEmpty(pushMsg)) { + Toast.makeText(this, R.string.str_content_empty, Toast.LENGTH_SHORT).show(); return; } - // 推送测试 - String sign = TeamMeetingApp.getMyself().getmAuthorization(); - ChatMessage to = new ChatMessage(Type.OUTPUT, pushMsg,"name"); - to.setDate(new Date()); + if (mMsgSender.TMConnStatus() != JMClientType.CSCONNECTED) { + Toast.makeText(this, R.string.str_message_server_not_connect, Toast.LENGTH_SHORT).show(); + return; + } + + ChatMessage to = new ChatMessage(Type.OUTPUT, pushMsg, "name", System.currentTimeMillis() + ""); mDatas.add(to); mAdapter.notifyDataSetChanged(); mChatView.setSelection(mDatas.size() - 1); mMsg.setText(""); - mNetWork.pushMeetingMsg(sign, mMeetingId, "推送消息", "推送概要"); + // mNetWork.pushMeetingMsg(getSign(), mMeetingId, "push message", "notification"); - int code = StartFlashActivity.mMsgSender.TMSndMsg(mUserId,mPass,mMeetingId,pushMsg); - if(code==0){ - if(mDebug){ - Log.e(TAG, "sendMessageChat: "+"TMSndMsg Successed"); + int code = mMsgSender.TMSndMsg(mMeetingId, mRoomName, pushMsg); + if (code >= 0) { + if (mDebug) { + Log.e(TAG, "sendMessageChat: " + "TMSndMsg Successed"); } - }else if(mDebug){ - Log.e(TAG, "sendMessageChat: "+"TMSndMsg Failed"); + } else if (mDebug) { + Log.e(TAG, "sendMessageChat: " + "TMSndMsg Failed"); } } /** - * OnTouchListener + * leaveMessageDealWith */ - private View.OnTouchListener mOnTouchListener = new View.OnTouchListener() - { - @Override - public boolean onTouch(View v, MotionEvent event) - { - // TODO Auto-generated method stub - if (v.getId() == R.id.meet_parent) - { - if (event.getAction() == MotionEvent.ACTION_UP) - { - // View VISIBLE INVISIBLE - { - if (mDebug) - { - Log.e(TAG, " "); - } - if (mControlLayout.getVisibility() == View.VISIBLE) - { - mControlLayout.setVisibility(View.GONE); - - return true; - } else if (mControlLayout.getVisibility() == View.GONE) - { - mControlLayout.setVisibility(View.VISIBLE); - return true; - } else - { - return false; - } - } - } - return true; - } else - { - return false; - } + private void leaveMessageDealWith() { + String leaveMessageCount = CRUDChat.selectChatList(MeetingActivity.this, mMeetingId).size() + ""; + if (mDebug) { + Log.e(TAG, "leaveMessageDealWith: leaveMessageCount " + leaveMessageCount); } - }; + if (mTvMessageCount.getVisibility() == View.INVISIBLE && !leaveMessageCount.equals("0")) { + mTvMessageCount.setVisibility(View.VISIBLE); + } + mTvMessageCount.setText(leaveMessageCount); + } @Override - public void onPause() - { + protected void onStart() { + super.onStart(); + Log.e(TAG, "onStart: "); + } + + @Override + protected void onRestart() { + super.onRestart(); + videoSetting(); + } + + @Override + public void onPause() { + Log.e(TAG, "onPause: "); super.onPause(); - mAnyM2Mutlier.OnPause(); +// mMeetKit.OnPause(); + } @Override - public void onResume() - { + public void onResume() { super.onResume(); - mAnyM2Mutlier.OnResume(); + Log.e(TAG, "-----------------------------onResume: "); + mChatButton.requestFocus(); +/* if (mVideoView.LocalVideoTrack() != null) { + mVideoView.LocalVideoTrack().setEnabled(true); + } + mMeetKit.SetLocalVideoEnabled(true);*/ } @Override - protected void onDestroy() - { + protected void onStop() { + Log.e(TAG, "onStop: "); + super.onStop(); + if (!isBreakLeave) { + videoCloseSetting(); + } + + } + + @Override + protected void onDestroy() { // TODO Auto-generated method stub - super.onDestroy(); + if (mDebug) + Log.e(TAG, "onDestroy: "); + List activityList = TeamMeetingApp.getMeetingActivityList(); + activityList.clear(); + //mVideoView.CloseLocalRender(); {// Close all - if (mAnyM2Mutlier != null) - { - mAnyM2Mutlier.Destroy(); - mAnyM2Mutlier = null; + if (mMeetKit != null) { + mMeetKit.Clear(); + mMeetKit = null; } } - EventBus.getDefault().unregister(this); + if (mVideoView != null) { + mVideoView.OnRtcRemoveLocalRender(); + mVideoView = null; + } + mMeetingId = null; + + super.onDestroy(); + } /** - * get the Frame Rate, Actual Bitrate and Remote Candidate Type from report - * - * @param reports the video report + * VitualKey Change */ - private void updateEncoderStatistics(StatsReport[] reports) - { - String fps = null; - String targetBitrate = null; - String actualBitrate = null; - String recvByte = null; - String sendByte = null; - String bytesReceived; - String reveivedHeight; - Double reveivedTime; - for (StatsReport report : reports) - { - - bytesReceived = null; - reveivedHeight = null; - if (report.type.equals("ssrc")) - { - reveivedTime = report.timestamp; - Map reportMap = new HashMap(); - - for (StatsReport.Value value : report.values) - { - reportMap.put(value.name, value.value); - - if (value.name.equals("googFrameHeightReceived")) - { - reveivedHeight = value.value; - if (bytesReceived != null) - { - break; - } - } - - if (value.name.equals("bytesReceived")) - { - bytesReceived = value.value; - - } - } + private VitualKey.LayoutKeyChange mLayoutKeyChange = new VitualKey.LayoutKeyChange() { + @Override + public void onLayoutKeyChange(int b) { - if (bytesReceived != null && reveivedHeight != null) - { - mBsNow = bytesReceived; - mTsNow = reveivedTime; - - if (mBsBefore == null || mTsBefore == 0.0) - { - // Skip this round - mBsBefore = mBsNow; - mTsBefore = mTsNow; - } else - { - // Calculate bitrate - - long tempBit = (Integer.parseInt(mBsNow) - Integer - .parseInt(mBsBefore)); - if (tempBit < 0) - continue; - Double tempTime = (mTsNow - mTsBefore); - // Log.e(TAG, - // " tempBit "+tempBit+" tempTime "+tempTime); - long bitRate = Math.round(tempBit * 8 / tempTime); - mBitrate = bitRate + "KB/S"; - - mBsBefore = mBsNow; - mTsBefore = mTsNow; - mUiHandler.sendEmptyMessage(0x01); - } - } + int screenHeight = ScreenUtils.getScreenHeight(MeetingActivity.this); + if (screenHeight - b > 300) { + mChatView.setSelection(mDatas.size() - 1); + }// Vitual key + else if (mVideoView != null) { + mVideoView.onScreenChanged(); } + } + }; + private RTCVideoView.VideoViewPeopleEvent mVideoViewPeopleNumEvent = new RTCVideoView.VideoViewPeopleEvent() { + @Override + public void OnPeopleNumChange(int peopleNum) { + if (mDebug) { + Log.e(TAG, "OnPeopleNumChange: peopleNum " + peopleNum); + } + numberOfDisplay(peopleNum); } + }; + /** + * chat data onReflash + */ + @Override + public void onReflash() { + + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + mMessagePageNum++; + mNetWork.getMeetingMsgList(getSign(), mMeetingId, "" + mMessagePageNum, 20 + ""); + mChatView.reflashComplete(); + } + }, 1500); } + @Override - protected void onPostCreate(Bundle savedInstanceState) - { + protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); } + /** * For M2MultierEvents callback. * All callback is running run handle thread, so could update ui directly. */ + @Override - public void OnRtcPublishOK(String publishId, String rtmpUrl, String hlsUrl) { - //mAnyM2Mutlier.Subscribe(publishId, true); - Toast.makeText(this, "PublishOK id: " + publishId, Toast.LENGTH_SHORT).show(); - StartFlashActivity.mMsgSender.TMNotifyMsg(mUserId,mPass,mMeetingId,publishId); + public void OnRtcJoinMeetOK(String strAnyrtcId) { + } @Override - public void OnRtcPublishFailed(int i, String s) { + public void OnRtcJoinMeetFailed(String s, int i, String s1) { } @Override - public void OnRtcPublishClosed() { + public void OnRtcLeaveMeet(int code) { + if (mDebug) + Log.e(TAG, "OnRtcLeaveMeet: " + code); + if (code != 0) { + mSweetAlertDialog.show(); + } + } + @Override + public void OnRTCOpenVideoRender(final String strLivePeerID) { + MeetingActivity.this.runOnUiThread(new Runnable() { + @Override + public void run() { + final VideoRenderer render = mVideoView.OnRtcOpenRemoteRender(strLivePeerID); + if (null != render) { + mMeetKit.SetRTCVideoRender(strLivePeerID, render.GetRenderPointer()); + } + } + }); } @Override - public void OnRtcSubscribeOK(String s) { + public void OnRTCCloseVideoRender(final String strLivePeerID) { + MeetingActivity.this.runOnUiThread(new Runnable() { + @Override + public void run() { + if (mMeetKit != null) { + mMeetKit.SetRTCVideoRender(strLivePeerID, 0); + } + if (mVideoView != null) { + mVideoView.OnRtcRemoveRemoteRender(strLivePeerID); + } + } + }); + } + @Override + public void OnRTCAVStatus(final String sstrLivePeerID, final boolean audio, final boolean video) { + MeetingActivity.this.runOnUiThread(new Runnable() { + @Override + public void run() { + if (mVideoView != null) { + mVideoView.OnRTCAVStatus(sstrLivePeerID, audio, video); + } + } + }); } + @Override - public void OnRtcSubscribeFailed(String s, int i, String s1) { + public void onRequesageMsg(ReqSndMsgEntity requestMsg) { + super.onRequesageMsg(requestMsg); + if (mDebug) { + Log.e(TAG, "onRequesageMsg: " + requestMsg.toString()); + } + int tags = requestMsg.getTags(); + final String message = requestMsg.getCont(); + final String name = requestMsg.getNname(); + String from = requestMsg.getFrom(); + if (mDebug) { + Log.e(TAG, "onRequesageMsg: " + "requestMsg.getRoom()" + requestMsg.getRoom() + "tags " + tags + " message " + message + " name " + name + " from " + from); + } + Log.e(TAG, mMeetingId + "onRequesageMsg: " + requestMsg.getRoom()); + // MessageTagsDistribute(tags, message, name); + if (mMeetingId != null) { + if (requestMsg.getRoom().equals(mMeetingId.trim())) { + MessageTagsDistribute(tags, message, name); + } + } + //numberOfDisplay(requestMsg.getNmem()); } + + private void numberOfDisplay(int mennum) { + if (mennum > 0) { + MCSENDTAGS_SUBSCRIBE = true; + mTvRemind.setVisibility(View.GONE); + } else { + if (!mControlLayout.mAvailable) { + mControlLayout.show(); + } + MCSENDTAGS_SUBSCRIBE = false; + mTvRemind.setVisibility(View.VISIBLE); + } + } + + private void MessageTagsDistribute(int tags, String message, String name) { + switch (tags) { + case JMClientType.MCSENDTAGS_TALK://1 + mcsendtags_talk(message, name); + break; + case JMClientType.MCSENDTAGS_ENTER://2 + //mTvRemind.setVisibility(View.GONE); + break; + case JMClientType.MCSENDTAGS_LEAVE://3 + break; + default: + break; + + } + } + + @Override - public void OnRtcSubscribeClosed(String s) { + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + isStartAcitvity = intent.getBooleanExtra("startAcitvity", true); + Log.e(TAG, "onNewIntent: -----" + isStartAcitvity); + } + private void mcsendtags_talk(String message, String name) { + ChatMessage to = new ChatMessage(Type.INPUT, message, name, System.currentTimeMillis() + ""); + mDatas.add(to); + mAdapter.notifyDataSetChanged(); + mChatView.setSelection(mDatas.size() - 1); + //mMsg.setText(""); + if (mMessageShowFlag) { + leaveMessageDealWith(); + //addAutoView(message, name); + } } + + private void netWorkTypeStart(int type) { + if (type == NetType.TYPE_NULL.ordinal()) { + mNetErrorSweetAlertDialog.show(); + } else { + mSign = getSign(); + Log.e(TAG, "netWorkTypeStart: mSign" + mSign); + // getListNetWork(); + } + } + + SweetAlertDialog.OnSweetClickListener sweetClickListener = new SweetAlertDialog.OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + sweetAlertDialog.dismiss(); + } + }; + + /** * For EventBus callback. */ - public void onEventMainThread(Message msg) - { - switch (EventType.values()[msg.what]) - { + private Message mMessage; + + public void onEventMainThread(Message msg) { + switch (EventType.values()[msg.what]) { case MSG_MESSAGE_RECEIVE: - int tags = msg.getData().getInt("tags"); - String message= msg.getData().getString("message"); - String name = msg.getData().getString("name"); - if(tags == 4) { - mAnyM2Mutlier.Subscribe(message, true); - return; - } + break; + case MSG_GET_MEETING_MSG_LIST_SUCCESS: + mUiHandler.sendEmptyMessage(MESSAGE_UPDATE); if (mDebug) - Log.e(TAG, "MSG_MESSAGE_RECEIVE "+message); - - ChatMessage to = new ChatMessage(Type.INPUT, message,name); - to.setDate(new Date()); - mDatas.add(to); - mAdapter.notifyDataSetChanged(); - mChatView.setSelection(mDatas.size() - 1); - mMsg.setText(""); - - - if(mMessageShowFlag){ - addAutoView(message,name); - } - + Log.e(TAG, "onEventMainThread: " + "MSG_GET_MEETING_MSG_LIST_SUCCESS "); + break; + case MSG_GET_MEETING_MSG_LIST_FAILED: + if (mDebug) + Log.e(TAG, "onEventMainThread: " + "MSG_GET_MEETING_MSG_LIST_FAILED"); + break; + case MSG_NET_WORK_TYPE: + if (mDebug) + Log.e(TAG, "MSG_NET_WORK_TYPE"); + int type = msg.getData().getInt("net_type"); + netWorkTypeStart(type); + //msgSenderLeave(); + break; + case MSG_NOTIFICATION_MEETINGID_EQUAL: + if (mDebug) + Log.e(TAG, "MSG_NOTIFICATION_MEETINGID_EQUAL"); + Intent resultIntent = new Intent(this, MeetingActivity.class); + startActivity(resultIntent); + break; + case MSG_NOTIFICATION_MEETING_CLOSE_MAIN: + if (mDebug) + Log.e(TAG, "MSG_NOTIFICATION_MEETING_CLOSE_MAIN " + msg.getData().toString()); + msgSenderLeave(); + msg.what = EventType.MSG_NOTIFICATION_MEETING_CLOSE.ordinal(); + EventBus.getDefault().post(msg); + break; + case MSG_URL_MEETING_EXIT: + if (mDebug) + Log.e(TAG, "MSG_URL_MEETING_EXIT"); + msgSenderLeave(); + break; + case MSG_NOTIFY_OFF: + if (mDebug) + Log.e(TAG, "MSG_NOTIFY_OFF: "); + msgSenderLeave(); + msg.what = EventType.MSG_ROOMSEETING_ENTER_ROOM.ordinal(); + EventBus.getDefault().post(msg); break; - default: break; } } + + } diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/MeetingBaseActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/MeetingBaseActivity.java index 236cf56..3f12a68 100644 --- a/app/src/main/java/org/dync/teameeting/ui/activity/MeetingBaseActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/activity/MeetingBaseActivity.java @@ -5,151 +5,91 @@ */ package org.dync.teameeting.ui.activity; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import org.dync.teameeting.R; - -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.ObjectAnimator; import android.app.Activity; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; +import android.os.Looper; import android.view.View; -import android.widget.LinearLayout; import android.widget.RelativeLayout; -import android.widget.RelativeLayout.LayoutParams; -import android.widget.TextView; + +import org.dync.teameeting.R; +import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.bean.ReqSndMsgEntity; +import org.dync.teameeting.chatmessage.ChatMessageClient; +import org.dync.teameeting.chatmessage.IChatMessageInteface; +import org.dync.teameeting.http.NetWork; + +import de.greenrobot.event.EventBus; /** * @author ZLang
* create at 2015-11-30 下午2:48:42 */ -public class MeetingBaseActivity extends Activity -{ - +public class MeetingBaseActivity extends Activity implements IChatMessageInteface { + public String TAG = "MeetingBaseActivity"; + public boolean mDebug = TeamMeetingApp.mIsDebug; private RelativeLayout mainView; - Random random = new Random(); - public int mTopMargin = 0; - private boolean isShowMessage = true; - private List viewList; - private int top; - private int[] colors = new int[]{R.color.skyblue, - R.color.blue_btn_bg_color, R.color.grey_txt, R.color.right_bg, - R.color.grayBlue, R.color.blue_btn_bg_color, R.color.skyblue, - R.color.vifrification, R.color.grayBlue, R.color.mediumslateblue,}; + private ChatMessageClient mChatMessageClinet; + String mSign; + NetWork mNetWork; @Override - protected void onCreate(Bundle savedInstanceState) - { - // TODO Auto-generated method stub + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - //判断是否是平板 - mainView = (RelativeLayout) View.inflate(this, - R.layout.activity_meeting, null); - + mNetWork = new NetWork(); + mainView = (RelativeLayout) View.inflate(this, R.layout.activity_meeting, null); setContentView(mainView); - viewList = new ArrayList(); - - //startShowMessage(); + registerObserverClinet(); } + private void registerObserverClinet() { + mChatMessageClinet = TeamMeetingApp.getmChatMessageClient(); + mChatMessageClinet.registerObserver(chatMessageObserver); + } + @Override + protected void onResume() { + super.onResume(); + TeamMeetingApp.getTeamMeetingApp().stopMediaplayer(); + } - - public void addAutoView(String msg ,String name) - { - - MoveDownView(); - final LinearLayout showView = (LinearLayout) View.inflate(this, - R.layout.text_view, null); - TextView tvChatContent = (TextView) showView.findViewById(R.id.tv_chat_content); - TextView tvSendName = (TextView) showView.findViewById(R.id.tv_send_name); - showView.setBackgroundColor(colors[random.nextInt(10)]); - LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, - LayoutParams.WRAP_CONTENT); - params.addRule(RelativeLayout.ALIGN_PARENT_TOP); - params.topMargin = (int) getResources().getDimension(R.dimen.height_top_bar); - - showView.setLayoutParams(params); - showView.postDelayed(new Runnable() - { - @Override - public void run() - { - alphaAnimation(showView, viewList); + /*** + * The message the subscriber + */ + ChatMessageClient.ChatMessageObserver chatMessageObserver = new ChatMessageClient.ChatMessageObserver() { + @Override + public void OnReqSndMsg(final ReqSndMsgEntity reqSndMsg) { + if (Looper.myLooper() != Looper.getMainLooper()) { + runOnUiThread(new Runnable() { + @Override + public void run() { + onRequesageMsg(reqSndMsg); + } + }); + } else { + onRequesageMsg(reqSndMsg); } - }, 1000); - viewList.add(showView); - mainView.addView(showView); - - - tvChatContent.setText(msg); - tvSendName.setText(name); + } - } + }; - private void alphaAnimation(final View view, - final List viewList) - { - view.clearAnimation(); - ObjectAnimator anim = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f); - anim.addListener(new AnimatorListenerAdapter() - { - @Override - public void onAnimationEnd(Animator animation) - { - super.onAnimationEnd(animation); - viewList.remove(view); - } - }); - anim.setDuration(3000).start(); - } - private void MoveDownView() - { - int topMargin = 0; - for (int i = 0; i < viewList.size(); i++) - { - LinearLayout linearLayout = viewList.get(i); - topMargin = linearLayout.getHeight() + 20; - LayoutParams layoutParams = (LayoutParams) linearLayout - .getLayoutParams(); - layoutParams.topMargin += topMargin; - linearLayout.setLayoutParams(layoutParams); - } + @Override + protected void onDestroy() { + super.onDestroy(); + mChatMessageClinet.unregisterObserver(chatMessageObserver); + EventBus.getDefault().unregister(this); } - public void startShowMessage() - { - isShowMessage = true; - // handler.sendEmptyMessage(0); + public String getSign() { + return TeamMeetingApp.getmSelfData().getAuthorization(); } - public void stopShowMessage() - { - isShowMessage = false; - // 移除所有的消息 - // handler.removeCallbacksAndMessages(null); + public int controllerMoveDistance(View chactView) { + return chactView.getWidth() / 2; } + @Override + public void onRequesageMsg(ReqSndMsgEntity requestMsg) { - - /** - * @param chactView - * @return - */ - public int controllerMoveDistance(View chactView) - { - /* int betweenWidth = ScreenUtils.getScreenWidth(this)-chactView.getWidth() - ScreenUtils.getScreenWidth(this)/2; - Log.i("xbl", "onTouchEvent: ScreenUtils.getScreenWidth(this)"+ ScreenUtils.getScreenWidth(this) +"chactView"+chactView.getWidt*/ - return chactView.getWidth()/2; } - - - } diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/NotifyActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/NotifyActivity.java new file mode 100644 index 0000000..2f3d876 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/ui/activity/NotifyActivity.java @@ -0,0 +1,93 @@ +package org.dync.teameeting.ui.activity; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.os.Message; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; + +import org.dync.teameeting.R; +import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.http.NetWork; +import org.dync.teameeting.structs.EventType; +import org.dync.teameeting.structs.JoinActType; + +import java.util.List; + +import de.greenrobot.event.EventBus; +import me.drakeet.materialdialog.MaterialDialog; + +/** + * Created by liuxiaozhong on 2016/4/15. + */ +public class NotifyActivity extends Activity { + MaterialDialog dialog; + String roomId; + public NetWork mNetWork; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_notify); + init(); + + } + + private void init() { + Intent i = getIntent(); + String roomMaster = i.getStringExtra("roomMaster"); + roomId = i.getStringExtra("roomId"); + String roomName = i.getStringExtra("roomName"); + View view = LayoutInflater.from(this).inflate(R.layout.item_notify, null); + TextView title = (TextView) view.findViewById(R.id.tv_notify_title); + TextView room = (TextView) view.findViewById(R.id.tv_notify_roomname); + title.setText(roomMaster + "邀请您加入会议"); + room.setText(roomName); + dialog = new MaterialDialog(this) + .setTitle("通知") + .setContentView(view) + .setPositiveButton("入会", new PositiveButtonOnclick()) + .setNegativeButton("忽略", new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + finish(); + } + }); + dialog.show(); + } + + public class PositiveButtonOnclick implements View.OnClickListener { + + @Override + public void onClick(View v) { + meetingDealWith(); + finish(); + } + } + + private void meetingDealWith() { + int position = TeamMeetingApp.getmSelfData().getMeetingIdPosition(roomId); + if (position >= 0) { + Message msg = new Message(); + List activityList = TeamMeetingApp.getMeetingActivityList(); + if (activityList.size()>0){ + String mMeetingId = activityList.get(0); + if (mMeetingId!=null){ + msg.what = EventType.MSG_NOTIFY_OFF.ordinal(); + } + }else { + msg.what = EventType.MSG_ROOMSEETING_ENTER_ROOM.ordinal(); + } + msg.obj = position; + EventBus.getDefault().post(msg); + finish(); + } else { + mNetWork.getMeetingInfo(roomId, JoinActType.JOIN_START_ACTIVITY); + } + + } + +} diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/RoomSettingActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/RoomSettingActivity.java index 609d6ae..b1dddba 100644 --- a/app/src/main/java/org/dync/teameeting/ui/activity/RoomSettingActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/activity/RoomSettingActivity.java @@ -1,38 +1,40 @@ package org.dync.teameeting.ui.activity; -import org.apache.http.Header; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.Message; +import android.util.Log; +import android.view.KeyEvent; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + import org.dync.teameeting.R; import org.dync.teameeting.TeamMeetingApp; -import org.dync.teameeting.bean.MeetingList; -import org.dync.teameeting.http.HttpContent; -import org.dync.teameeting.http.NetWork; +import org.dync.teameeting.bean.MeetingListEntity; import org.dync.teameeting.structs.EventType; +import org.dync.teameeting.structs.ExtraType; +import org.dync.teameeting.structs.HttpApiTpye; import org.dync.teameeting.structs.Intent_KEY; +import org.dync.teameeting.structs.ShareUrl; import org.dync.teameeting.ui.helper.Anims; +import org.dync.teameeting.ui.helper.DialogHelper; import org.dync.teameeting.ui.helper.ShareHelper; -import org.dync.teameeting.structs.ExtraType; import org.dync.teameeting.widgets.BottomMenu; import org.dync.teameeting.widgets.BottomMenu.OnTouchSpeedListener; import org.dync.teameeting.widgets.SlideSwitch; import org.dync.teameeting.widgets.SlideSwitch.SlideListener; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.Message; -import android.util.Log; -import android.view.View; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; -import android.widget.Toast; +import cn.pedant.SweetAlert.SweetAlertDialog; +import de.greenrobot.event.EventBus; -import com.loopj.android.http.TextHttpResponseHandler; public class RoomSettingActivity extends BaseActivity implements View.OnClickListener { + private static String TAG = "RoomSettingActivity"; private Context context; private Boolean mDebug = TeamMeetingApp.mIsDebug; - private String TAG = "RoomSettingActivity"; private TextView mTvRoomName; private TextView mTvJoninRoom; private TextView mTvIniviteMessage; @@ -45,19 +47,83 @@ public class RoomSettingActivity extends BaseActivity implements View.OnClickLis private TextView mTvClose; private SlideSwitch mSlideSwitch; private SlideSwitch mSlideSwitchPrivate; - MeetingList.MeetingListEntity mMeetingEntity; + private MeetingListEntity mMeetingEntity; private String mMeetingName; private String mMeetingId; - private int mPosition; - private ShareHelper mShareHelper; - - private String mShareUrl = "没有设置连接"; + private String mShareUrl = "Empty url"; private ImageView ivNotifation; + private boolean mMeetingPrivateFlag = false; + private int mOwner; + private View mvRoomName; + private View vJoninRoom; + private View mvIniviteMessage; + private View mvInviteWeiXin; + private View mvCopyLink; + private View mvNotifications; + private View mvRenameRoom; + private View mvDeleteRoom; + private View mvMeetingPrivate; + private boolean mNotificationsStates; + private boolean isStartActivity = false; + + /** + * ?Touch slide Listener + */ + OnTouchSpeedListener onTouchSpeedListener = new OnTouchSpeedListener() { + @Override + public void touchSpeed(int velocityX, int velocityY) { + setResult(ExtraType.RESULT_CODE_ROOM_SETTING_CLOSE); + finishActivity(); + } + }; + + /** + * mslideMeetingPrivateListener + */ + SlideListener mslideMeetingPrivateListener = new SlideListener() { + public void open() { + mNetWork.updateRoomEnable(mSign, mMeetingId, HttpApiTpye.RoomEnablePrivate, mPosition); + + mMeetingPrivateFlag = true; + if (isStartActivity){ + privateDilaog.show(); + } + meetingPrivateUIUpdate(); + } - private boolean mMeetingPrivateFlag=false; + @Override + public void close() { + mNetWork.updateRoomEnable(mSign, mMeetingId, HttpApiTpye.RoomEnableYes, mPosition); + mMeetingPrivateFlag = false; + meetingPrivateUIUpdate(); + } + }; + + /** + * slideNotificationListener + */ + SlideListener slideNotificationListener = new SlideListener() { + @Override + public void open() { + mNetWork.updateRoomPushable(mSign, mMeetingId, HttpApiTpye.pushableYes, mPosition); + + Anims.ScaleAnim(ivNotifation, 1, 0, 100); + mNotificationsStates = true; + } + + @Override + public void close() { + mNetWork.updateRoomPushable(mSign, mMeetingId, HttpApiTpye.pushableNO, mPosition); + ivNotifation.setVisibility(View.VISIBLE); + if (mNotificationsStates) + Anims.ScaleAnim(ivNotifation, 0, 1, 100); + mNotificationsStates = false; + } + }; + private SweetAlertDialog privateDilaog; @Override protected void onCreate(Bundle savedInstanceState) { @@ -67,47 +133,86 @@ protected void onCreate(Bundle savedInstanceState) { context = this; initData(); initLayout(); + inintSwitchState(); + initwidgetState(); + } + @Override + protected void onResume() { + super.onResume(); + mTvJoninRoom.requestFocus(); } private void initData() { Intent intent = getIntent(); mPosition = intent.getIntExtra(Intent_KEY.POSITION, 0); Bundle extras = intent.getExtras(); - mMeetingEntity = (MeetingList.MeetingListEntity) extras.getSerializable(Intent_KEY.MEETING_ENTY); + mMeetingEntity = (MeetingListEntity) extras.getSerializable(Intent_KEY.MEETING_ENTY); mMeetingId = mMeetingEntity.getMeetingid(); mMeetingName = mMeetingEntity.getMeetname(); + mOwner = mMeetingEntity.getOwner(); + if (mDebug) { Log.e(TAG, mMeetingEntity.toString()); } mSign = getSign(); + mShareUrl = ShareUrl.SHARE_URL + mMeetingId; + + createPrivateDialog(); + } + + private void createPrivateDialog() { + privateDilaog = DialogHelper.createPrivateDilaog(context); + privateDilaog.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + mMeetingPrivateFlag = true; + sweetAlertDialog.dismiss(); + } + }); + privateDilaog.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + mMeetingPrivateFlag = false; + sweetAlertDialog.dismiss(); + mSlideSwitchPrivate.setState(mMeetingPrivateFlag); + } + }); } void initLayout() { mTvRoomName = (TextView) findViewById(R.id.tv_room_name); + mvRoomName = findViewById(R.id.v_room_name); + mTvRoomName.setText(mMeetingName); mTvJoninRoom = (TextView) findViewById(R.id.tv_join_room); + vJoninRoom = findViewById(R.id.v_join_room); mTvJoninRoom.setOnClickListener(this); mTvIniviteMessage = (TextView) findViewById(R.id.tv_invite_message); + mvIniviteMessage = findViewById(R.id.v_invite_message); mTvIniviteMessage.setOnClickListener(this); mTvInviteWeixin = (TextView) findViewById(R.id.tv_invite_weixin); + mvInviteWeiXin = findViewById(R.id.v_invite_weixin); mTvInviteWeixin.setOnClickListener(this); mTvCopyLink = (TextView) findViewById(R.id.tv_copy_link); + mvCopyLink = findViewById(R.id.v_copy_link); mTvCopyLink.setOnClickListener(this); mLlNotifications = (LinearLayout) findViewById(R.id.ll_notifications); + mvNotifications = findViewById(R.id.v_notifications); mLlNotifications.setOnClickListener(this); // mLlNotifications.setOnTouchListener(); - mTvRenameRoom = (TextView) findViewById(R.id.tv_rename_room); + mvRenameRoom = findViewById(R.id.v_rename_room); mTvRenameRoom.setOnClickListener(this); mTvDeleteRoom = (TextView) findViewById(R.id.tv_delete_room); + mvDeleteRoom = findViewById(R.id.v_delete_room); mTvDeleteRoom.setOnClickListener(this); mTvClose = (TextView) findViewById(R.id.tv_close); @@ -116,9 +221,11 @@ void initLayout() { mSlideSwitch.setSlideListener(slideNotificationListener); mSlideSwitchPrivate = (SlideSwitch) findViewById(R.id.ss_SlideSwitch_private); + mSlideSwitchPrivate.setSlideListener(mslideMeetingPrivateListener); mLlMeetingPrivate = (LinearLayout) findViewById(R.id.ll_private); + mvMeetingPrivate = findViewById(R.id.v_private); mLlMeetingPrivate.setOnClickListener(this); ivNotifation = (ImageView) findViewById(R.id.iv_notifications); @@ -128,39 +235,55 @@ void initLayout() { } private void inintSwitchState() { - boolean state = mMeetingEntity.getPushable() == 1 ? true : false; - mSlideSwitch.setState(state); - if (!state) { - Anims.ScaleAnim(ivNotifation, 0, 1, 10); + if (mMeetingEntity.getPushable() == 0) { + ivNotifation.setVisibility(View.VISIBLE); + mNotificationsStates = false; + } else { + ivNotifation.setVisibility(View.GONE); + mNotificationsStates = true; } - - mMeetingPrivateFlag = mMeetingEntity.getMeetusable() == 2 ? true : false; + mSlideSwitch.setState(mNotificationsStates); + mMeetingPrivateFlag = (mMeetingEntity.getMeetenable() == 2) ? true : false; mSlideSwitchPrivate.setState(mMeetingPrivateFlag); + isStartActivity=true; + } + private void initwidgetState() { + int visible; + if (mOwner == 1) { + visible = View.VISIBLE; + } else { + visible = View.GONE; + } + + viewVisilility(visible); } - /** - *  Touch slide Listener - */ - OnTouchSpeedListener onTouchSpeedListener = new OnTouchSpeedListener() { + public void viewVisilility(int visible) { + mTvIniviteMessage.setVisibility(visible); + mvIniviteMessage.setVisibility(visible); - @Override - public void touchSpeed(int velocityX, int velocityY) { - setResult(ExtraType.RESULT_CODE_ROOM_SETTING_CLOSE); - finishActivity(); - } - }; + mTvInviteWeixin.setVisibility(visible); + mvInviteWeiXin.setVisibility(visible); + mTvCopyLink.setVisibility(visible); + mvCopyLink.setVisibility(visible); - private void meetingPrivateUIUpdate(){ - if(mMeetingPrivateFlag){ - mTvIniviteMessage.setTextColor(getResources().getColor(R.color.black)); - mTvInviteWeixin.setTextColor(getResources().getColor(R.color.black)); - mTvCopyLink.setTextColor(getResources().getColor(R.color.black)); + mTvRenameRoom.setVisibility(visible); + mvRenameRoom.setVisibility(visible); + mLlMeetingPrivate.setVisibility(visible); + mvMeetingPrivate.setVisibility(visible); + } + + private void meetingPrivateUIUpdate() { + if (mMeetingPrivateFlag) { + mTvIniviteMessage.setTextColor(getResources().getColor(R.color.darkGray)); + mTvInviteWeixin.setTextColor(getResources().getColor(R.color.darkGray)); + mTvCopyLink.setTextColor(getResources().getColor(R.color.darkGray)); mTvIniviteMessage.setClickable(false); mTvInviteWeixin.setClickable(false); mTvCopyLink.setClickable(false); - }else{ + } else { mTvIniviteMessage.setTextColor(getResources().getColor(R.color.white)); mTvInviteWeixin.setTextColor(getResources().getColor(R.color.white)); mTvCopyLink.setTextColor(getResources().getColor(R.color.white)); @@ -170,117 +293,69 @@ private void meetingPrivateUIUpdate(){ } } - /** - * mslideMeetingPrivateListener - */ - SlideListener mslideMeetingPrivateListener = new SlideListener() { - public void open() { - mNetWork.updateRoomEnable(mSign,mMeetingId,"2"); - mMeetingPrivateFlag =true; - meetingPrivateUIUpdate(); - } - - @Override - public void close() { - mNetWork.updateRoomEnable(mSign,mMeetingId,"1"); - mMeetingPrivateFlag = false; - meetingPrivateUIUpdate(); - } - }; - - /** - * slideNotificationListener - */ - - SlideListener slideNotificationListener = new SlideListener() { - @Override - public void open() { - - mNetWork.updateRoomPushable(mSign, mMeetingId, 1 + ""); - Anims.ScaleAnim(ivNotifation, 1, 0, 500); - Toast.makeText(context, "打开推送", Toast.LENGTH_SHORT).show(); - } - - @Override - public void close() { - - mNetWork.updateRoomPushable(mSign, mMeetingId, 0 + ""); - Anims.ScaleAnim(ivNotifation, 0, 1, 500); - String url = "meeting/getMeetingInfo/" + mMeetingId; - - Log.e(TAG, "close: mMeetingId" + mMeetingId); - HttpContent.get(url, new TextHttpResponseHandler() { - @Override - public void onFailure(int i, Header[] headers, String respospone, Throwable throwable) { - Log.e(TAG, "onFailure: respospone" + respospone); - } - - @Override - public void onSuccess(int i, Header[] headers, String respospone) { - Log.e(TAG, "onSuccess: respospone" + respospone); - } - }); - - } - }; - - - - - - @Override public void onClick(View view) { Intent intent = null; + switch (view.getId()) { case R.id.tv_close: setResult(ExtraType.RESULT_CODE_ROOM_SETTING_CLOSE); - if (mDebug) + + if (mDebug) { Log.e(TAG, "onClick: setResult"); + } finishActivity(); + return; - case R.id.tv_join_room: - intent = new Intent(RoomSettingActivity.this, MeetingActivity.class); - intent.putExtra("meetingName", mMeetingName); + case R.id.tv_join_room: + statrMeetingActivity(); finishActivity(); + break; + case R.id.tv_invite_message: // SMS - mShareUrl ="让我们在会议中见!"+"http://115.28.70.232/share_meetingRoom/#"+mMeetingId; mShareHelper.shareSMS(this, "", mShareUrl); - break; + case R.id.tv_invite_weixin: // weixin - mShareUrl ="让我们在会议中见!:"+"http://115.28.70.232/share_meetingRoom/#"+mMeetingId; - mShareHelper - .shareWeiXin("分享到... ", "", mShareUrl); + mShareHelper.shareWeiXin(mShareUrl); finishActivity(); + break; + case R.id.tv_copy_link: - setResult(ExtraType.RESULT_CODE_ROOM_SETTING_COPY_LINK); + intent = new Intent(); + intent.putExtra("shareUrl", mShareUrl); + setResult(ExtraType.RESULT_CODE_ROOM_SETTING_COPY_LINK, intent); finish(); break; + case R.id.ll_notifications: + if (mSlideSwitch.isOpen) { mSlideSwitch.moveToDest(false); } else { mSlideSwitch.moveToDest(true); } + break; + case R.id.ll_private: + if (mSlideSwitchPrivate.isOpen) { mSlideSwitchPrivate.moveToDest(false); } else { mSlideSwitchPrivate.moveToDest(true); } + break; case R.id.tv_rename_room: - intent = new Intent(); intent.putExtra("position", mPosition); intent.putExtra("meetingId", mMeetingId); @@ -288,19 +363,36 @@ public void onClick(View view) { setResult(ExtraType.RESULT_CODE_ROOM_SETTING_RENAME, intent); finishActivity(); + break; + case R.id.tv_delete_room: intent = new Intent(); intent.putExtra("position", mPosition); intent.putExtra("meetingId", mMeetingId); setResult(ExtraType.RESULT_CODE_ROOM_SETTING_DELETE, intent); finishActivity(); + break; default: break; + } + } + + private void statrMeetingActivity() { + Message msg = Message.obtain(); + msg.obj = mPosition; + msg.what = EventType.MSG_ROOMSEETING_ENTER_ROOM.ordinal(); + EventBus.getDefault().post(msg); + /* Intent intent = new Intent(context, MeetingActivity.class); + + Bundle bundle = new Bundle(); + bundle.putSerializable("meetingListEntity", mMeetingEntity); + intent.putExtras(bundle); + startActivity(intent);*/ } private void finishActivity() { @@ -309,19 +401,36 @@ private void finishActivity() { R.anim.activity_close_exit); } - @Override public void onEventMainThread(Message msg) { switch (EventType.values()[msg.what]) { case MSG_UPDATE_ROOM_PUSHABLE_SUCCESS: - if (mDebug) + + if (mDebug) { Log.e(TAG, "onEventMainThread: MSG_UPDATE_ROOM_PUSHABLE_SUCCESS"); + } + break; + case MSG_UPDATE_ROOM_PUSHABLE_FAILED: - if (mDebug) + + if (mDebug) { Log.e(TAG, "onEventMainThread: MSG_UPDATE_ROOM_PUSHABLE_FAILED"); + } + break; } } + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + setResult(ExtraType.RESULT_CODE_ROOM_SETTING_CLOSE); + finishActivity(); + } + return super.onKeyDown(keyCode, event); + } + private String buildTransaction(final String type) { + return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); + } } diff --git a/app/src/main/java/org/dync/teameeting/ui/activity/StartFlashActivity.java b/app/src/main/java/org/dync/teameeting/ui/activity/StartFlashActivity.java index 2418888..e2e8a67 100644 --- a/app/src/main/java/org/dync/teameeting/ui/activity/StartFlashActivity.java +++ b/app/src/main/java/org/dync/teameeting/ui/activity/StartFlashActivity.java @@ -2,284 +2,589 @@ import android.content.Context; import android.content.Intent; -import android.nfc.Tag; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.Uri; import android.os.Bundle; import android.os.Handler; +import android.os.Looper; import android.os.Message; import android.util.Log; +import android.view.View; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.Toast; + +import com.orhanobut.logger.Logger; import org.dync.teameeting.R; -import org.dync.teameeting.http.NetWork; import org.dync.teameeting.TeamMeetingApp; -import org.dync.teameeting.msgs.TMMsgSender; -import org.dync.teameeting.sdkmsgclientandroid.jni.JMClientType; -import org.dync.teameeting.ui.helper.DialogHelper; +import org.dync.teameeting.bean.MeetingListEntity; +import org.dync.teameeting.http.HttpContent; +import org.dync.teameeting.receiver.MyReceiver; +import org.dync.teameeting.sdkmsgclient.msgs.TMMsgSender; import org.dync.teameeting.structs.EventType; +import org.dync.teameeting.structs.JoinActType; import org.dync.teameeting.structs.NetType; +import org.dync.teameeting.ui.helper.DialogHelper; import org.dync.teameeting.utils.LocalUserInfo; +import org.dync.teameeting.utils.StringHelper; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; -import cn.jpush.android.api.CustomPushNotificationBuilder; import cn.jpush.android.api.JPushInterface; +import cn.jpush.android.api.TagAliasCallback; import cn.pedant.SweetAlert.SweetAlertDialog; import cn.pedant.SweetAlert.SweetAlertDialog.OnSweetClickListener; +import de.greenrobot.event.EventBus; /** * @author zhangqilu org.dync.teammeeting.activity StartFlashActivity create at * 2015-12-11 17:00:42 */ - -public class StartFlashActivity extends BaseActivity -{ - +public class StartFlashActivity extends BaseActivity { private static final String TAG = "StartFlashActivity"; - private final int MessageConnectedFailed = 0x01; + private static final String JPUSH = "JPush"; + private static final int MSG_SET_ALIAS = 1001; + private static final int MSG_SET_TAGS = 1002; public SweetAlertDialog mNetErrorSweetAlertDialog; - private ImageView mView; private Context context; - public static TMMsgSender mMsgSender; - private final String mServer = "192.168.7.27"; - private final int mPort = 9210; - private String mUserid ; - private String mSign; - - /*message login deal with */ - private Handler mHandler = new Handler(){ + private TMMsgSender mMsgSender; + private boolean isNotifactionChack = false; + private final String mServer = HttpContent.SERVICE_URL; + private final int mPort = HttpContent.MSG_SERVICE_POINT; + private String mUserid; + private String mSign; + private ProgressBar mLoadingProgress; + private String mUrlMeetingId = null; + private Integer mTags = 0; + private String mMeetingName; + private String mAnyrtcid; + + private String mNname = "nick name"; + private final Handler mHandler = new Handler() { @Override - public void handleMessage(Message msg) { + public void handleMessage(android.os.Message msg) { super.handleMessage(msg); - if(msg.what==MessageConnectedFailed){ - messageLogin(); + + switch (msg.what) { + case MSG_SET_ALIAS: { + Log.d(JPUSH, "Set alias in handler."); + JPushInterface.setAliasAndTags(getApplicationContext(), + (String) msg.obj, null, mAliasCallback); + } + + break; + + case MSG_SET_TAGS: { + String tag = TeamMeetingApp.getTeamMeetingApp().getDevId(); + Set tagSet = new HashSet(); + tagSet.add(tag); + JPushInterface.setAliasAndTags(getApplicationContext(), + tag, tagSet, mTagsCallback); + } + + break; + + default: + Log.i(JPUSH, "Unhandled msg - " + msg.what); } + } + }; + private AnimationListener mAnimationListener = new AnimationListener() { + @Override + public void onAnimationStart(Animation arg0) { + } + + @Override + public void onAnimationRepeat(Animation arg0) { + // TODO Auto-generated method stub + } + + @Override + public void onAnimationEnd(Animation arg0) { + mNetWork.init(mUserid, "2", "2", "2", "TeamMeeting"); + } + }; + + OnSweetClickListener sweetClickListener = new OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + sweetAlertDialog.dismiss(); + initNetWork(); } }; + @Override + protected void onRestart() { + super.onRestart(); + Log.e(TAG, "onRestart: "); + } + @Override + protected void onResume() { + super.onResume(); + if (mDebug) + Log.e(TAG, "onResume: "); + } + + @Override + protected void onPause() { + super.onPause(); + if (mDebug) + Log.e(TAG, "onPause: "); + } + + @Override + protected void onStop() { + super.onStop(); + if (mDebug) + Log.e(TAG, "onStop: "); + } @Override - protected void onCreate(Bundle savedInstanceState) - { + protected void onDestroy() { + super.onDestroy(); + if (mDebug) + Log.e(TAG, "onDestroy: "); + } + + private final TagAliasCallback mAliasCallback = new TagAliasCallback() { + @Override + public void gotResult(int code, String alias, Set tags) { + String logs; + + switch (code) { + case 0: + logs = "Set tag and alias success"; + Log.i(JPUSH, logs); + break; + + case 6002: + logs = "Failed to set alias and tags due to timeout. Try again after 60s."; + Log.i(JPUSH, logs); + + if (isConnected(getApplicationContext())) { + mHandler.sendMessageDelayed(mHandler.obtainMessage( + MSG_SET_ALIAS, alias), 1000 * 60); + } else { + Log.i(JPUSH, "No network"); + } + + break; + + default: + logs = "Failed with errorCode = " + code; + Log.e(JPUSH, logs); + } + // showToast(logs, getApplicationContext()); + } + }; + + private final TagAliasCallback mTagsCallback = new TagAliasCallback() { + @Override + public void gotResult(int code, String alias, Set tags) { + String logs; + + switch (code) { + case 0: + logs = "Set tag and alias success"; + Log.i(JPUSH, logs); + + break; + + case 6002: + logs = "Failed to set alias and tags due to timeout. Try again after 60s."; + Log.i(JPUSH, logs); + + if (isConnected(getApplicationContext())) { + mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_TAGS, tags), 1000 * 60); + } else { + Log.i(JPUSH, "No network"); + } + break; + + default: + logs = "Failed with errorCode = " + code; + Log.e(JPUSH, logs); + } + //showToast(logs, getApplicationContext()); + } + }; + @Override + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_start_flash); - mView = (ImageView) findViewById(R.id.splash_image); - context = this; + + if (TeamMeetingApp.isInitFalg) { + //App run + onStartAgain(getIntent()); + finish(); + return; + } + Log.e(TAG, "------------------------------onCreate: "); + inintView(); initData(); + setTag(); + } + + /** + * againg App + * @param intent + */ + private void onStartAgain(Intent intent) { + String action = intent.getAction(); + Uri uri = intent.getData(); + if (mDebug) { + Log.e(TAG, "onStartAgain: action --" + action + "uri---" + uri); + } + + if (Intent.ACTION_VIEW.equals(action) && uri != null) { + String urlMeetingid = StringHelper.uriToMeetingId(uri.toString()).trim(); + Log.e(TAG, "onStartAgain: " + uri.toString() + "--uriMeetingid" + urlMeetingid); + + if (urlMeetingid != null) { + List meetingActivityList = TeamMeetingApp.getMeetingActivityList(); + if (meetingActivityList.size() > 0) { + String runMeetingId = meetingActivityList.get(0); + Log.e(TAG, urlMeetingid + "urlMeetingid---onStartAgain: --runMeetingId" + runMeetingId); + if (runMeetingId.equals(urlMeetingid)) { + startActivity(MeetingActivity.class); + return; + } else { + Message msg = new Message(); + msg.what= EventType.MSG_URL_MEETING_EXIT.ordinal(); + EventBus.getDefault().post(msg); + } + } + } + + + intent.setClass(this, MainActivity.class); + intent.putExtra("urlMeetingId", urlMeetingid); + startActivity(intent); + + } else { + Log.e(TAG, "onStartAgain: 启动异常"); + } - // 设置推送的样式 - //setPushNotificationBuilderIcon(); } + private void startActivity(Class activityCls) { + Intent intent = new Intent(StartFlashActivity.this, activityCls); + startActivity(intent); + } + + + + + private void setTag() { + mHandler.sendEmptyMessage(MSG_SET_TAGS); + } - public void setPushNotificationBuilderIcon() - { - CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder( - this, R.layout.customer_notitfication_layout, R.id.icon, - R.id.title, R.id.text); - // 指定定制的 Notification Layout - builder.statusBarDrawable = R.drawable.ic_richpush_actionbar_back; - // 指定层状态栏小图标 - builder.layoutIconDrawable = R.drawable.ic_richpush_actionbar_back; - // 指定下拉状态栏时显示的通知图标 - JPushInterface.setPushNotificationBuilder(2, builder); + /** + * inint View + */ + private void inintView() { + mView = (ImageView) findViewById(R.id.splash_image); + mLoadingProgress = (ProgressBar) findViewById(R.id.pb_loading); } /** * inintData */ - private void initData() - { + private void initData() { + context = this; mNetErrorSweetAlertDialog = DialogHelper.createNetErroDilaog(this, sweetClickListener); - mUserid = TeamMeetingApp.getTeamMeetingApp().getDevId(); - /*message inint */ - mMsgSender = new TMMsgSender(this); - int msg = mMsgSender.TMInit(mServer, mPort); - if(msg ==0){ - if(mDebug) - Log.e(TAG, "Message Inint successed"); + Animation loadAnimation = AnimationUtils.loadAnimation(this, R.anim.splash); + loadAnimation.setAnimationListener(mAnimationListener); + mView.setAnimation(loadAnimation); - } - else if(mDebug){ - Log.e(TAG, "Message Inint failed"); + Intent intent = getIntent(); + String action = intent.getAction(); + Log.e(TAG, "initData: " + action); + if (Intent.ACTION_VIEW.equals(action)) { + Uri uri = intent.getData(); + if (uri != null) { + String content = uri.toString(); + mUrlMeetingId = StringHelper.uriToMeetingId(content); + isNotifactionChack = false; + if (mDebug) { + Log.e(TAG, "initData: " + uri.toString() + " content " + content + "--mUrlMeetingId" + mUrlMeetingId); + } + } + } else if (MyReceiver.ACTIVITY_ACTION_NOTIFACTION.equals(action)) { + Bundle bundle = intent.getExtras(); + String notifaction = bundle.getString(JPushInterface.EXTRA_EXTRA); + isNotifactionChack = true; + JSONObject json = null; + try { + json = new JSONObject(notifaction); + mUrlMeetingId = json.getString("roomid"); + mTags = json.getInt("tags"); + if (mDebug) { + Log.e(TAG, "meetingId" + mUrlMeetingId); + } + } catch (JSONException e) { + e.printStackTrace(); + } } + } + public static boolean isNetworkAvailable(Context context) { + ConnectivityManager connectivity = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + if (connectivity != null) { + NetworkInfo info = connectivity.getActiveNetworkInfo(); + if (info != null && info.isConnected()) { + // 当前网络是连接的 + if (info.getState() == NetworkInfo.State.CONNECTED) { + // 当前所连接的网络可用 + Log.e(TAG, "isNetworkAvailable: true"); + return true; + } + } + } + Log.e(TAG, "isNetworkAvailable: false"); + return false; + } - Animation loadAnimation = AnimationUtils.loadAnimation(this, - R.anim.splash); - loadAnimation.setAnimationListener(mAnimationListener); - mView.setAnimation(loadAnimation); + /** + * @param msg + */ + private void setBundle(Message msg) { + JSONObject json = new JSONObject(); + try { + json.put("roomid", mUrlMeetingId); + json.put("tags", 0); + Bundle bundle = new Bundle(); + bundle.putString(JPushInterface.EXTRA_EXTRA, json.toString()); + Log.e(TAG, "setBundle: json.tostring" + json.toString()); + msg.setData(bundle); + } catch (JSONException e) { + e.printStackTrace(); + } } - private AnimationListener mAnimationListener = new AnimationListener() - { - @Override - public void onAnimationStart(Animation arg0) - { + /** + * chatMessageInint + */ + private void chatMessageInint() { + mNname = TeamMeetingApp.getmSelfData().getInformation().getUname(); + if (mDebug) { + Log.e(TAG, "chatMessageInint: " + mMsgSender); } - @Override - public void onAnimationRepeat(Animation arg0) - { - // TODO Auto-generated method stub - + if (mMsgSender == null) { + mMsgSender = new TMMsgSender(TeamMeetingApp.getTeamMeetingApp().getContext(), TeamMeetingApp.getmChatMessageClient()); } - @Override - public void onAnimationEnd(Animation arg0) - { + TeamMeetingApp.getTeamMeetingApp().setmMsgSender(mMsgSender); + if (mNname == null) { + mNname = "null name"; + } - mNetWork.init(mUserid, "2", "2", "2", "TeamMeeting"); + if (mDebug) { + Log.e(TAG, "chatMessageInint: mNname " + mNname); } - }; + int msg = mMsgSender.TMInit(mUserid, mSign, mNname, mServer, mPort); + + if (msg >= 0) { + if (mDebug) { + Log.e(TAG, "Chat Message Inint successed"); + } + } else if (mDebug) { + Log.e(TAG, "Chat Message Inint failed"); + } + } /** * interfacejump */ - private void interfacejump(Message msg ) - { - - Bundle bundle = msg.getData(); - String meetingListStr = bundle.getString(NetWork.MEETING_LIST); + private void interfacejump(Message msg) { + mLoadingProgress.setVisibility(View.GONE); boolean firstLogin = LocalUserInfo.getInstance(StartFlashActivity.this) .getUserInfoBoolean(LocalUserInfo.FIRST_LOGIN); - Intent intent ; - if (true) - { - intent = new Intent(StartFlashActivity.this, GuideActivity.class); - intent.putExtra(NetWork.MEETING_LIST,meetingListStr); - LocalUserInfo.getInstance(StartFlashActivity.this).setUserInfoBoolean("firstLogin", true); - - } else - { + Intent intent; + if (firstLogin) { + LocalUserInfo.getInstance(context).setUserInfoInt(LocalUserInfo.NOTIFIACTION_TAGS, mTags); + intent = new Intent(StartFlashActivity.this, GuideActivity.class); + LocalUserInfo.getInstance(StartFlashActivity.this).setUserInfoBoolean(LocalUserInfo.FIRST_LOGIN, false); + } else { intent = new Intent(StartFlashActivity.this, MainActivity.class); - intent.putExtra(NetWork.MEETING_LIST,meetingListStr); + intent.putExtra("isNotifactionChack", isNotifactionChack); + intent.putExtra("urlMeetingId", mUrlMeetingId); + intent.putExtra("tags", mTags); } startActivity(intent); finish(); } - - OnSweetClickListener sweetClickListener = new OnSweetClickListener() - { - @Override - public void onClick(SweetAlertDialog sweetAlertDialog) - { - sweetAlertDialog.dismiss(); - initNetWork(); - } - }; - - public void netWorkTypeStart(int type) - { - - if (type == NetType.TYPE_NULL.ordinal()) - { + public void netWorkTypeStart(int type) { + if (type == NetType.TYPE_NULL.ordinal()) { mNetErrorSweetAlertDialog.show(); - } else - { + } else { // initNetWork(); } } + public static boolean isConnected(Context context) { + ConnectivityManager conn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo info = conn.getActiveNetworkInfo(); + + return ((info != null) && info.isConnected()); + } + + public static void showToast(final String toast, final Context context) { + new Thread(new Runnable() { + @Override + public void run() { + Looper.prepare(); + Toast.makeText(context, toast, Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + }).start(); + } + + /** - * messageLogin + * get meetng information success + * + * @param msg */ - - private void messageLogin(){ - if(mMsgSender.TMConnStatus()== JMClientType.CONNECTED){ - if (mDebug) - Log.e(TAG, "messageLogin: success"); - mMsgSender.TMLogin(mUserid, mSign); - }else{ - if (mDebug) - Log.e(TAG, "messageLogin: failed"); - mHandler.sendEmptyMessageDelayed(MessageConnectedFailed,500); + private void getMeetingInfoSuccess(Message msg) { + MeetingListEntity meetingListEntity = TeamMeetingApp.getmSelfData().getMeetingListEntity(); + Logger.e(meetingListEntity.toString()); + int usable = meetingListEntity.getMeetenable(); + mAnyrtcid = meetingListEntity.getAnyrtcid(); + mMeetingName = meetingListEntity.getMeetname(); + switch (usable) { + case 0://no + Toast.makeText(StartFlashActivity.this, R.string.str_meeting_deleted, Toast.LENGTH_SHORT).show(); + break; + case 1://yes + if (msg.getData().getString(JoinActType.JOIN_TYPE) == JoinActType.JOIN_URL_ACTVITY) { + mNetWork.insertUserMeetingRoom(getSign(), mUrlMeetingId, JoinActType.JOIN_INSERT_LINK_JOIN_ACTIVITY); + } + break; + case 2://private + Toast.makeText(StartFlashActivity.this, R.string.str_meeting_privated, Toast.LENGTH_SHORT).show(); + break; } } + private void joinMeeting(Message msg) { + + msg.what = EventType.MSG_URL_START_MEETING.ordinal(); + EventBus.getDefault().post(msg); + } + + /** * For EventBus callback. */ - public void onEventMainThread(Message msg) - { - switch (EventType.values()[msg.what]) - { + public void onEventMainThread(Message msg) { + String join_insert_type; + String meetingId; + switch (EventType.values()[msg.what]) { case MSG_ININT_SUCCESS: - if (mDebug) - Log.e(TAG, "MSG_ININT_SUCCESS"); + if (mDebug) { + Log.i(TAG, "MSG_ININT_SUCCESS"); + } mSign = TeamMeetingApp.getmSelfData().getAuthorization(); mNetWork.getRoomLists(mSign, 1 + "", 20 + ""); - messageLogin(); - + chatMessageInint(); break; + case MSG_ININT_FAILED: - if (mDebug) + if (mDebug) { Log.e(TAG, "MSG_ININT_FAILED"); + } break; + case MSG_SIGNOUT_SUCCESS: - if (mDebug) + if (mDebug) { Log.e(TAG, "MSG_SIGNOUT_SUCCESS"); + } finish(); System.exit(0); break; + case MSG_SIGNOUT_FAILED: - if (mDebug) + + if (mDebug) { Log.e(TAG, "MSG_SIGNOUT_FAILED"); + } + break; + case MSG_GET_ROOM_LIST_SUCCESS: - if (mDebug) + + if (mDebug) { Log.e(TAG, "MSG_GET_ROOM_LIST_SUCCESS"); + } + interfacejump(msg); + break; + case MSG_GET_ROOM_LIST_FAILED: - if (mDebug) + + if (mDebug) { Log.e(TAG, "MSG_GET_ROOM_LIST_FAILED"); + } + break; + case MSG_NET_WORK_TYPE: - if (mDebug) + + if (mDebug) { Log.e(TAG, "MSG_NET_WORK_TYPE"); + } + int type = msg.getData().getInt("net_type"); netWorkTypeStart(type); + break; + case MSG_RESPONS_ESTR_NULl: - if (mDebug) - Log.e(TAG, "MSG_NET_WORK_TYPE"); - mNetErrorSweetAlertDialog.show(); - break; - case MSG_MESSAGE_LOGIN_SUCCESS: - if(mDebug){ - Log.e(TAG,"MSG_MESSAGE_LOGIN_SUCCESS"); + + if (mDebug) { + Log.e(TAG, "MSG_RESPONS_ESTR_NULl"); } + mNetErrorSweetAlertDialog.show(); break; - case MSG_MESSAGE_LOGIN_FAILED: - if(mDebug){ - Log.e(TAG,"MSG_MESSAGE_LOGIN_FAILED"); - } - break; - case MSG_MESSAGE_SERVER_CONNECTED: - if(mDebug){ - Log.e(TAG,"MSG_MESSAGE_SERVER_CONNECTED"); + case MSG_GET_MEETING_INFO_SUCCESS: + if (mDebug) { + Log.e(TAG, "MSG_GET_MEETING_INFO_SUCCESS "); + } + if (msg.getData().getString(JoinActType.JOIN_TYPE).equals(JoinActType.JOIN_URL_ACTVITY)) { + getMeetingInfoSuccess(msg); } - break; @@ -288,4 +593,5 @@ public void onEventMainThread(Message msg) } } + } diff --git a/app/src/main/java/org/dync/teameeting/ui/adapter/ChatMessageAdapter.java b/app/src/main/java/org/dync/teameeting/ui/adapter/ChatMessageAdapter.java index fe48551..e6a1551 100644 --- a/app/src/main/java/org/dync/teameeting/ui/adapter/ChatMessageAdapter.java +++ b/app/src/main/java/org/dync/teameeting/ui/adapter/ChatMessageAdapter.java @@ -1,11 +1,5 @@ package org.dync.teameeting.ui.adapter; -import java.util.List; - -import org.dync.teameeting.R; -import org.dync.teameeting.utils.ChatMessage; -import org.dync.teameeting.utils.ChatMessage.Type; - import android.annotation.SuppressLint; import android.content.Context; import android.view.View; @@ -13,75 +7,81 @@ import android.widget.LinearLayout; import android.widget.TextView; +import org.dync.teameeting.R; +import org.dync.teameeting.bean.ChatMessage; +import org.dync.teameeting.bean.ChatMessage.Type; +import org.dync.teameeting.utils.StringHelper; + +import java.util.List; + /** * @author zhulang
- *

+ *

* 下午3:18:45 */ -public class ChatMessageAdapter extends CommonAdapter -{ - public ChatMessageAdapter(Context context, List datas) - { +public class ChatMessageAdapter extends CommonAdapter { + public ChatMessageAdapter(Context context, List datas) { super(context, datas); } - /** * Receive the message is 1 ,send the messagea is 0 */ @Override - public int getItemViewType(int position) - { + public int getItemViewType(int position) { ChatMessage msg = mDatas.get(position); return msg.getType() == Type.INPUT ? 1 : 0; } @Override - public int getViewTypeCount() - { + public int getViewTypeCount() { return 2; } @SuppressLint("ViewHolder") @Override - public View getView(int position, View convertView, ViewGroup parent) - { + public View getView(int position, View convertView, ViewGroup parent) { ChatMessage chatMessage = mDatas.get(position); ViewHolder mHolder = null; - if (convertView == null) - { - if (chatMessage.getType() == Type.INPUT) - { + if (convertView == null) { + + if (chatMessage.getType() == Type.INPUT) { convertView = mInflater.inflate(R.layout.chat_input_msg, null); - } else - { + } else { convertView = mInflater.inflate(R.layout.chat_output_msg, null); } + mHolder = mHolder.fromValues(convertView); convertView.setTag(mHolder); - } else - { + } else { mHolder = (ViewHolder) convertView.getTag(); } - mHolder.tvContent.setText(chatMessage.getContent()); - // mHolder.tvSendName.setText(chatMessage.getContent()); - // mHolder.tvTime.setText(chatMessage.getDate().toString()); + setData(chatMessage, mHolder); return convertView; } - private static class ViewHolder - { - public LinearLayout llChatLayout; // 设置聊天背景颜色 + private void setData(ChatMessage chatMessage, ViewHolder mHolder) { + mHolder.tvContent.setText(chatMessage.getContent()); + + if (chatMessage.getType() == Type.INPUT) { + mHolder.tvSendName.setText(chatMessage.getUsername()); + } else { + mHolder.tvSendName.setText(R.string.chat_output_name); + } + mHolder.tvTime.setText(StringHelper.format(chatMessage.getDateStr(), mResources)); + } + + private static class ViewHolder { + public LinearLayout llChatLayout; public TextView tvContent; public TextView tvSendName; public TextView tvTime; private ViewHolder(LinearLayout llChatLayout, TextView tvContent, TextView tvSendName, - TextView tvTime) - { + TextView tvTime) { super(); this.llChatLayout = llChatLayout; this.tvContent = tvContent; @@ -89,8 +89,7 @@ private ViewHolder(LinearLayout llChatLayout, TextView tvContent, TextView tvSen this.tvTime = tvTime; } - public static ViewHolder fromValues(View view) - { + public static ViewHolder fromValues(View view) { return new ViewHolder((LinearLayout) view.findViewById(R.id.ll_chat_layout), (TextView) view.findViewById(R.id.tv_chat_content), (TextView) view.findViewById(R.id.tv_send_name), diff --git a/app/src/main/java/org/dync/teameeting/ui/adapter/CommonAdapter.java b/app/src/main/java/org/dync/teameeting/ui/adapter/CommonAdapter.java index 6e3654b..c1276db 100644 --- a/app/src/main/java/org/dync/teameeting/ui/adapter/CommonAdapter.java +++ b/app/src/main/java/org/dync/teameeting/ui/adapter/CommonAdapter.java @@ -1,77 +1,87 @@ /** * CommonAdapter.java [V 1.0.0] * classes:com.example.menu.adapter.CommonAdapter - * Zlang Create at 2015-12-1.上午10:15:47 + * Zlang Create at 2015-12-1.上午10:15:47 */ package org.dync.teameeting.ui.adapter; -import java.util.List; - import android.content.Context; +import android.content.res.Resources; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; +import org.dync.teameeting.bean.MeetingListEntity; + +import java.util.List; + /** * com.example.menu.adapter.CommonAdapter - * + * + * @param * @author ZLang
- * + *

* create at 2015-12-1 上午10:15:47
* versions 1.0 viersion 2.0 - * @param - * */ -public abstract class CommonAdapter extends BaseAdapter -{ - - protected final Context mContext; - protected final List mDatas; - protected LayoutInflater mInflater; - protected int itemLayoutId; - - public CommonAdapter(Context context, List mDatas) - { - this(context, mDatas, 0); - } - - /** - * - * @param context - * @param mDatas - * - * @param itemLayoutId - * - */ - public CommonAdapter(Context context, List mDatas, int itemLayoutId) - { - mInflater = LayoutInflater.from(context); - this.mContext = context; - this.mDatas = mDatas; - this.itemLayoutId = itemLayoutId; - - } - - @Override - public int getCount() - { - return mDatas.size(); - } - - @Override - public T getItem(int position) - { - return mDatas.get(position); - } - - @Override - public long getItemId(int position) - { - return position; - } - - @Override - public abstract View getView(int position, View convertView, ViewGroup parent); +public abstract class CommonAdapter extends BaseAdapter { + + protected final Context mContext; + protected final List mDatas; + protected LayoutInflater mInflater; + protected int itemLayoutId; + protected Resources mResources; + + + public CommonAdapter(Context context, List mDatas) { + this(context, mDatas, 0); + } + + /** + * @param context + * @param mDatas + * @param itemLayoutId + */ + public CommonAdapter(Context context, List mDatas, int itemLayoutId) { + mInflater = LayoutInflater.from(context); + this.mContext = context; + this.mDatas = mDatas; + this.itemLayoutId = itemLayoutId; + mResources = context.getResources(); + } + + public void commaMapAdapter(Context context) { + + } + + + public int getMeetingIdPosition(String meetingId) { + for (int i = 0; i < mDatas.size(); i++) { + MeetingListEntity meetingListEntity = (MeetingListEntity) mDatas.get(i); + if (meetingId.equals(meetingListEntity.getMeetingid())) { + return i; + } + } + return -1; + } + + @Override + public int getCount() { + return mDatas.size(); + } + + @Override + public T getItem(int position) { + return mDatas.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public abstract View getView(int position, View convertView, ViewGroup parent); } diff --git a/app/src/main/java/org/dync/teameeting/ui/adapter/SwipeListAdapter.java b/app/src/main/java/org/dync/teameeting/ui/adapter/SwipeListAdapter.java index af995a0..ebed626 100644 --- a/app/src/main/java/org/dync/teameeting/ui/adapter/SwipeListAdapter.java +++ b/app/src/main/java/org/dync/teameeting/ui/adapter/SwipeListAdapter.java @@ -5,22 +5,12 @@ */ package org.dync.teameeting.ui.adapter; -import java.util.HashSet; -import java.util.List; - -import org.dync.teameeting.R; -import org.dync.teameeting.bean.MeetingList; -import org.dync.teameeting.utils.StringHelper; -import org.dync.teameeting.widgets.swipe.FrontLayout; -import org.dync.teameeting.widgets.swipe.SwipeLayout; -import org.dync.teameeting.widgets.swipe.SwipeLayout.SwipeListener; - import android.content.Context; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; -import android.view.inputmethod.InputMethodManager; import android.view.ViewGroup; +import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; @@ -29,44 +19,79 @@ import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; +import org.dync.teameeting.R; +import org.dync.teameeting.bean.MeetingListEntity; +import org.dync.teameeting.db.CRUDChat; +import org.dync.teameeting.structs.HttpApiTpye; +import org.dync.teameeting.utils.StringHelper; +import org.dync.teameeting.widgets.swipe.FrontLayout; +import org.dync.teameeting.widgets.swipe.SwipeLayout; +import org.dync.teameeting.widgets.swipe.SwipeLayout.SwipeListener; + +import java.util.HashSet; +import java.util.List; + /** * @author ZLang
* create at 2015-12-1 上午9:57:09
*/ -public class SwipeListAdapter extends CommonAdapter -{ - +public class SwipeListAdapter extends CommonAdapter { private SwipeListOnClick mSwipeListOnClick; HashSet mUnClosedLayouts = new HashSet(); private Context mContext; private InputMethodManager mIMM; - public SwipeListAdapter(Context context, List data, - SwipeListOnClick mswipeListOnClick) - { + public SwipeListAdapter(Context context, List data, + SwipeListOnClick mswipeListOnClick) { super(context, data); mContext = context; mSwipeListOnClick = mswipeListOnClick; } - public interface SwipeListOnClick - { + public interface SwipeListOnClick { public void onItemClickListener(View v, int position); } + public void notifyInitDataSetChanged() { + for (int i = 0; i < mDatas.size(); i++) { + mDatas.get(i).initUnReadMessage(mContext); + } + notifyDataSetChanged(); + } + + public void swipeNotifyDataseetChange() { + mDatas.get(mDatas.size() - 1).initUnReadMessage(mContext); + notifyDataSetChanged(); + } + + + public void notifyNoReadMessageChanged(String meetingId, long sendTime) { + + int meetingIdPosition = getMeetingIdPosition(meetingId); + if (meetingIdPosition != -1) { + long l = CRUDChat.selectIsReadSize(mContext, meetingId); + mDatas.get(meetingIdPosition).setUnReadMessage(StringHelper.unReadMessageStr(l, sendTime, mResources)); + notifyDataSetChanged(); + } + } + + public void notifyMemnumberSetChanged(String meetingId, int num) { + int meetingIdPosition = getMeetingIdPosition(meetingId); + if (meetingIdPosition != -1) { + mDatas.get(meetingIdPosition).setMemnumber(num); + notifyDataSetChanged(); + } + } + @Override - public View getView(final int position, View convertView, ViewGroup parent) - { + public View getView(final int position, View convertView, ViewGroup parent) { + MeetingListEntity meetingListEntity = mDatas.get(position); - MeetingList.MeetingListEntity meetingListEntity = mDatas.get(position); ViewHolder mHolder; - if (convertView != null) - { + if (convertView != null) { mHolder = (ViewHolder) convertView.getTag(); - } else - { - convertView = (SwipeLayout) mInflater.inflate( - R.layout.item_room_adapter, null); + } else { + convertView = (SwipeLayout) mInflater.inflate(R.layout.item_room_adapter, null); mHolder = ViewHolder.fromValues(convertView); convertView.setTag(mHolder); } @@ -74,56 +99,72 @@ public View getView(final int position, View convertView, ViewGroup parent) SwipeLayout swipeLayout = (SwipeLayout) convertView; swipeLayout.close(false, false); swipeLayout.setSwipeListener(mSwipeListener); - setData(meetingListEntity, mHolder); - showEidt(position, mHolder); - setHolderListener(position, mHolder); return swipeLayout; } - private void setData(MeetingList.MeetingListEntity meetingListEntity, ViewHolder mHolder) - { + private void setData(MeetingListEntity meetingListEntity, ViewHolder mHolder) { mHolder.mRoomName.setText("" + meetingListEntity.getMeetname()); - mHolder.mRoomTime.setText("创建: " + StringHelper.formatDuration(meetingListEntity.getJointime())); - mHolder.mRoomPeopleCount.setText("" + meetingListEntity.getMemnumber()); + // mHolder.mRoomPeopleCount.setText("" + meetingListEntity.getMemnumber()); - if (meetingListEntity.getMemnumber() > 0) - { + if (meetingListEntity.getMemnumber() > 0) { mHolder.mNotificationsClose.setVisibility(View.GONE); mHolder.mPeopleico.setVisibility(View.VISIBLE); mHolder.mRoomPeopleCount.setVisibility(View.VISIBLE); - mHolder.mRoomPeopleCount.setText(meetingListEntity.getMemnumber()); - } - if (meetingListEntity.getMemnumber() <= 0) - { + mHolder.mRoomPeopleCount.setText(meetingListEntity.getMemnumber() + ""); + } else { mHolder.mPeopleico.setVisibility(View.GONE); mHolder.mRoomPeopleCount.setVisibility(View.GONE); - if (meetingListEntity.getPushable() == 0) - { + if (meetingListEntity.getPushable() == 0) { mHolder.mNotificationsClose.setVisibility(View.VISIBLE); - } else - { + } else { mHolder.mNotificationsClose.setVisibility(View.GONE); } - } - if (!meetingListEntity.isApplyTyep()) - { + + + if (!meetingListEntity.isApplyTyep()) { mHolder.mPbCreeat.setVisibility(View.VISIBLE); mHolder.mMoreSetting.setVisibility(View.GONE); - }else - { + } else { mHolder.mPbCreeat.setVisibility(View.GONE); mHolder.mMoreSetting.setVisibility(View.VISIBLE); } + + if (meetingListEntity.getMeetenable() == HttpApiTpye.RoomEnablePrivate) { + mHolder.mRoomName.setTextColor(mResources.getColor(R.color.orange)); + if (meetingListEntity.getOwner() != 1) { + mHolder.mIvPrivate.setVisibility(View.INVISIBLE); + } + } else { + mHolder.mRoomName.setTextColor(mResources.getColor(R.color.white)); + mHolder.mIvPrivate.setVisibility(View.INVISIBLE); + } + + if (meetingListEntity.getOwner() == 1) { + mHolder.mRoomName.setTextColor(mResources.getColor(R.color.orange)); + if (meetingListEntity.getMeetenable() == HttpApiTpye.RoomEnablePrivate) { + mHolder.mIvPrivate.setVisibility(View.VISIBLE); + } + } else { + mHolder.mRoomName.setTextColor(mResources.getColor(R.color.white)); + } + + String unReadMessage; + if (!meetingListEntity.isRead(mContext)) { + unReadMessage = meetingListEntity.getUnReadMessage(); + } else { + String CreateOrJoin = (meetingListEntity.getCreatetime() < meetingListEntity.getJointime() ? mContext.getString(R.string.str_join) : mContext.getString(R.string.str_create)); + unReadMessage = CreateOrJoin + StringHelper.format(meetingListEntity.getJointime(), mResources); + } + mHolder.mRoomTime.setText(unReadMessage); } - private void showEidt(int position, ViewHolder mHolder) - { - if (mDatas.get(position).getmMeetType2() == 2) - { + + private void showEidt(int position, ViewHolder mHolder) { + if (mDatas.get(position).getmMeetType2() == 2) { mHolder.mReName.setVisibility(View.VISIBLE); mHolder.mRLShowView.setVisibility(View.GONE); String name = mDatas.get(position).getMeetname(); @@ -137,15 +178,13 @@ private void showEidt(int position, ViewHolder mHolder) mIMM = (InputMethodManager) mContext .getSystemService(mContext.INPUT_METHOD_SERVICE); mIMM.showSoftInput(mHolder.mReName, 0); - } else - { + } else { mHolder.mReName.setVisibility(View.GONE); mHolder.mRLShowView.setVisibility(View.VISIBLE); } } - private void setHolderListener(int position, ViewHolder mHolder) - { + private void setHolderListener(int position, ViewHolder mHolder) { mHolder.mItemLayout.setTag(position); mHolder.mItemLayout.setOnClickListener(onActionClick); mHolder.mRoomDel.setTag(position); @@ -160,12 +199,10 @@ private void setHolderListener(int position, ViewHolder mHolder) /** * */ - OnEditorActionListener onEditorListener = new OnEditorActionListener() - { + OnEditorActionListener onEditorListener = new OnEditorActionListener() { @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) - { + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { // TODO Auto-generated method stub Integer postion = (Integer) v.getTag(); mSwipeListOnClick.onItemClickListener(v, postion); @@ -176,45 +213,37 @@ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) /** * Click callback */ - OnClickListener onActionClick = new OnClickListener() - { + OnClickListener onActionClick = new OnClickListener() { @Override - public void onClick(View v) - { + public void onClick(View v) { Integer postion = (Integer) v.getTag(); mSwipeListOnClick.onItemClickListener(v, postion); - } }; /** * slide listener */ - SwipeListener mSwipeListener = new SwipeListener() - { + SwipeListener mSwipeListener = new SwipeListener() { @Override - public void onOpen(SwipeLayout swipeLayout) - { + public void onOpen(SwipeLayout swipeLayout) { // Utils.showToast(context, "onOpen"); mUnClosedLayouts.add(swipeLayout); } @Override - public void onClose(SwipeLayout swipeLayout) - { + public void onClose(SwipeLayout swipeLayout) { // Utils.showToast(context, "onClose"); mUnClosedLayouts.remove(swipeLayout); } @Override - public void onStartClose(SwipeLayout swipeLayout) - { + public void onStartClose(SwipeLayout swipeLayout) { // Utils.showToast(context, "onStartClose"); } @Override - public void onStartOpen(SwipeLayout swipeLayout) - { + public void onStartOpen(SwipeLayout swipeLayout) { // Utils.showToast(mContext, "onStartOpen"); closeAllLayout(); mUnClosedLayouts.add(swipeLayout); @@ -223,13 +252,10 @@ public void onStartOpen(SwipeLayout swipeLayout) }; - public void closeAllLayout() - { + public void closeAllLayout() { if (mUnClosedLayouts.size() == 0) return; - - for (SwipeLayout l : mUnClosedLayouts) - { + for (SwipeLayout l : mUnClosedLayouts) { l.close(true, false); } mUnClosedLayouts.clear(); @@ -242,8 +268,7 @@ public void closeAllLayout() * @author ZLang
* create at 2015-12-1 下午12:42:48 */ - private static class ViewHolder - { + private static class ViewHolder { EditText mReName; RelativeLayout mRLShowView; @@ -258,13 +283,11 @@ private static class ViewHolder ImageButton mRoomDel; FrontLayout mItemLayout; ProgressBar mPbCreeat; + ImageView mIvPrivate; - private ViewHolder(EditText reName, RelativeLayout rlShowView, - TextView roomName, TextView roomTime, TextView roomPeopleCount, - ImageButton moreSetting, ImageButton roomDel, ImageView mNotificationsClose, ImageView mPeopleico, - FrontLayout itemLayout,ProgressBar pbCreeat) - { + private ViewHolder(EditText reName, RelativeLayout rlShowView, TextView roomName, TextView roomTime, TextView roomPeopleCount, ImageButton moreSetting, ImageButton roomDel, + ImageView mNotificationsClose, ImageView mPeopleico, FrontLayout itemLayout, ProgressBar pbCreeat, ImageView ivPrivate) { super(); this.mReName = reName; this.mRLShowView = rlShowView; @@ -277,10 +300,10 @@ private ViewHolder(EditText reName, RelativeLayout rlShowView, this.mNotificationsClose = mNotificationsClose; this.mPeopleico = mPeopleico; this.mPbCreeat = pbCreeat; + this.mIvPrivate = ivPrivate; } - public static ViewHolder fromValues(View view) - { + public static ViewHolder fromValues(View view) { return new ViewHolder((EditText) view.findViewById(R.id.et_rename), (RelativeLayout) view.findViewById(R.id.rl_show_view), (TextView) view.findViewById(R.id.tv_room_name), @@ -291,7 +314,8 @@ public static ViewHolder fromValues(View view) (ImageView) view.findViewById(R.id.iv_notifications_close), (ImageView) view.findViewById(R.id.iv_people), (FrontLayout) view.findViewById(R.id.fl_front), - (ProgressBar)view.findViewById(R.id.pb_creat)); + (ProgressBar) view.findViewById(R.id.pb_creat), + (ImageView) view.findViewById(R.id.iv_private)); } } diff --git a/app/src/main/java/org/dync/teameeting/ui/helper/ActivityTaskHelp.java b/app/src/main/java/org/dync/teameeting/ui/helper/ActivityTaskHelp.java new file mode 100644 index 0000000..cf1b298 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/ui/helper/ActivityTaskHelp.java @@ -0,0 +1,63 @@ +package org.dync.teameeting.ui.helper; + +import android.app.ActivityManager; +import android.content.ComponentName; +import android.content.Context; +import android.util.Log; + +import java.util.List; + +/** + * Created by Xiao_Bailong on 2016/2/23. + */ +public class ActivityTaskHelp { + /** + * Determine whether the program is running in the foreground + */ + public static boolean isPackageNameonResume(Context context, String packageName) { + if (packageName == null) { + packageName = context.getPackageName(); + } + Log.e("ActivityTaskHelp", "isPackageNameonResume: " + packageName); + ActivityManager am = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); + ComponentName cn = am.getRunningTasks(1).get(0).topActivity; + Log.e("ActivityTaskHelp", "pkg:" + cn.getPackageName()); + if (cn.getPackageName().equals(packageName)) { + Log.e("ActivityTaskHelp", "true: "); + return true; + } + Log.e("ActivityTaskHelp", "false: "); + return false; + } + + public static boolean isActivityNameRun(Context context, String className) { + ActivityManager am = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); + ComponentName cn = am.getRunningTasks(1).get(0).topActivity; + Log.e("e", "pkg:" + cn.getPackageName()); + if (cn.getClassName().equals(className)) { + return true; + } + return false; + } + + /** + * @param context + * @return + */ + public static boolean isBackgroundRunning(Context context) { + String processName = context.getPackageName(); + ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); + + if (activityManager == null) return false; + + List processList = activityManager.getRunningAppProcesses(); + for (ActivityManager.RunningAppProcessInfo process : processList) { + if (process.processName.startsWith(processName)) { + return true; + } + } + return false; + } + + +} diff --git a/app/src/main/java/org/dync/teameeting/ui/helper/Anims.java b/app/src/main/java/org/dync/teameeting/ui/helper/Anims.java index 660d2c0..e23bab8 100644 --- a/app/src/main/java/org/dync/teameeting/ui/helper/Anims.java +++ b/app/src/main/java/org/dync/teameeting/ui/helper/Anims.java @@ -3,9 +3,7 @@ import android.animation.ObjectAnimator; import android.animation.TimeInterpolator; import android.animation.ValueAnimator; -import android.util.Log; import android.view.View; -import android.view.ViewGroup; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.AccelerateInterpolator; import android.view.animation.Animation; @@ -15,12 +13,9 @@ import android.view.animation.ScaleAnimation; import android.widget.RelativeLayout; -import javax.xml.datatype.Duration; - public class Anims { public static final Interpolator ACCELERATE = new AccelerateInterpolator(); - ; public static final Interpolator LINEA = new LinearInterpolator(); public static final Interpolator EASE_IN_EASE_OUT = new AccelerateDecelerateInterpolator(); public static final Interpolator EASE_OUT = new DecelerateInterpolator(); @@ -48,8 +43,7 @@ public static void animateBottomMarginTo(final View paramView, int paramInt, lon { public void onAnimationUpdate(ValueAnimator paramAnonymousValueAnimator) { - localLayoutParams.bottomMargin = ((Integer) paramAnonymousValueAnimator - .getAnimatedValue()).intValue(); + localLayoutParams.bottomMargin = ((Integer) paramAnonymousValueAnimator.getAnimatedValue()).intValue(); paramView.requestLayout(); } }); @@ -97,12 +91,13 @@ public static void fadeIn(View paramView, long paramLong1, long paramLong2) paramView.setVisibility(View.VISIBLE); } - public static void ScaleAnim(View view, float from, long to,long time) + public static void ScaleAnim(View view, float from, float to,long time) { ScaleAnimation scaleAnimation = new ScaleAnimation(from,to,from,to, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f); scaleAnimation.setDuration(time); scaleAnimation.setFillAfter(true); view.startAnimation(scaleAnimation); + } diff --git a/app/src/main/java/org/dync/teameeting/ui/helper/DialogHelper.java b/app/src/main/java/org/dync/teameeting/ui/helper/DialogHelper.java index 9594c39..01f7d74 100644 --- a/app/src/main/java/org/dync/teameeting/ui/helper/DialogHelper.java +++ b/app/src/main/java/org/dync/teameeting/ui/helper/DialogHelper.java @@ -3,35 +3,59 @@ import android.content.ClipboardManager; import android.content.Context; +import org.dync.teameeting.R; + import cn.pedant.SweetAlert.SweetAlertDialog; -public class DialogHelper -{ - @SuppressWarnings("deprecation") - public static void onClickCopy(Context context, String conpyUrl) - { - // TextView tvCopyTextView = (TextView) findViewById(R.id.tv_copy_link); - ClipboardManager cmb = (ClipboardManager) context - .getSystemService(Context.CLIPBOARD_SERVICE); - cmb.setText(conpyUrl); - new SweetAlertDialog(context, SweetAlertDialog.SUCCESS_TYPE) - .setTitleText("复制成功").setContentText("粘贴给朋友邀请加入会议!").show(); - } - - public static SweetAlertDialog createNetErroDilaog(Context context) - { - return createNetErroDilaog(context,null); +public class DialogHelper { + static SweetAlertDialog netErrorSweetAlertDialog = null; + static int i = -1; + + @SuppressWarnings("deprecation") + public static void onClickCopy(Context context, String conpyUrl) { + ClipboardManager cmb = (ClipboardManager) context + .getSystemService(Context.CLIPBOARD_SERVICE); + cmb.setText(conpyUrl); + new SweetAlertDialog(context, SweetAlertDialog.SUCCESS_TYPE) + .setTitleText(context.getString(R.string.dialog_copy_success)).setContentText(context.getString(R.string.dialog_pase_send_friend)).show(); + } + + + public static SweetAlertDialog createPrivateDilaog(Context context) { + SweetAlertDialog sb = new SweetAlertDialog(context, SweetAlertDialog.NORMAL_TYPE); + sb.setTitleText(context.getString(R.string.dialog_open_prive)) + .setContentText(context.getString(R.string.dialog_prive_not_share)) + .setCancelText(context.getString(R.string.dialog_cancel)) + .setConfirmText(context.getString(R.string.dialog_confirm)) + .showCancelButton(true); + return sb; + } + + public static SweetAlertDialog createNetErroDilaog(Context context, SweetAlertDialog.OnSweetClickListener sweetClickListener) { + SweetAlertDialog netErrorSweetAlertDialog = new SweetAlertDialog(context, + SweetAlertDialog.WARNING_TYPE).setTitleText(context.getString(R.string.dialog_network_disconnect)) + .setConfirmText(context.getString(R.string.dialog_try)).setContentText(context.getString(R.string.dialog_please_conn_network)) + .setConfirmClickListener(sweetClickListener); + return netErrorSweetAlertDialog; } - public static SweetAlertDialog createNetErroDilaog(Context context, SweetAlertDialog.OnSweetClickListener sweetClickListener) - { + public static SweetAlertDialog createAnyRTCLeave(Context context, SweetAlertDialog.OnSweetClickListener sweetClickListener) { SweetAlertDialog netErrorSweetAlertDialog = new SweetAlertDialog(context, - SweetAlertDialog.ERROR_TYPE).setTitleText("网络已断开...") - .setConfirmText("ok").setContentText("请连接网络!") + SweetAlertDialog.WARNING_TYPE).setTitleText(context.getString(R.string.meeting_dialog_anyrtc_leave_title)) + .setConfirmText(context.getString(R.string.dialog_ok)).setContentText(context.getString(R.string.meeting_dialog_anyrtc_leave)) .setConfirmClickListener(sweetClickListener); return netErrorSweetAlertDialog; } + public static SweetAlertDialog createWarningCancel(Context context) { + SweetAlertDialog sb = new SweetAlertDialog(context, SweetAlertDialog.WARNING_TYPE); + sb.setTitleText(context.getString(R.string.dialog_suer_next_meeting)) + .setContentText(context.getString(R.string.dialog_meeting_exist)) + .setCancelText(context.getString(R.string.dialog_cancel)) + .setConfirmText(context.getString(R.string.dialog_confirm)) + .showCancelButton(true); + return sb; + } } diff --git a/app/src/main/java/org/dync/teameeting/ui/helper/MeetingAnim.java b/app/src/main/java/org/dync/teameeting/ui/helper/MeetingAnim.java index 47d5ec5..ee60a14 100644 --- a/app/src/main/java/org/dync/teameeting/ui/helper/MeetingAnim.java +++ b/app/src/main/java/org/dync/teameeting/ui/helper/MeetingAnim.java @@ -1,136 +1,119 @@ /** * MettingAnim.java [V 1.0.0] * classes:org.dync.teammeeting.ui.anim.MettingAnim - * Zlang Create at 2015-12-10.下午2:25:21 + * Zlang Create at 2015-12-10.下午2:25:21 */ package org.dync.teameeting.ui.helper; import android.animation.Animator; +import android.animation.Animator.AnimatorListener; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; -import android.animation.Animator.AnimatorListener; import android.view.View; -import android.widget.ImageButton; /** - * + * * Meeting control animator helper - * + * * @author ZLang
* create at 2015-12-10 下午2:25:21 */ -public class MeetingAnim -{ - /** - * - * @param view - * @param startAlpha - * @param endAlpha - * @param time - */ - public void alphaAnimator(View view, float startAlpha, float endAlpha, int time) - { - - PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", startAlpha, endAlpha); - ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(view, alpha); - objectAnimator.setDuration(time).start(); - - } - - /** - * button translation or Alpha Animator - * - * @param view - * @param startX - * @param endX - * @param time - * @param alphaFlag - */ - public void translationAlphaAnimator(View view, float startX, float endX, int time, - final boolean alphaFlag) - { - - PropertyValuesHolder alpha; - if (alphaFlag) - { - alpha = PropertyValuesHolder.ofFloat("alpha", 0f, 1.0F); - } else - { - alpha = PropertyValuesHolder.ofFloat("alpha", 1.0f, 0F); - } - - PropertyValuesHolder translationX = PropertyValuesHolder.ofFloat("translationX", startX, - endX); - ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(view, alpha, - translationX); - objectAnimator.setDuration(time).start(); - - objectAnimator.addListener(new AnimatorListener() - { - - @Override - public void onAnimationStart(Animator arg0) - { - - } - - @Override - public void onAnimationRepeat(Animator arg0) - { - - } - - @Override - public void onAnimationEnd(Animator arg0) - { - if (!alphaFlag && animationEndListener != null) - { - animationEndListener.onAnimationEnd(arg0); - } - } - - @Override - public void onAnimationCancel(Animator arg0) - { - - } - }); - - } - - AnimationEndListener animationEndListener; - - public interface AnimationEndListener - { - public void onAnimationEnd(Animator arg0); - } - - public void setAnimEndListener(AnimationEndListener listener) - { - animationEndListener = listener; - } - - /** - * @param cameraButton - * @param meetingCameraFlag - */ - public void rotationOrApaha(View view, boolean meetingCameraFlag) - { - int values = 360; - if (meetingCameraFlag) - { - values = 360; - } else - { - values = -360; - } - ObjectAnimator rotation = ObjectAnimator.ofFloat(view, "rotation", 0, values); - ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f); - AnimatorSet set = new AnimatorSet(); - set.play(alpha).with(rotation); - set.setDuration(300); - set.start(); - } +public class MeetingAnim { + /** + * + * @param view + * @param startAlpha + * @param endAlpha + * @param time + */ + public void alphaAnimator(View view, float startAlpha, float endAlpha, int time) { + + PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", startAlpha, endAlpha); + ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(view, alpha); + objectAnimator.setDuration(time).start(); + + } + + /** + * button translation or Alpha Animator + * + * @param view + * @param startX + * @param endX + * @param time + * @param alphaFlag + */ + public void translationAlphaAnimator(View view, float startX, float endX, int time, + final boolean alphaFlag) { + + PropertyValuesHolder alpha; + if (alphaFlag) { + alpha = PropertyValuesHolder.ofFloat("alpha", 0f, 1.0F); + } else { + alpha = PropertyValuesHolder.ofFloat("alpha", 1.0f, 0F); + } + + PropertyValuesHolder translationX = PropertyValuesHolder.ofFloat("translationX", startX, + endX); + ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(view, alpha, + translationX); + objectAnimator.setDuration(time).start(); + + objectAnimator.addListener(new AnimatorListener() { + + @Override + public void onAnimationStart(Animator arg0) { + + } + + @Override + public void onAnimationRepeat(Animator arg0) { + + } + + @Override + public void onAnimationEnd(Animator arg0) { + if (!alphaFlag && animationEndListener != null) { + animationEndListener.onAnimationEnd(arg0); + } + } + + @Override + public void onAnimationCancel(Animator arg0) { + + } + }); + + } + + AnimationEndListener animationEndListener; + + public interface AnimationEndListener { + public void onAnimationEnd(Animator arg0); + } + + public void setAnimEndListener(AnimationEndListener listener) { + animationEndListener = listener; + } + + /** + * @param cameraButton + * @param meetingCameraFlag + */ + public void rotationOrApaha(View view, boolean meetingCameraFlag) { + int values = 360; + if (meetingCameraFlag) { + values = 360; + } else { + values = -360; + } + ObjectAnimator rotation = ObjectAnimator.ofFloat(view, "rotation", 0, values); + ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f); + AnimatorSet set = new AnimatorSet(); + set.play(alpha).with(rotation); + set.setDuration(300); + set.start(); + } } diff --git a/app/src/main/java/org/dync/teameeting/ui/helper/ShareHelper.java b/app/src/main/java/org/dync/teameeting/ui/helper/ShareHelper.java index 3587375..6ff46ad 100644 --- a/app/src/main/java/org/dync/teameeting/ui/helper/ShareHelper.java +++ b/app/src/main/java/org/dync/teameeting/ui/helper/ShareHelper.java @@ -1,125 +1,133 @@ package org.dync.teameeting.ui.helper; -import java.util.List; - -import android.app.Activity; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.net.Uri; -import android.widget.Toast; + +import com.tencent.mm.sdk.openapi.IWXAPI; +import com.tencent.mm.sdk.openapi.SendMessageToWX; +import com.tencent.mm.sdk.openapi.WXAPIFactory; +import com.tencent.mm.sdk.openapi.WXMediaMessage; +import com.tencent.mm.sdk.openapi.WXWebpageObject; +import com.tencent.mm.sdk.platformtools.Util; + +import org.dync.teameeting.R; + +import java.util.List; /** - * * @author zhulang
* org.dync.teameeting.helper ShareHelper create at 2015-12-22 * 上午10:59:20 */ -public class ShareHelper -{ - private Context context; - - public ShareHelper(Context context) - { - this.context = context; - } - - - /** - * 调用系统界面,给指定的号码发送短信,并附带短信内容 - * - * @param context - * @param number - * @param body - */ - public void shareSMS(Context context, String number, String body) { - Intent sendIntent = new Intent(Intent.ACTION_SENDTO); - sendIntent.setData(Uri. parse("smsto:" + number)); - sendIntent.putExtra( "sms_body", body); - context.startActivity(sendIntent); - } - - public void shareWeiXin(String msgTitle, String msgText, String webUrl) - { - msgText = msgText + webUrl; - ShareItem share = new ShareItem("分享到.....", - "com.tencent.mm.ui.tools.ShareImgUI", "com.tencent.mm"); - - shareMsg(msgTitle, msgText, share); - } - - /** - * - * - * @param context - * @param msgTitle - * @param msgText - * @param share - */ - private void shareMsg(String msgTitle, String msgText, ShareItem share) - { - if (!share.packageName.isEmpty() && !isAvilible(share.packageName)) - { - Toast.makeText(context, "请安装微信" + share.title, Toast.LENGTH_SHORT) - .show(); - return; - } - - Intent intent = new Intent("android.intent.action.SEND"); - if (msgText.equals("")) - { - intent.setType("text/plain"); - } - - intent.putExtra(Intent.EXTRA_SUBJECT, msgTitle); - intent.putExtra(Intent.EXTRA_TEXT, msgText); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - if (!share.packageName.isEmpty()) - { - intent.setComponent(new ComponentName(share.packageName, - share.activityName)); - context.startActivity(intent); - } else - { - context.startActivity(Intent.createChooser(intent, msgTitle)); - } - } - - /** - * - * @param context - * @param packageName - * @return - */ - public boolean isAvilible(String packageName) - { - PackageManager packageManager = context.getPackageManager(); - - List pinfo = packageManager.getInstalledPackages(0); - for (int i = 0; i < pinfo.size(); i++) - { - if (((PackageInfo) pinfo.get(i)).packageName - .equalsIgnoreCase(packageName)) - return true; - } - return false; - } - - private class ShareItem - { - String title; - - String activityName; - String packageName; - - public ShareItem(String title, String activityName, String packageName) - { - this.title = title; - this.activityName = activityName; - this.packageName = packageName; - } - } +public class ShareHelper { + private Context context; + private static final String App_ID = "wx40db3ffd58b0c6a9"; + private IWXAPI api; + + public ShareHelper(Context context) { + this.context = context; + api = WXAPIFactory.createWXAPI(context, App_ID, true); + api.registerApp(App_ID); + } + + /** + * 调用系统界面,给指定的号码发送短信,并附带短信内容 + * + * @param context + * @param number + * @param body + */ + public void shareSMS(Context context, String number, String body) { + + Intent sendIntent = new Intent(Intent.ACTION_SENDTO); + sendIntent.setData(Uri.parse("smsto:" + number)); + sendIntent.putExtra("sms_body", body); + context.startActivity(sendIntent); + + } + + /** + * Share Weixing + * @param webUrl + */ + public void shareWeiXin(String webUrl) { + String msgTitle = context.getString(R.string.app_name); + String msgText = context.getString(R.string.share_str_weixing_title); + shareWeiXin(webUrl, msgTitle, msgText); + } + + /** + * Share Wei Xin + * @param msgTitle + * @param msgText + * @param webUrl + */ + public void shareWeiXin( String webUrl,String msgTitle, String msgText) { + shareToWeiXin(webUrl, msgTitle, msgText); + } + + + /** + * WeChat share meeting + * + * @param webpageUrl + * @param title + * @param description + */ + public void shareToWeiXin(String webpageUrl, String title, String description) { + + WXWebpageObject webpage = new WXWebpageObject(); + webpage.webpageUrl = webpageUrl; + WXMediaMessage msg = new WXMediaMessage(webpage); + msg.title = title; + msg.description = description; + Bitmap thumb = BitmapFactory.decodeResource(context.getResources(), R.drawable.app_ico); + msg.thumbData = Util.bmpToByteArray(thumb, true); + + SendMessageToWX.Req req = new SendMessageToWX.Req(); + req.transaction = buildTransaction("webpage"); + req.message = msg; + req.scene = SendMessageToWX.Req.WXSceneSession; + api.sendReq(req); + + } + + private String buildTransaction(final String type) { + return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); + } + + + /** + * @param packageName + * @return + */ + public boolean isAvilible(String packageName) { + PackageManager packageManager = context.getPackageManager(); + + List pinfo = packageManager.getInstalledPackages(0); + for (int i = 0; i < pinfo.size(); i++) { + if (((PackageInfo) pinfo.get(i)).packageName.equalsIgnoreCase(packageName)) + return true; + } + return false; + } + + private class ShareItem { + String title; + + String activityName; + String packageName; + + public ShareItem(String title, String activityName, String packageName) { + this.title = title; + this.activityName = activityName; + this.packageName = packageName; + } + } } diff --git a/app/src/main/java/org/dync/teameeting/utils/ChatMessage.java b/app/src/main/java/org/dync/teameeting/utils/ChatMessage.java deleted file mode 100644 index 04cd0f0..0000000 --- a/app/src/main/java/org/dync/teameeting/utils/ChatMessage.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.dync.teameeting.utils; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; - -public class ChatMessage -{ - - /** - * message type - */ - private Type type; - /** - * Message Content - */ - private String content; - /** - * Date - */ - private Date date; - /** - * Date format - */ - private String dateStr; - /** - * who send - */ - private String name; - - public enum Type - { - INPUT, OUTPUT - } - - public ChatMessage(Type type, String msg,String name) - { - super(); - this.type = type; - this.content = msg; - this.name = name; - setDate(new Date()); - } - - public String getDateStr() - { - return dateStr; - } - - public Date getDate() - { - return date; - } - - public void setDate(Date date) - { - this.date = date; - DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - this.dateStr = df.format(date); - - } - - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - - public Type getType() - { - return type; - } - - public void setType(Type type) - { - this.type = type; - } - - public String getContent() - { - return content; - } - - public void setContent(String content) - { - this.content = content; - } - -} diff --git a/app/src/main/java/org/dync/teameeting/utils/LocalUserInfo.java b/app/src/main/java/org/dync/teameeting/utils/LocalUserInfo.java index a13c5d3..684e20b 100644 --- a/app/src/main/java/org/dync/teameeting/utils/LocalUserInfo.java +++ b/app/src/main/java/org/dync/teameeting/utils/LocalUserInfo.java @@ -3,63 +3,63 @@ import android.content.Context; import android.content.SharedPreferences; -public class LocalUserInfo -{ - - public static final String PREFERENCE_NAME = "local_userinfo"; - public static final String FIRST_LOGIN="firstLogin"; - private static SharedPreferences mSharedPreferences; - private static LocalUserInfo mPreferenceUtils; - private static SharedPreferences.Editor editor; - - private LocalUserInfo(Context cxt) - { - mSharedPreferences = cxt.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); - } - - /** - * Get Single(global) SharedPreferences - * - * @param cxt - * @return - */ - public static LocalUserInfo getInstance(Context cxt) - { - if (mPreferenceUtils == null) - { - mPreferenceUtils = new LocalUserInfo(cxt); - } - editor = mSharedPreferences.edit(); - return mPreferenceUtils; - } - - - public void setUserInfo(String str_name, String str_value) - { - - editor.putString(str_name, str_value); - editor.commit(); - } - - public void setUserInfoBoolean(String str_name, Boolean str_value) - { - - editor.putBoolean(str_name, str_value); - editor.commit(); - } - - public String getUserInfo(String str_name) - { - - return mSharedPreferences.getString(str_name, ""); - - } - - public Boolean getUserInfoBoolean(String str_name) - { - - return mSharedPreferences.getBoolean(str_name, false); - - } +public class LocalUserInfo { + public static final String PREFERENCE_NAME = "local_userinfo"; + public static final String FIRST_LOGIN = "firstLogin"; + public static final String SET_USER_NAME = "set_user_name"; + public static final String NOTIFIACTION_TAGS = "notifiaction_tags"; + public static final String MAIN_ACTIVE = "main_active"; + private static SharedPreferences mSharedPreferences; + private static LocalUserInfo mPreferenceUtils; + private static SharedPreferences.Editor editor; + + private LocalUserInfo(Context cxt) { + mSharedPreferences = cxt.getSharedPreferences(PREFERENCE_NAME, + Context.MODE_PRIVATE); + } + + /** + * Get Single(global) SharedPreferences + * + * @param cxt + * @return + */ + public static LocalUserInfo getInstance(Context cxt) { + if (mPreferenceUtils == null) { + mPreferenceUtils = new LocalUserInfo(cxt); + } + + editor = mSharedPreferences.edit(); + + return mPreferenceUtils; + } + + public void setUserInfo(String str_name, String str_value) { + editor.putString(str_name, str_value); + editor.commit(); + } + + public void setUserInfoInt(String str_name, int str_value) { + editor.putInt(str_name, str_value); + editor.commit(); + } + + public int getUserInfoInt(String str_name, int i) { + return mSharedPreferences.getInt(str_name, i); + } + + public void setUserInfoBoolean(String str_name, Boolean str_value) { + editor.putBoolean(str_name, str_value); + editor.commit(); + } + + public String getUserInfo(String str_name) { + return mSharedPreferences.getString(str_name, ""); + } + + + public Boolean getUserInfoBoolean(String str_name) { + return mSharedPreferences.getBoolean(str_name, true); + } } diff --git a/app/src/main/java/org/dync/teameeting/utils/MeetingHelper.java b/app/src/main/java/org/dync/teameeting/utils/MeetingHelper.java new file mode 100644 index 0000000..79f98c9 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/utils/MeetingHelper.java @@ -0,0 +1,28 @@ +package org.dync.teameeting.utils; + +import org.dync.teameeting.bean.MeetingListEntity; + +import java.util.List; + +/** + * Created by Xiao_Bailong on 2016/1/21. + */ +public class MeetingHelper { + /** + * if meeting List + * + * @param mDatas + * @param meetingId + * @return -1 postion null , >0 meetingID on arraylist position + */ + public static int getMeetingIdPosition(List mDatas, String meetingId) { + + for (int i = 0; i < mDatas.size(); i++) { + MeetingListEntity meetingListEntity = mDatas.get(i); + if (meetingId.equals(meetingListEntity.getMeetingid())) { + return i; + } + } + return -1; + } +} diff --git a/app/src/main/java/org/dync/teameeting/utils/RTCVideoView.java b/app/src/main/java/org/dync/teameeting/utils/RTCVideoView.java new file mode 100644 index 0000000..4fdcf39 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/utils/RTCVideoView.java @@ -0,0 +1,566 @@ +package org.dync.teameeting.utils; + +import android.content.Context; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.RelativeLayout; + +import org.anyrtc.meet_kit.RTCViewHelper; +import org.dync.teameeting.R; +import org.webrtc.EglBase; +import org.webrtc.PercentFrameLayout; +import org.webrtc.RendererCommon; +import org.webrtc.SurfaceViewRenderer; +import org.webrtc.VideoRenderer; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * Created by Eric on 2016/7/26. + */ +public class RTCVideoView implements RTCViewHelper { + private static final String TAG = "RTCVideoView"; + private static Context mContent; + private static int SUB_X = 72; + private static int SUB_Y = 2; + private static int SUB_WIDTH = 20; + private static int SUB_HEIGHT = 18; + + private static int mScreenWidth; + private static int mScreenHeight; + private static ImageView mVoiceClose; + private static ImageView mVideoClose; + private HashMap mVoiceSetting = new HashMap(); + private HashMap mVideoSetting = new HashMap(); + private VideoViewPeopleEvent mVideoViewPeopleEvent; + + public interface VideoViewPeopleEvent { + void OnPeopleNumChange(int peopleNum); + } + + /** + * 人数改变回掉监听 + * + * @param videoViewPeopleEvent + */ + public void setVideoViewPeopleNumEvent(VideoViewPeopleEvent videoViewPeopleEvent) { + mVideoViewPeopleEvent = videoViewPeopleEvent; + } + + protected static class VideoView { + public String strPeerId; + public int index; + public int x; + public int y; + public int w; + public int h; + public PercentFrameLayout mLayout = null; + public SurfaceViewRenderer mView = null; + public VideoRenderer mRenderer = null; + private RelativeLayout layoutCamera = null; + + private boolean mVoiceShowFalg = false; + private boolean mVideoShowFalg = false; + private ImageView mVoiceImageView; + private ImageView mVideoImageView; + private int width = mScreenWidth * SUB_WIDTH / (100 * 3); + private int height = mScreenHeight * SUB_HEIGHT / (100 * 3); + + + public VideoView(String strPeerId, Context ctx, EglBase eglBase, int index, int x, int y, int w, int h) { + this.strPeerId = strPeerId; + this.index = index; + this.x = x; + this.y = y; + this.w = w; + this.h = h; + + mLayout = new PercentFrameLayout(ctx); + mLayout.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); + View view = View.inflate(ctx, R.layout.layout_top_right, null); + + mView = (SurfaceViewRenderer) view.findViewById(R.id.suface_view); + layoutCamera = (RelativeLayout) view.findViewById(R.id.layout_camera); + mView.init(eglBase.getEglBaseContext(), null); + mView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); + mLayout.addView(view); + } + + public Boolean Fullscreen() { + return w == 100 || h == 100; + } + + public void close() { + mLayout.removeView(mView); + mView.release(); + mView = null; + mRenderer = null; + } + + /** + * 打开或者关闭视频 + */ + private void createImageView() { + mVoiceImageView = new ImageView(mContent); + mVoiceImageView.setImageResource(R.drawable.small_mic_muted); + mVoiceImageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); + ViewGroup.LayoutParams layoutParamsVoice = new RelativeLayout.LayoutParams(width, height); + mVideoView.addView(mVoiceImageView, layoutParamsVoice); + mVoiceImageView.setVisibility(View.GONE); + + mVideoImageView = new ImageView(mContent); + mVideoImageView.setImageResource(R.drawable.video_close_small); + mVideoImageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); + ViewGroup.LayoutParams layoutParamsVideo = new RelativeLayout.LayoutParams(width, height); + mVideoView.addView(mVideoImageView, layoutParamsVideo); + mVideoImageView.setVisibility(View.GONE); + } + + private void updateView() { + if (mVoiceShowFalg) { + ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) mVoiceImageView.getLayoutParams(); + if (Fullscreen()) { + marginLayoutParams.leftMargin = mScreenWidth / 2 - width; + marginLayoutParams.topMargin = mScreenHeight / 2 - height; + mVoiceClose.setVisibility(View.VISIBLE); + mVoiceImageView.setVisibility(View.GONE); + Log.i(TAG, "updateView: Fullscreen "); + } else { + marginLayoutParams.leftMargin = mScreenWidth * (x + SUB_WIDTH) / 100 - width; + marginLayoutParams.topMargin = mScreenHeight * y / 100; + mVoiceImageView.setVisibility(View.VISIBLE); + Log.i(TAG, "updateView: " + " marginLayoutParams.leftMargin " + marginLayoutParams.leftMargin + " marginLayoutParams.topMargin " + marginLayoutParams.topMargin); + } + + mVoiceImageView.setLayoutParams(marginLayoutParams); + } else { + if (Fullscreen()) { + mVoiceClose.setVisibility(View.GONE); + } else { + mVoiceImageView.setVisibility(View.GONE); + } + } + + + if (mVideoShowFalg) { + + ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) mVideoImageView.getLayoutParams(); + if (Fullscreen()) { + marginLayoutParams.leftMargin = mScreenWidth - width; + marginLayoutParams.topMargin = 0; + // mVoiceView.setVisibility(View.GONE); + mVideoClose.setVisibility(View.VISIBLE); + mVideoImageView.setVisibility(View.GONE); + } else { + marginLayoutParams.leftMargin = mScreenWidth * (x + SUB_WIDTH / 2) / 100 - width / 2; + marginLayoutParams.topMargin = mScreenHeight * (y + SUB_HEIGHT / 2) / 100 - height / 2; + // mVoiceClose.setVisibility(View.GONE); + mVideoImageView.setVisibility(View.VISIBLE); + Log.i(TAG, "updateView: " + " marginLayoutParams.leftMargin " + marginLayoutParams.leftMargin + " marginLayoutParams.topMargin " + marginLayoutParams.topMargin); + } + + mVideoImageView.setLayoutParams(marginLayoutParams); + } else { + if (Fullscreen()) { + mVideoClose.setVisibility(View.GONE); + } else { + mVideoImageView.setVisibility(View.GONE); + } + } + } + + } + private boolean mAutoLayout; + private EglBase mRootEglBase; + private static RelativeLayout mVideoView; + private VideoView mLocalRender; + + private HashMap mRemoteRenders; + + public RTCVideoView(RelativeLayout videoView, Context ctx, EglBase eglBase, ImageView closeVoice, ImageView closeVideo) { + mAutoLayout = false; + mVideoView = videoView; + mContent = ctx; + mRootEglBase = eglBase; + mVoiceClose = closeVoice;//话筒控制 + mVideoClose = closeVideo;//视屏前后控制 + mLocalRender = null; + mRemoteRenders = new HashMap<>(); + } + + private int GetVideoRenderSize() { + int size = mRemoteRenders.size(); + if (mLocalRender != null) { + size += 1; + } + return size; + } + + private void SwitchViewPosition(VideoView view1, VideoView view2) { + int index, x, y, w, h; + index = view1.index; + x = view1.x; + y = view1.y; + w = view1.w; + h = view1.h; + view1.index = view2.index; + view1.x = view2.x; + view1.y = view2.y; + view1.w = view2.w; + view1.h = view2.h; + + view2.index = index; + view2.x = x; + view2.y = y; + view2.w = w; + view2.h = h; + + view1.mLayout.setPosition(view1.x, view1.y, view1.w, view1.h); + view2.mLayout.setPosition(view2.x, view2.y, view2.w, view2.h); + mVideoView.updateViewLayout(view1.mLayout, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); + mVideoView.updateViewLayout(view2.mLayout, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); + } + + public void BubbleSortSubView(VideoView view) { + if (mLocalRender != null && view.index + 1 == mLocalRender.index) { + SwitchViewPosition(mLocalRender, view); + } else { + Iterator> iter = mRemoteRenders.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + VideoView render = entry.getValue(); + if (view.index + 1 == render.index) { + SwitchViewPosition(render, view); + break; + } + } + } + if (view.index < mRemoteRenders.size()) { + BubbleSortSubView(view); + } + } + + /** + * updateVideoView + */ + private void updateVideoView() { + + int startPosition = (100 - SUB_WIDTH * mRemoteRenders.size()) / 2; + int remotePosition; + int index; + Iterator> iter = mRemoteRenders.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + + VideoView render = entry.getValue(); + if (render.Fullscreen()) { + render = mLocalRender; + index = mLocalRender.index; + } else { + index = render.index; + } + + render.y = SUB_Y; + + remotePosition = startPosition + (index - 1) * SUB_WIDTH; + //render.x = remotePosition; + Log.e(TAG, "updateVideoView: remotePosition " + remotePosition + " startPosition " + startPosition + + " index " + index); + + if (!render.Fullscreen()) { + render.x = remotePosition; + } else { + mLocalRender.x = remotePosition; + } + + render.mLayout.setPosition(remotePosition, render.y, SUB_WIDTH, SUB_HEIGHT); + render.mView.requestLayout(); + + } + + } + + /** + * MoveVideoView + * + * @param flag true move + *

+ * false initial position + */ + public void MoveVideoView(boolean flag) { + + if (flag) { + if (mScreenHeight > mScreenWidth) { + SUB_Y = 80; + SUB_WIDTH = 20; + SUB_HEIGHT = 18; + + } else { + SUB_Y = 65; + SUB_WIDTH = 20; + SUB_HEIGHT = 25; + } + + } else { + if (mScreenHeight > mScreenWidth) { + SUB_Y = 65; + SUB_WIDTH = 20; + SUB_HEIGHT = 18; + + } else { + SUB_Y = 45; + SUB_WIDTH = 20; + SUB_HEIGHT = 25; + } + } + + int startPosition = (100 - SUB_WIDTH * mRemoteRenders.size()) / 2; + int remotePosition; + int index; + Iterator> iter = mRemoteRenders.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + + VideoView render = entry.getValue(); + if (render.Fullscreen()) { + render = mLocalRender; + index = mLocalRender.index; + } else { + index = render.index; + } + + render.y = SUB_Y; + + remotePosition = startPosition + (index - 1) * SUB_WIDTH; + //render.x = remotePosition; + Log.e(TAG, "updateVideoView: remotePosition " + remotePosition + " startPosition " + startPosition + + " index " + index); + + render.mLayout.setPosition(remotePosition, render.y, SUB_WIDTH, SUB_HEIGHT); + render.mView.requestLayout(); + } + + } + + /** + * updateMediaImage + * + * @param publishId + * @param flag + */ + public void updateRemoteVoiceImage(String publishId, boolean flag) { + + if (mRemoteRenders.containsKey(publishId)) { + VideoView videoView = mRemoteRenders.get(publishId); + videoView.mVoiceShowFalg = !flag; + videoView.updateView(); + } + + } + + /** + * updateLocalMediaImage + * + * @param flag + */ + public void updateLocalVoiceImage(boolean flag) { + mLocalRender.mVoiceShowFalg = !flag; + mLocalRender.updateView(); + } + + public VideoRenderer getLocalVideoRenderer(){ + return mLocalRender.mRenderer; + } + + public void OnRTCAVStatus(String peerId, boolean audioEnable, boolean videoEnable){ + updateRemoteVoiceImage(peerId, audioEnable); + updateRemoteVideoImage(peerId, videoEnable); + mVoiceSetting.put(peerId, audioEnable); + mVideoSetting.put(peerId, videoEnable); + } + + /** + * updateRemoteVideoImage + * + * @param publishId + * @param flag + */ + public void updateRemoteVideoImage(String publishId, boolean flag) { + + if (mRemoteRenders.containsKey(publishId)) { + VideoView videoView = mRemoteRenders.get(publishId); + videoView.mVideoShowFalg = !flag; + videoView.updateView(); + } + + } + + /** + * updateLocalVideoImage + * + * @param flag + */ + public void updateLocalVideoImage(boolean flag) { + mLocalRender.mVideoShowFalg = !flag; + mLocalRender.updateView(); + } + + /** + * updateImageFlag + */ + private void updateImageFlag() { + Log.e(TAG, "updateImageFlag: "); + Iterator> iterator = mVideoSetting.entrySet().iterator(); + + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + String publishId = entry.getKey(); + Boolean videoFlag = entry.getValue(); + updateRemoteVideoImage(publishId, videoFlag); + } + + + iterator = mVoiceSetting.entrySet().iterator(); + + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + String publishId = entry.getKey(); + Boolean voiceFlag = entry.getValue(); + updateRemoteVoiceImage(publishId, voiceFlag); + } + } + + /** + * Landscape vertical screen change + */ + public void onScreenChanged() { + Log.i(TAG, "onScreenChanged: " + mRemoteRenders.size()); + mScreenWidth = ScreenUtils.getScreenWidth(mContent); + mScreenHeight = ScreenUtils.getScreenHeight(mContent) - ScreenUtils.getStatusHeight(mContent); + + if (mScreenHeight > mScreenWidth) { + + SUB_Y = 65; + SUB_WIDTH = 20; + SUB_HEIGHT = 18; + +/* if(mRemoteRenders.size() == 1){ + SUB_WIDTH = 24; + SUB_HEIGHT = 18; + }else { + + SUB_WIDTH = 20; + SUB_HEIGHT = 18; + }*/ + + } else { + + SUB_Y = 45; + SUB_WIDTH = 20; + SUB_HEIGHT = 25; + + } + + + updateVideoView(); + } + + /** + * Implements for AnyRTCViewEvents. + */ + @Override + public VideoRenderer OnRtcOpenLocalRender() { + int size = GetVideoRenderSize(); + if (size == 0) { + mLocalRender = new VideoView("localRender", mVideoView.getContext(), mRootEglBase, 0, 0, 0, 100, 100); + } else { + mLocalRender = new VideoView("localRender", mVideoView.getContext(), mRootEglBase, size, SUB_X, (100 - size * (SUB_HEIGHT + SUB_Y)), SUB_WIDTH, SUB_HEIGHT); + mLocalRender.mView.setZOrderMediaOverlay(true); + } + mVideoView.addView(mLocalRender.mLayout); + + mLocalRender.mLayout.setPosition( + mLocalRender.x, mLocalRender.y, mLocalRender.w, mLocalRender.h); + mLocalRender.mView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL); + mLocalRender.mRenderer = new VideoRenderer(mLocalRender.mView); + mLocalRender.createImageView(); + return mLocalRender.mRenderer; + } + + @Override + public void OnRtcRemoveLocalRender() { + if (mLocalRender != null) { + mLocalRender.close(); + mLocalRender.mRenderer = null; + + mVideoView.removeView(mLocalRender.mLayout); + mVideoView.removeView(mLocalRender.mVideoImageView); + mVideoView.removeView(mLocalRender.mVoiceImageView); + mLocalRender.mVideoImageView = null; + mLocalRender.mVoiceImageView = null; + mLocalRender.mLayout = null; + mLocalRender = null; + mVideoView = null; + } + } + + @Override + public VideoRenderer OnRtcOpenRemoteRender(final String strRtcPeerId) { + VideoView remoteRender = mRemoteRenders.get(strRtcPeerId); + if (remoteRender == null) { + int size = GetVideoRenderSize(); + if (size == 0) { + remoteRender = new VideoView(strRtcPeerId, mVideoView.getContext(), mRootEglBase, 0, 0, 0, 100, 100); + } else { + remoteRender = new VideoView(strRtcPeerId, mVideoView.getContext(), mRootEglBase, size, SUB_X, (100 - size * (SUB_HEIGHT + SUB_Y)), SUB_WIDTH, SUB_HEIGHT); + remoteRender.mView.setZOrderMediaOverlay(true); + } + + mVideoView.addView(remoteRender.mLayout); + + remoteRender.mLayout.setPosition( + remoteRender.x, remoteRender.y, remoteRender.w, remoteRender.h); + remoteRender.mView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL); + remoteRender.mRenderer = new VideoRenderer(remoteRender.mView); + + mRemoteRenders.put(strRtcPeerId, remoteRender); + remoteRender.createImageView(); + updateVideoView(); + updateImageFlag(); + if (mVideoViewPeopleEvent != null) { + mVideoViewPeopleEvent.OnPeopleNumChange(mRemoteRenders.size()); + } + } + return remoteRender.mRenderer; + } + + @Override + public void OnRtcRemoveRemoteRender(String peerId) { + VideoView remoteRender = mRemoteRenders.get(peerId); + if (remoteRender != null) { + if (mRemoteRenders.size() > 1 && remoteRender.index <= mRemoteRenders.size()) { + BubbleSortSubView(remoteRender); + } + remoteRender.close(); + mVideoView.removeView(remoteRender.mLayout); + mVideoView.removeView(remoteRender.mVideoImageView); + mVideoView.removeView(remoteRender.mVoiceImageView); + + remoteRender.mVideoImageView = null; + remoteRender.mVoiceImageView = null; + remoteRender.mLayout = null; + + mRemoteRenders.remove(peerId); + updateVideoView(); + + if (mVideoViewPeopleEvent != null) { + mVideoViewPeopleEvent.OnPeopleNumChange(mRemoteRenders.size()); + } + } + } + +} diff --git a/app/src/main/java/org/dync/teameeting/utils/ScreenUtils.java b/app/src/main/java/org/dync/teameeting/utils/ScreenUtils.java index e4d7023..e384b0c 100644 --- a/app/src/main/java/org/dync/teameeting/utils/ScreenUtils.java +++ b/app/src/main/java/org/dync/teameeting/utils/ScreenUtils.java @@ -10,8 +10,6 @@ import android.view.View; import android.view.WindowManager; -import java.util.StringTokenizer; - /** * Get screen associated auxiliary class * @@ -156,7 +154,7 @@ public static Bitmap snapShotWithoutStatusBar(Activity activity) } /** - * 判断是否为平板 + * judge isPad * * @return */ @@ -172,11 +170,12 @@ public static boolean isPad(Context context) int dens = dm.densityDpi; double screenInches = diagonal / (double) dens; - if (screenInches>6.0) + if (screenInches>=7.0) { return true; } return false; } + } diff --git a/app/src/main/java/org/dync/teameeting/utils/StringHelper.java b/app/src/main/java/org/dync/teameeting/utils/StringHelper.java index db59b2e..f1691f5 100644 --- a/app/src/main/java/org/dync/teameeting/utils/StringHelper.java +++ b/app/src/main/java/org/dync/teameeting/utils/StringHelper.java @@ -1,63 +1,90 @@ package org.dync.teameeting.utils; +import android.content.res.Resources; + +import org.dync.teameeting.R; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.GregorianCalendar; + /** - * Created by 小白龙 on 2016/1/6 0006. + * Created by zhulang on 2016/1/6 0006. */ -public class StringHelper -{ - - public static String formatDuration(long paramLong) - { - String mTimeFormat=": %d %s "; - long l = System.currentTimeMillis() / 1000L - paramLong/ 1000L; - System.out.println("l"+l); +public class StringHelper { + private static GregorianCalendar calendar = new GregorianCalendar(); + + public static String formatDuration(long paramLong, Resources resources) { + String mTimeFormat = " %d %s "; + long l = System.currentTimeMillis() / 1000L - paramLong / 1000L; + System.out.println("l" + l); if (l < 60L) { - return "刚刚"; + return resources.getString(R.string.chat_time_string_now); } - if (l < 120L) - { + if (l < 120L) { String str6 = mTimeFormat; Object[] arrayOfObject6 = new Object[2]; arrayOfObject6[0] = Integer.valueOf(1); - arrayOfObject6[1] = "分钟以前"; + arrayOfObject6[1] = resources.getString(R.string.chat_time_string_minutes_age); return String.format(str6, arrayOfObject6); } - if (l < 3600L) - { + if (l < 3600L) { String str5 = mTimeFormat; Object[] arrayOfObject5 = new Object[2]; arrayOfObject5[0] = Long.valueOf(l / 60L); - arrayOfObject5[1] = "分钟以前"; + arrayOfObject5[1] = resources.getString(R.string.chat_time_string_minutes_age); return String.format(str5, arrayOfObject5); } - if (l < 7200L) - { + if (l < 7200L) { String str4 = mTimeFormat; Object[] arrayOfObject4 = new Object[2]; arrayOfObject4[0] = Integer.valueOf(1); - arrayOfObject4[1] = "小时以前"; + arrayOfObject4[1] = resources.getString(R.string.chat_time_string_hour_age); return String.format(str4, arrayOfObject4); } - if (l < 86400L) - { + if (l < 86400L) { String str3 = mTimeFormat; Object[] arrayOfObject3 = new Object[2]; arrayOfObject3[0] = Long.valueOf(l / 60L / 60L); - arrayOfObject3[1] = "小时以前"; + arrayOfObject3[1] = resources.getString(R.string.chat_time_string_hour_age); return String.format(str3, arrayOfObject3); } - if (l < 172800L) - { + if (l < 172800L) { String str2 = mTimeFormat; Object[] arrayOfObject2 = new Object[2]; arrayOfObject2[0] = Integer.valueOf(1); - arrayOfObject2[1] = "天以前"; + arrayOfObject2[1] = resources.getString(R.string.chat_time_string_hour_age); return String.format(str2, arrayOfObject2); } String str1 = mTimeFormat; Object[] arrayOfObject1 = new Object[2]; arrayOfObject1[0] = Long.valueOf(l / 60L / 60L / 24L); - arrayOfObject1[1] = "天以前"; + arrayOfObject1[1] = resources.getString(R.string.chat_time_string_day_age); return String.format(str1, arrayOfObject1); } + + public static String format(long timeStr, Resources resources) { + + Date date = new Date(timeStr); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(" HH : mm"); + String YYMMDD = TimeHelper.getCustomStr(getYYMMDD(date), resources); + return YYMMDD + simpleDateFormat.format(date); + } + + private static String getYYMMDD(Date date) { + SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd"); + String yueDay = time.format(date); + return yueDay; + } + + public static String unReadMessageStr(long noReadMessageSize, long timeStr, Resources resources) { + return "<" + noReadMessageSize + "> " + resources.getString(R.string.chat_str_new_message) + format(timeStr, resources); + } + + public static String uriToMeetingId(String uri) { + int index = uri.lastIndexOf("//"); + return uri.substring(index + 2, index + 12); + } + + } diff --git a/app/src/main/java/org/dync/teameeting/utils/TimeHelper.java b/app/src/main/java/org/dync/teameeting/utils/TimeHelper.java new file mode 100644 index 0000000..1a589cd --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/utils/TimeHelper.java @@ -0,0 +1,165 @@ +package org.dync.teameeting.utils; + +import android.content.res.Resources; + +import org.dync.teameeting.R; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; + +/** + * Created by Xiao_Bailong on 2016/1/22. + */ +public class TimeHelper { + private static GregorianCalendar calendar = new GregorianCalendar(); + + public TimeHelper() { + } + + + public static long getMillis(String dateString) { + String[] date = dateString.split("-"); + return getMillis(date[0], date[1], date[2]); + } + + + public static long getMillis(int year, int month, int day) { + GregorianCalendar calendar = new GregorianCalendar(year, month, day); + return calendar.getTimeInMillis(); + + } + + + public static long getMillis(String yearString, String monthString, + String dayString) { + int year = Integer.parseInt(yearString); + int month = Integer.parseInt(monthString) - 1; + int day = Integer.parseInt(dayString); + return getMillis(year, month, day); + + } + + + public static long getNow() { + GregorianCalendar now = new GregorianCalendar(); + return now.getTimeInMillis(); + + } + + + public static String getDate(long millis) { + Date date = new Date(millis); + return getYYMMDD(date); + } + + private static String getYYMMDD(Date date) { + + SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd"); + String yueDay = time.format(date); + return yueDay; + } + + + public static int getWeek(long millis) { + calendar.setTimeInMillis(millis); + int week = 8; + int cweek = calendar.get(Calendar.DAY_OF_WEEK); + switch (cweek) { + case 1: + week = 7; + break; + case 2: + week = 1; + break; + case 3: + week = 2; + break; + case 4: + week = 3; + break; + case 5: + week = 4; + break; + case 6: + week = 5; + break; + case 7: + week = 6; + break; + } + + return Integer.valueOf(week); + + } + + public static String getWeekStr(long millis) { + calendar.setTimeInMillis(millis); + String week = ""; + int cweek = calendar.get(Calendar.DAY_OF_WEEK); + switch (cweek) { + case 1: + week = "日"; + break; + case 2: + week = "一"; + break; + case 3: + week = "二"; + break; + case 4: + week = "三"; + break; + case 5: + week = "四"; + break; + case 6: + week = "五"; + break; + case 7: + week = "六"; + break; + } + return week; + } + + public static String getTodayData() { + return getDate(getNow()); + } + + public static String getYesData() { + return getDate(getNow() - 86400000L); + } + + public static String getBeforeYesData() { + return getDate(getNow() - 86400000L - 86400000L); + } + + /** + * @param date 格式为 20xx-xx-xx + * @return + */ + public static String getCustomStr(String date, Resources resources) { + + long millis = getMillis(date); + if (millis == getMillis(getBeforeYesData())) { + return resources.getString(R.string.day3bef); + } else if (millis == getMillis(getYesData())) { + return resources.getString(R.string.yesterday); + } else if (millis == getMillis(getTodayData())) { + return resources.getString(R.string.newadays); + } else if (millis > getMillis(getBeforeWorkData())) { + if (getWeek(getMillis(getTodayData())) > 3 && getWeek(getMillis(getTodayData())) <= 7) { + return resources.getString(R.string.work) + getWeekStr(millis); + } + } + + return date; + } + + public static String getBeforeWorkData() { + return getDate(getNow() - (86400000L * 7)); + } +} diff --git a/app/src/main/java/org/dync/teameeting/utils/Utils.java b/app/src/main/java/org/dync/teameeting/utils/Utils.java index c095eae..690724b 100644 --- a/app/src/main/java/org/dync/teameeting/utils/Utils.java +++ b/app/src/main/java/org/dync/teameeting/utils/Utils.java @@ -1,62 +1,73 @@ package org.dync.teameeting.utils; import android.content.Context; + import android.support.v4.view.MotionEventCompat; + import android.view.MotionEvent; + import android.widget.Toast; + /** - * + * * @author ZLang
- * create at 2015-12-1 上午10:35:11 + * create at 2015-12-1 ??10:35:11 */ -public class Utils -{ - +public class Utils { public static Toast mToast; /** * @param mContext * @param msg */ - public static void showToast(Context mContext, String msg) - { - if (mToast == null) - { + public static void showToast(Context mContext, String msg) { + if (mToast == null) { mToast = Toast.makeText(mContext, "", Toast.LENGTH_SHORT); } + mToast.setText(msg); mToast.show(); } /** - * + * * @param event * @return */ - public static String getActionName(MotionEvent event) - { + public static String getActionName(MotionEvent event) { String action = "unknow"; - switch (MotionEventCompat.getActionMasked(event)) - { - case MotionEvent.ACTION_DOWN: - action = "ACTION_DOWN"; - break; - case MotionEvent.ACTION_MOVE: - action = "ACTION_MOVE"; - break; - case MotionEvent.ACTION_UP: - action = "ACTION_UP"; - break; - case MotionEvent.ACTION_CANCEL: - action = "ACTION_CANCEL"; - break; - case MotionEvent.ACTION_OUTSIDE: - action = "ACTION_SCROLL"; - break; - default: - break; + + switch (MotionEventCompat.getActionMasked(event)) { + case MotionEvent.ACTION_DOWN: + action = "ACTION_DOWN"; + + break; + + case MotionEvent.ACTION_MOVE: + action = "ACTION_MOVE"; + + break; + + case MotionEvent.ACTION_UP: + action = "ACTION_UP"; + + break; + + case MotionEvent.ACTION_CANCEL: + action = "ACTION_CANCEL"; + + break; + + case MotionEvent.ACTION_OUTSIDE: + action = "ACTION_SCROLL"; + + break; + + default: + break; } + return action; } } diff --git a/app/src/main/java/org/dync/teameeting/widgets/BottomMenu.java b/app/src/main/java/org/dync/teameeting/widgets/BottomMenu.java index c1cf6dc..be5e770 100644 --- a/app/src/main/java/org/dync/teameeting/widgets/BottomMenu.java +++ b/app/src/main/java/org/dync/teameeting/widgets/BottomMenu.java @@ -1,48 +1,48 @@ package org.dync.teameeting.widgets; -import org.dync.teameeting.R; -import org.dync.teameeting.TeamMeetingApp; -import org.dync.teameeting.utils.ScreenUtils; -import org.w3c.dom.ls.LSException; - import android.content.Context; -import android.text.Html; + +import android.net.MailTo; + import android.util.AttributeSet; import android.util.Log; + import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; -import android.view.ViewConfiguration; import android.view.ViewGroup; + import android.widget.Scroller; +import com.orhanobut.logger.Logger; + +import org.dync.teameeting.R; +import org.dync.teameeting.TeamMeetingApp; +import org.dync.teameeting.utils.ScreenUtils; + + /** * org.dync.teammeeting.ui.BottomMenu * * @author ZLang
- * 后期努力完善 有部分bug 不影响使用 create at 2015-11-30 下午7:01:22 */ -public class BottomMenu extends ViewGroup -{ - +public class BottomMenu extends ViewGroup { + private static String TAG = "BottomMenu"; + private static final int TOUCH_STATE_REST = 0; + private static final int TOUCH_STATE_SCROLLING = 1; private Context mContext; - private static String TAG = "xbl"; private boolean mDebug = TeamMeetingApp.mIsDebug; private Scroller mScroller = null; - - private static final int TOUCH_STATE_REST = 0; - private static final int TOUCH_STATE_SCROLLING = 1; private int mTouchState = TOUCH_STATE_REST; + // -------------------- // onTouCh proportion private float mTouchSlop = 2.5f; private float mLastionMotionX = 0; private float mLastMotionY = 0; - private VelocityTracker mVelocityTracker = null; // Touch Tracker private int mMenuHeight; private int mScreenHeight; - private int mMaxTop; private int mTop; private int mBottom; @@ -50,36 +50,31 @@ public class BottomMenu extends ViewGroup private int mDyration = 800; private int mXDiff; private View seetingLayout; + private OnTouchSpeedListener touchSpeedListener; - public BottomMenu(Context context) - { + public BottomMenu(Context context) { super(context); mContext = context; init(); } - public BottomMenu(Context context, AttributeSet attrs) - { + public BottomMenu(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; init(); } @Override - public void computeScroll() - { - if (mScroller.computeScrollOffset()) - { + public void computeScroll() { + if (mScroller.computeScrollOffset()) { scrollTo(mScroller.getCurrX(), mScroller.getCurrY()); postInvalidate(); } } - private void init() - { + private void init() { mScroller = new Scroller(mContext); - final float density = mContext.getResources().getDisplayMetrics().density; int tagHeight = Integer.parseInt(this.getTag().toString()); @@ -88,144 +83,115 @@ private void init() mScreenHeight = ScreenUtils.getScreenHeight(getContext()); speedClose = mTouchSlop * ScreenUtils.getScreenHeight(getContext()); - if (mDebug) - { - Log.e(TAG, "init: mScreenHeight"+mScreenHeight +"speedClose"+speedClose ); + if (mDebug) { + Log.e(TAG, + "init: mScreenHeight" + mScreenHeight + "speedClose" + + speedClose); } mTop = mScreenHeight - mMenuHeight; - if (TeamMeetingApp.isPad) - { - mTop = mTop / 2; - if (mDebug) - { - Log.e(TAG, "平板: mTop" + mTop); - } + if (TeamMeetingApp.isPad) { + mTop = mTop / 2; + mMaxTop = 0; + } else { + mMaxTop = ScreenUtils.dpToP(getResources(), 50); } - mMaxTop = 0; - if (mDebug) - { + if (mDebug) { Log.e(TAG, "mMaxTop--" + mMaxTop); } - - /* if (tagHeight < 400) - { - mTop = mScreenHeight - mMenuHeight; - mMaxTop = 0; - } else - { - mTop = mScreenHeight - mMenuHeight / 2; - mMaxTop = mMenuHeight / 2; - }*/ - - if (mDebug) + if (mDebug) { Log.e(TAG, "---menuHeight --" + mMenuHeight); + } } @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) - { + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = MeasureSpec.getSize(widthMeasureSpec); int height = MeasureSpec.getSize(heightMeasureSpec); - //测量宽高 setMeasuredDimension(width, height); - for (int i = 0; i < getChildCount(); i++) - { + for (int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); child.measure(widthMeasureSpec, heightMeasureSpec); } } @Override - protected void onFinishInflate() - { + protected void onFinishInflate() { super.onFinishInflate(); seetingLayout = findViewById(R.id.rl_seetingLayout); - Log.e(TAG, "onFinishInflate: "+seetingLayout.getMeasuredHeight()); + Log.e(TAG, "onFinishInflate: " + seetingLayout.getMeasuredHeight()); } - // layout过程 + // layout?? @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) - { + protected void onLayout(boolean changed, int l, int t, int r, int b) { + Log.e(TAG, "onLayout: " + seetingLayout.getMeasuredHeight()); - Log.e(TAG, "onLayout: "+seetingLayout.getMeasuredHeight() ); - if (!TeamMeetingApp.isPad) - { - t = mTop; - } - - for (int i = 0; i < getChildCount(); i++) - { + for (int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); - child.layout(l,t, r, b); + child.layout(l, t, r, b); } } @Override - public boolean dispatchTouchEvent(MotionEvent ev) - { - // final int action = ev.getAction(); + public boolean dispatchTouchEvent(MotionEvent ev) { return super.dispatchTouchEvent(ev); } // @Override - public boolean onInterceptTouchEvent(MotionEvent ev) - { + public boolean onInterceptTouchEvent(MotionEvent ev) { final int action = ev.getAction(); final float x = ev.getX(); final float y = ev.getY(); - switch (action) - { + switch (action) { case MotionEvent.ACTION_MOVE: + // Log.e(TAG, "onInterceptTouchEvent move"); final int xDiff = (int) Math.abs(mLastionMotionX - x); int yDiff = (int) Math.abs(mLastMotionY - y); - if (Math.abs(xDiff) > Math.abs(yDiff)) - { + if (Math.abs(xDiff) > Math.abs(yDiff)) { return false; } - if (xDiff > 0) - { + if (xDiff > 0) { mTouchState = TOUCH_STATE_SCROLLING; } + break; case MotionEvent.ACTION_DOWN: - // Log.e(TAG, "onInterceptTouchEvent down"); mLastionMotionX = x; mLastMotionY = y; - // Log.e(TAG, mScroller.isFinished() + ""); - if (mScroller != null) - { - if (!mScroller.isFinished()) - { + + if (mScroller != null) { + if (!mScroller.isFinished()) { mScroller.abortAnimation(); } } + mTouchState = mScroller.isFinished() ? TOUCH_STATE_REST : TOUCH_STATE_SCROLLING; - // mTouchState = TOUCH_STATE_SCROLLING; + // mTouchState = TOUCH_STATE_SCROLLING; break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: Log.e(TAG, "onInterceptTouchEvent up or cancel"); mTouchState = TOUCH_STATE_REST; + break; } - if (mDebug) - { + + if (mDebug) { Log.e(TAG, mTouchState + "====" + TOUCH_STATE_REST); } @@ -233,121 +199,106 @@ public boolean onInterceptTouchEvent(MotionEvent ev) } @Override - public boolean onTouchEvent(MotionEvent event) - { - if (mVelocityTracker == null) - { + public boolean onTouchEvent(MotionEvent event) { + if (mVelocityTracker == null) { mVelocityTracker = VelocityTracker.obtain(); } + mVelocityTracker.addMovement(event); float x = event.getX(); float y = event.getY(); - switch (event.getAction()) - { + + switch (event.getAction()) { case MotionEvent.ACTION_DOWN: - if (mScroller != null) - { - if (!mScroller.isFinished()) - { + if (mScroller != null) { + if (!mScroller.isFinished()) { mScroller.abortAnimation(); } } + mLastMotionY = y; mLastionMotionX = x; + break; + case MotionEvent.ACTION_MOVE: + // Log.e(TAG, "onTouchEvent = MOVE" + getScrollY()); int detaX = (int) (mLastionMotionX - x); int detaY = (int) (mLastMotionY - y); - if (Math.abs(detaY) < 500) - { + if (Math.abs(detaY) < 500) { scrollBy(0, detaY); } + mLastionMotionX = x; mLastMotionY = y; // mTouchState = TOUCH_STATE_REST; - break; + case MotionEvent.ACTION_UP: Log.e(TAG, "onTouchEvent = UP" + getScrollY()); + final VelocityTracker velocityTracker = mVelocityTracker; velocityTracker.computeCurrentVelocity(1000); + int velocityX = (int) velocityTracker.getXVelocity(); int velocityY = (int) velocityTracker.getYVelocity(); - - - if (velocityY > speedClose) - { - if (touchSpeedListener != null) - { + if (velocityY > speedClose) { + if (touchSpeedListener != null) { scrollBy(0, -mScreenHeight); touchSpeedListener.touchSpeed(velocityX, velocityY); } - - } else - { + } else { ScrollView(velocityX, velocityY); } + mTouchState = TOUCH_STATE_REST; + break; + case MotionEvent.ACTION_CANCEL: Log.e(TAG, "onTouchEvent = CANCEL" + getScrollY()); mTouchState = TOUCH_STATE_REST; + break; } return true; } - private void ScrollView(int velocityX, int velocityY) - { - - if (getScrollY() < mMaxTop && getScrollY() >= 0) - { + private void ScrollView(int velocityX, int velocityY) { + if ((getScrollY() < mMaxTop) && (getScrollY() >= 0)) { mScroller.fling(getScrollX(), getScrollY(), 0, (int) (-velocityY), 0, 0, 0, mMaxTop); - - } else - { - if (getScrollY() < 0) - { + } else { + if (getScrollY() < 0) { mScroller.startScroll(0, getScrollY(), 0, -(getScrollY()), Math.abs(mDyration)); - } else - { - + } else { mScroller.startScroll(0, getScrollY(), 0, -(getScrollY() - mMaxTop), Math.abs(mDyration)); } - } invalidate(); - if (mVelocityTracker != null) - { + + if (mVelocityTracker != null) { mVelocityTracker.recycle(); mVelocityTracker = null; } - } - public interface OnTouchSpeedListener - { - public void touchSpeed(int velocityX, int velocityY); - } - - ; - - private OnTouchSpeedListener touchSpeedListener; - public void setOnTouchQuickSpeedListener( - OnTouchSpeedListener touchSpeedListener) - { + OnTouchSpeedListener touchSpeedListener) { this.touchSpeedListener = touchSpeedListener; } + + public interface OnTouchSpeedListener { + void touchSpeed(int velocityX, int velocityY); + } } diff --git a/app/src/main/java/org/dync/teameeting/widgets/ConfirmDialog.java b/app/src/main/java/org/dync/teameeting/widgets/ConfirmDialog.java new file mode 100644 index 0000000..f4a605e --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/widgets/ConfirmDialog.java @@ -0,0 +1,88 @@ +package org.dync.teameeting.widgets; + + +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.KeyEvent; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import org.dync.teameeting.R; + +/** + * 确定在右,取消在左 + */ +public class ConfirmDialog extends AlertDialog implements View.OnClickListener { + + + private String title; + private String userName; + private String ok; + private boolean isdefaut = true; + + private final OnDialogButtonClickListener listener; + private EditText evUsername; + private TextView tvTitleText; + + public ConfirmDialog(Context context, String title, String userName, String ok, OnDialogButtonClickListener listener) { + super(context); + this.title = title; + this.userName = userName; + this.ok = ok; + this.listener = listener; + } + + public ConfirmDialog(Context context, String userName, OnDialogButtonClickListener listener) { + super(context); + this.isdefaut = false; + this.userName = userName; + this.listener = listener; + } + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_ecaluation); + tvTitleText = (TextView) findViewById(R.id.tv_title_text); + evUsername = (EditText) findViewById(R.id.et_user_name); + Button btn_ok = (Button) findViewById(R.id.confirm_button); + if (isdefaut) { + tvTitleText.setText(title); + btn_ok.setText(ok); + } + evUsername.setText(userName); + btn_ok.setOnClickListener(this); + } + + + /** + * 对话框按钮单击的监听器 + */ + public interface OnDialogButtonClickListener { + + /** + * 当确定按钮被单击的时候会执行 + */ + void onOkClick(Dialog dialog, View v, String username); + + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.confirm_button: // 确定 + if (listener != null) { + listener.onOkClick(this, v, evUsername.getText().toString().trim()); + } + cancel(); + break; + } + } + +} diff --git a/app/src/main/java/org/dync/teameeting/widgets/MyListView.java b/app/src/main/java/org/dync/teameeting/widgets/MyListView.java new file mode 100644 index 0000000..3303205 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/widgets/MyListView.java @@ -0,0 +1,31 @@ +package org.dync.teameeting.widgets; + +import android.content.Context; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.widget.ListView; + +/** + * Created by Xiao_Bailong on 2016/1/21. + */ +public class MyListView extends ListView { + public MyListView(Context context) { + super(context); + } + + public MyListView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public MyListView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + @Override + protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, + int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) { + + return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, + maxOverScrollX, 100, isTouchEvent); + } +} diff --git a/app/src/main/java/org/dync/teameeting/widgets/MySwipeRefreshLayout.java b/app/src/main/java/org/dync/teameeting/widgets/MySwipeRefreshLayout.java new file mode 100644 index 0000000..0963031 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/widgets/MySwipeRefreshLayout.java @@ -0,0 +1,46 @@ +package org.dync.teameeting.widgets; + +import android.content.Context; +import android.support.v4.widget.SwipeRefreshLayout; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; + +/** + * Created by H_lang on 2016/1/11. + */ +public class MySwipeRefreshLayout extends SwipeRefreshLayout { + public MySwipeRefreshLayout(Context context) { + super(context); + } + + public MySwipeRefreshLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + private int downY; + private int downX; + + @Override + public boolean onInterceptTouchEvent(MotionEvent event) { + final int action = event.getAction(); + switch (action) { + case MotionEvent.ACTION_DOWN: + downY = (int) event.getY(); + downX = (int) event.getX(); + return super.onInterceptTouchEvent(event); + case MotionEvent.ACTION_MOVE: + int deltaY = (int) (event.getY() - downY); + int deltaX = (int) (event.getX() - downX); + if (deltaY - Math.abs(deltaX) > 10) + return super.onInterceptTouchEvent(event); + break; + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + break; + } + return false; + } + + +} diff --git a/app/src/main/java/org/dync/teameeting/widgets/PopupWindowCustom.java b/app/src/main/java/org/dync/teameeting/widgets/PopupWindowCustom.java index 2f1e674..298a12d 100644 --- a/app/src/main/java/org/dync/teameeting/widgets/PopupWindowCustom.java +++ b/app/src/main/java/org/dync/teameeting/widgets/PopupWindowCustom.java @@ -16,124 +16,117 @@ import org.dync.teameeting.utils.ScreenUtils; /** - * * @author ZLang create at
* zhangqilu updata 2015-12-10 下午8:15:02 */ -public class PopupWindowCustom -{ - - private Context mContext; - private PopupWindow mWindow; - private LinearLayout mContentView; - private ImageButton mClosePopup, mInviteMessagePopup, mInviteWeixinPopup; - private TextView mCopyLinkText; - private Button mCopyLinkButton; - private OnPopupWindowClickListener mOnListener; - private int margin_top = 110; // The default distance from the bottom - private int mScreenWidth; - private int mScreenHeight; - - public PopupWindowCustom(Context context, View btnView, View topbar, - OnPopupWindowClickListener listener) - { - // TODO Auto-generated constructor stub - mContext = context; - mOnListener = listener; - initData(); - inintView(); - layoutPopup(btnView, topbar); - } - - /** - * - */ - private void initData() - { - mScreenWidth = ScreenUtils.getScreenWidth(mContext); - mScreenHeight = ScreenUtils.getScreenHeight(mContext); - } - - public interface OnPopupWindowClickListener - { - public void onPopupClickListener(View view); - } - - private void layoutPopup(View btnView, View topbar) - { +public class PopupWindowCustom { + + private Context mContext; + private PopupWindow mWindow; + private LinearLayout mContentView; + private ImageButton mClosePopup, mInviteMessagePopup, mInviteWeixinPopup; + private TextView mCopyLinkText; + private Button mCopyLinkButton; + private OnPopupWindowClickListener mOnListener; + private int margin_top = 110; // The default distance from the bottom + private int mScreenWidth; + private int mScreenHeight; + private String mShareUrl; + + public PopupWindowCustom(Context context, View btnView, View topbar, + OnPopupWindowClickListener listener, String shareUrl) { + // TODO Auto-generated constructor stub + mContext = context; + mOnListener = listener; + mShareUrl = shareUrl; + initData(); + inintView(); + layoutPopup(btnView, topbar); + } + + /** + * + */ + private void initData() { + mScreenWidth = ScreenUtils.getScreenWidth(mContext); + mScreenHeight = ScreenUtils.getScreenHeight(mContext); + } + + public interface OnPopupWindowClickListener { + public void onPopupClickListener(View view); + } + + private void layoutPopup(View btnView, View topbar) { int popupWidth = mScreenWidth - btnView.getWidth(); int[] location = new int[2]; btnView.getLocationOnScreen(location); int btn_weight = btnView.getWidth() / 2; int locationY = location[1] + btn_weight; - int yoff = btn_weight /2; + int yoff = btn_weight / 2; int popupheight = mScreenHeight - (locationY * 2); mWindow = new PopupWindow(mContext); final float density = mContext.getResources().getDisplayMetrics().density; - if (TeamMeetingApp.isPad) - { + if (TeamMeetingApp.isPad) { popupheight = mScreenHeight / 2; - popupWidth = (int) ScreenUtils.dip2Dimension(320,mContext); - btn_weight = mScreenWidth-popupWidth-btn_weight; + popupWidth = (int) ScreenUtils.dip2Dimension(320, mContext); + btn_weight = mScreenWidth - popupWidth - btn_weight; } - int marginTop = (int) (margin_top * density); - - mWindow.setHeight(popupheight - marginTop); - mWindow.setWidth(popupWidth); - mWindow.setContentView(mContentView); - mWindow.setFocusable(true); - mWindow.setTouchable(true); - mWindow.setOutsideTouchable(true); - mWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - mWindow.setAnimationStyle(R.style.popwin_anim_style); - mWindow.showAsDropDown(topbar, btn_weight,yoff); - } - - private void inintView() - { - - if (mScreenHeight < mScreenWidth ) - { - mContentView = (LinearLayout) View.inflate(mContext, R.layout.popup_layout_horiz, null); - margin_top = 0; - } else - { - mContentView = (LinearLayout) View.inflate(mContext, R.layout.popup_layout, null); - margin_top = 110; - } - - mClosePopup = (ImageButton) mContentView.findViewById(R.id.ibtn_close); - mInviteMessagePopup = (ImageButton) mContentView.findViewById(R.id.ibtn_message); - mInviteWeixinPopup = (ImageButton) mContentView.findViewById(R.id.ibtn_weixin); - mCopyLinkText = (TextView) mContentView.findViewById(R.id.tv_copy); - mCopyLinkButton = (Button) mContentView.findViewById(R.id.btn_copy); - - mClosePopup.setOnClickListener(mOnClickListener); - mInviteMessagePopup.setOnClickListener(mOnClickListener); - mInviteWeixinPopup.setOnClickListener(mOnClickListener); - mCopyLinkButton.setOnClickListener(mOnClickListener); - mCopyLinkText.setOnClickListener(mOnClickListener); - } - - private OnClickListener mOnClickListener = new OnClickListener() - { - - @Override - public void onClick(View view) - { - mOnListener.onPopupClickListener(view); - } - }; - - /** - * Dismiss the popup window. - */ - public void dismiss() - { - mWindow.dismiss(); - } + int marginTop = (int) (margin_top * density); + + mWindow.setHeight(popupheight - marginTop); + mWindow.setWidth(popupWidth); + mWindow.setContentView(mContentView); + mWindow.setFocusable(true); + mWindow.setTouchable(true); + mWindow.setOutsideTouchable(true); + mWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + mWindow.setAnimationStyle(R.style.popwin_anim_style); + mWindow.showAsDropDown(topbar, btn_weight, yoff); + } + + private void inintView() { + + if (mScreenHeight < mScreenWidth) { + mContentView = (LinearLayout) View.inflate(mContext, R.layout.popup_layout_horiz, null); + margin_top = 0; + } else { + mContentView = (LinearLayout) View.inflate(mContext, R.layout.popup_layout, null); + margin_top = 110; + } + + mClosePopup = (ImageButton) mContentView.findViewById(R.id.ibtn_close); + mInviteMessagePopup = (ImageButton) mContentView.findViewById(R.id.ibtn_message); + mInviteWeixinPopup = (ImageButton) mContentView.findViewById(R.id.ibtn_weixin); + mCopyLinkText = (TextView) mContentView.findViewById(R.id.tv_copy); + mCopyLinkButton = (Button) mContentView.findViewById(R.id.btn_copy); + mCopyLinkText.setText(mShareUrl); + + mClosePopup.setOnClickListener(mOnClickListener); + mInviteMessagePopup.setOnClickListener(mOnClickListener); + mInviteWeixinPopup.setOnClickListener(mOnClickListener); + mCopyLinkButton.setOnClickListener(mOnClickListener); + mCopyLinkText.setOnClickListener(mOnClickListener); + } + + private OnClickListener mOnClickListener = new OnClickListener() { + + @Override + public void onClick(View view) { + mOnListener.onPopupClickListener(view); + } + }; + + /** + * Dismiss the popup window. + */ + public void dismiss() { + mWindow.dismiss(); + if (mContext != null) { + mContext = null; + } + } } diff --git a/app/src/main/java/org/dync/teameeting/widgets/ReFlashListView.java b/app/src/main/java/org/dync/teameeting/widgets/ReFlashListView.java new file mode 100644 index 0000000..1326a46 --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/widgets/ReFlashListView.java @@ -0,0 +1,269 @@ +package org.dync.teameeting.widgets; + +import android.content.Context; +import android.util.AttributeSet; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.RotateAnimation; +import android.view.animation.TranslateAnimation; +import android.widget.AbsListView; +import android.widget.AbsListView.OnScrollListener; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.ProgressBar; +import android.widget.TextView; + +import org.dync.teameeting.R; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class ReFlashListView extends ListView implements OnScrollListener { + View header; + int headerHeight; + int firstVisibleItem; + int scrollState; + boolean isRemark; + int startY; + + int state; + final int NONE = 0; + final int PULL = 1; + final int RELESE = 2; + final int REFLASHING = 3; + IReflashListener iReflashListener; + public ReFlashListView(Context context) { + super(context); + // TODO Auto-generated constructor stub + initView(context); + } + + public ReFlashListView(Context context, AttributeSet attrs) { + super(context, attrs); + // TODO Auto-generated constructor stub + initView(context); + } + + public ReFlashListView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + // TODO Auto-generated constructor stub + initView(context); + } + + /** + * + * @param context + */ + + private void initView(Context context) { + LayoutInflater inflater = LayoutInflater.from(context); + header = inflater.inflate(R.layout.header_layout, null); + measureView(header); + headerHeight = header.getMeasuredHeight(); + Log.i("tag", "headerHeight = " + headerHeight); + topPadding(-headerHeight); + this.addHeaderView(header); + this.setOnScrollListener(this); + } + + /** + * measureView + * + * @param view + */ + private void measureView(View view) { + ViewGroup.LayoutParams p = view.getLayoutParams(); + if (p == null) { + p = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT); + } + int width = ViewGroup.getChildMeasureSpec(0, 0, p.width); + int height; + int tempHeight = p.height; + if (tempHeight > 0) { + height = MeasureSpec.makeMeasureSpec(tempHeight, + MeasureSpec.EXACTLY); + } else { + height = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + } + view.measure(width, height); + } + + /** + * topPadding + * + * @param topPadding + */ + private void topPadding(int topPadding) { + header.setPadding(header.getPaddingLeft(), topPadding, + header.getPaddingRight(), header.getPaddingBottom()); + header.invalidate(); + } + + @Override + public void onScroll(AbsListView view, int firstVisibleItem, + int visibleItemCount, int totalItemCount) { + // TODO Auto-generated method stub + this.firstVisibleItem = firstVisibleItem; + } + + @Override + public void onScrollStateChanged(AbsListView view, int scrollState) { + // TODO Auto-generated method stub + this.scrollState = scrollState; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + // TODO Auto-generated method stub + switch (ev.getAction()) { + case MotionEvent.ACTION_DOWN: + if (firstVisibleItem == 0) { + isRemark = true; + startY = (int) ev.getY(); + } + break; + + case MotionEvent.ACTION_MOVE: + onMove(ev); + break; + case MotionEvent.ACTION_UP: + if (state == RELESE) { + state = REFLASHING; + reflashViewByState(); + iReflashListener.onReflash(); + } else if (state == PULL) { + state = NONE; + isRemark = false; + reflashViewByState(); + } + break; + } + return super.onTouchEvent(ev); + } + + /** + * + * @param ev + */ + int topPadding; + private void onMove(MotionEvent ev) { + if (!isRemark) { + return; + } + int tempY = (int) ev.getY(); + int space = tempY - startY; + topPadding = space - headerHeight; + Log.e("onMove", "onMove: "+ topPadding); + switch (state) { + case NONE: + if (space > 0) { + state = PULL; + reflashViewByState(); + } + break; + case PULL: + topPadding(topPadding); + if (space > headerHeight + 30 + && scrollState == SCROLL_STATE_TOUCH_SCROLL) { + state = RELESE; + reflashViewByState(); + } + break; + case RELESE: + topPadding(topPadding); + if (space < headerHeight + 30) { + state = PULL; + reflashViewByState(); + } else if (space <= 0) { + state = NONE; + isRemark = false; + reflashViewByState(); + } + break; + } + } + + + private void reflashViewByState() { + TextView tip = (TextView) header.findViewById(R.id.tip); + ImageView arrow = (ImageView) header.findViewById(R.id.arrow); + ProgressBar progress = (ProgressBar) header.findViewById(R.id.progress); + TextView lastupdatetime = (TextView) header + .findViewById(R.id.lastupdate_time); + SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss"); + Date date = new Date(System.currentTimeMillis()); + String time = format.format(date); + lastupdatetime.setText(time); + RotateAnimation anim = new RotateAnimation(0, 180, + RotateAnimation.RELATIVE_TO_SELF, 0.5f, + RotateAnimation.RELATIVE_TO_SELF, 0.5f); + anim.setDuration(500); + anim.setFillAfter(true); + RotateAnimation anim1 = new RotateAnimation(180, 0, + RotateAnimation.RELATIVE_TO_SELF, 0.5f, + RotateAnimation.RELATIVE_TO_SELF, 0.5f); + anim1.setDuration(500); + anim1.setFillAfter(true); + switch (state) { + case NONE: + arrow.clearAnimation(); + topPadding(-headerHeight); +/* TranslateAnimation translateAnimation = new TranslateAnimation(0,0,0,-(topPadding+headerHeight)); + translateAnimation.setDuration(500); + translateAnimation.setFillAfter(true); + header.setAnimation(translateAnimation);*/ + break; + + case PULL: + arrow.setVisibility(View.VISIBLE); + progress.setVisibility(View.GONE); + tip.setText(getResources().getText(R.string.str_refresh_pull)); + arrow.clearAnimation(); + arrow.setAnimation(anim1); + break; + case RELESE: + arrow.setVisibility(View.VISIBLE); + progress.setVisibility(View.GONE); + tip.setText(getResources().getText(R.string.str_refresh_relese)); + arrow.clearAnimation(); + arrow.setAnimation(anim); + break; + case REFLASHING: + topPadding(50); + arrow.setVisibility(View.GONE); + progress.setVisibility(View.VISIBLE); + tip.setText(getResources().getText(R.string.str_refresh_loading)); + arrow.clearAnimation(); + break; + } + } + + /** + * reflashComplete + */ + public void reflashComplete() { + state = NONE; + isRemark = false; + reflashViewByState(); +/* TextView lastupdatetime = (TextView) header + .findViewById(R.id.lastupdate_time); + SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss"); + Date date = new Date(System.currentTimeMillis()); + String time = format.format(date); + lastupdatetime.setText(time);*/ + } + + public void setInterface(IReflashListener iReflashListener){ + this.iReflashListener = iReflashListener; + } + + + + public interface IReflashListener{ + public void onReflash(); + } +} diff --git a/app/src/main/java/org/dync/teameeting/widgets/RoomControls.java b/app/src/main/java/org/dync/teameeting/widgets/RoomControls.java index 4819003..08b1204 100644 --- a/app/src/main/java/org/dync/teameeting/widgets/RoomControls.java +++ b/app/src/main/java/org/dync/teameeting/widgets/RoomControls.java @@ -1,75 +1,66 @@ /** * RoomControls.java [V 1.0.0] * classes:cn.zldemo.touchitem.view.RoomControls - * Zlang Create at 2015-12-20.下午12:41:12 + * Zlang Create at 2015-12-20.下午12:41:12 */ package org.dync.teameeting.widgets; -import org.dync.teameeting.ui.helper.Anims; -import org.dync.teameeting.utils.ScreenUtils; - import android.content.Context; import android.util.AttributeSet; import android.widget.LinearLayout; +import org.dync.teameeting.ui.helper.Anims; +import org.dync.teameeting.utils.ScreenUtils; + /** * cn.zldemo.touchitem.view.RoomControls - * + * * @author ZLang
* create at 2015-12-20 下午12:41:12 */ -public class RoomControls extends LinearLayout -{ +public class RoomControls extends LinearLayout { - public boolean mAvailable; + public boolean mAvailable; - public RoomControls(Context paramContext) - { - super(paramContext); - init(paramContext, null); - } + public RoomControls(Context paramContext) { + super(paramContext); + init(paramContext, null); + } - public RoomControls(Context paramContext, AttributeSet paramAttributeSet) - { - super(paramContext, paramAttributeSet); - init(paramContext, paramAttributeSet); - } + public RoomControls(Context paramContext, AttributeSet paramAttributeSet) { + super(paramContext, paramAttributeSet); + init(paramContext, paramAttributeSet); + } - public RoomControls(Context paramContext, AttributeSet paramAttributeSet, int paramInt) - { - super(paramContext, paramAttributeSet, paramInt); - init(paramContext, paramAttributeSet); - } + public RoomControls(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { + super(paramContext, paramAttributeSet, paramInt); + init(paramContext, paramAttributeSet); + } - private void init(Context paramContext, AttributeSet paramAttributeSet) - { - this.mAvailable = true; - } + private void init(Context paramContext, AttributeSet paramAttributeSet) { + this.mAvailable = true; + } - public void hide() - { - this.mAvailable = false; - Anims.animateBottomMarginTo(this, ScreenUtils.dpToP(getResources(), -90), 300L, - Anims.ACCELERATE); - makeInvisible(); - } + public void hide() { + this.mAvailable = false; + Anims.animateBottomMarginTo(this, ScreenUtils.dpToP(getResources(), -90), 300L, + Anims.ACCELERATE); + makeInvisible(); + } - public void makeInvisible() - { - Anims.fadeOut(this, 300L); - } + public void makeInvisible() { + Anims.fadeOut(this, 300L); + } - public void show() - { - this.mAvailable = true; - Anims.animateBottomMarginTo(this, ScreenUtils.dpToP(getResources(), 20), 300L, - Anims.EASE_OUT); - makeVisible(); - } + public void show() { + this.mAvailable = true; + Anims.animateBottomMarginTo(this, ScreenUtils.dpToP(getResources(), 20), 300L, + Anims.EASE_OUT); + makeVisible(); + } - public void makeVisible() - { - Anims.fadeIn(this, 300L, 0L); - } + public void makeVisible() { + Anims.fadeIn(this, 300L, 0L); + } } diff --git a/app/src/main/java/org/dync/teameeting/widgets/ScrollListView.java b/app/src/main/java/org/dync/teameeting/widgets/ScrollListView.java new file mode 100644 index 0000000..e89ccdf --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/widgets/ScrollListView.java @@ -0,0 +1,28 @@ +package org.dync.teameeting.widgets; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ListView; + +/** + * Created by 小白龙 on 2016/1/6 0006. + */ +public class ScrollListView extends ListView +{ + public ScrollListView(Context context) + { + super(context); + } + + public ScrollListView(Context context, AttributeSet attrs) + { + super(context, attrs); + } + + public ScrollListView(Context context, AttributeSet attrs, int defStyle) + { + super(context, attrs, defStyle); + } + + +} diff --git a/app/src/main/java/org/dync/teameeting/widgets/SlideSwitch.java b/app/src/main/java/org/dync/teameeting/widgets/SlideSwitch.java index 8ac4fb4..99548ab 100644 --- a/app/src/main/java/org/dync/teameeting/widgets/SlideSwitch.java +++ b/app/src/main/java/org/dync/teameeting/widgets/SlideSwitch.java @@ -15,8 +15,6 @@ */ package org.dync.teameeting.widgets; -import org.dync.teameeting.R; - import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; @@ -37,6 +35,8 @@ import android.view.View; import android.view.animation.AccelerateDecelerateInterpolator; +import org.dync.teameeting.R; + public class SlideSwitch extends View { diff --git a/app/src/main/java/org/dync/teameeting/widgets/VitualKey.java b/app/src/main/java/org/dync/teameeting/widgets/VitualKey.java new file mode 100644 index 0000000..9cbaf2c --- /dev/null +++ b/app/src/main/java/org/dync/teameeting/widgets/VitualKey.java @@ -0,0 +1,50 @@ +package org.dync.teameeting.widgets; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.RelativeLayout; + +/** + * Created by zhangqilu on 2016/3/2. + */ +public class VitualKey extends RelativeLayout { + + private LayoutKeyChange mLayoutKeyChange ; + + public VitualKey(Context context) { + + super(context); + + + } + + public VitualKey(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public VitualKey(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + super.onLayout(changed, l, t, r, b); + //Log.e("onLayout", "onLayout: b "+b); + if(changed) + if (mLayoutKeyChange != null) { + mLayoutKeyChange.onLayoutKeyChange(b); + } + } + + + public void setInterface(LayoutKeyChange layoutKeyChange){ + mLayoutKeyChange = layoutKeyChange; + } + + + public interface LayoutKeyChange{ + public void onLayoutKeyChange(int b); + } + +} diff --git a/app/src/main/java/org/dync/teameeting/widgets/swipe/FrontLayout.java b/app/src/main/java/org/dync/teameeting/widgets/swipe/FrontLayout.java index 11c1945..88c72b4 100644 --- a/app/src/main/java/org/dync/teameeting/widgets/swipe/FrontLayout.java +++ b/app/src/main/java/org/dync/teameeting/widgets/swipe/FrontLayout.java @@ -1,12 +1,12 @@ package org.dync.teameeting.widgets.swipe; -import org.dync.teameeting.widgets.swipe.SwipeLayout.Status; - import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.RelativeLayout; +import org.dync.teameeting.widgets.swipe.SwipeLayout.Status; + public class FrontLayout extends RelativeLayout { diff --git a/app/src/main/java/org/dync/teameeting/widgets/swipe/SwipeLayout.java b/app/src/main/java/org/dync/teameeting/widgets/swipe/SwipeLayout.java index 74e5b12..46aaf34 100644 --- a/app/src/main/java/org/dync/teameeting/widgets/swipe/SwipeLayout.java +++ b/app/src/main/java/org/dync/teameeting/widgets/swipe/SwipeLayout.java @@ -8,7 +8,6 @@ import android.support.v4.widget.ViewDragHelper; import android.util.AttributeSet; import android.util.Log; -import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.MotionEvent; import android.view.View; @@ -17,7 +16,7 @@ /** * * - * @author PoplarTang H_lang 修改 2015年12月1日14:08:13 + * @author PoplarTang H_lang * */ public class SwipeLayout extends FrameLayout implements SwipeLayoutInterface @@ -74,7 +73,7 @@ public SwipeLayout(Context context, AttributeSet attrs, int defStyle) } - private SimpleOnGestureListener mOnGestureListener = new GestureDetector.SimpleOnGestureListener() + private SimpleOnGestureListener mOnGestureListener = new SimpleOnGestureListener() { @Override @@ -100,7 +99,7 @@ public int getViewHorizontalDragRange(View child) { return mDragDistance; - }; + } @Override public int clampViewPositionHorizontal(View child, int left, int dx) @@ -152,7 +151,7 @@ else if (newLeft > 0) } return newLeft; - }; + } @Override public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) @@ -186,7 +185,7 @@ public void onViewReleased(View releasedChild, float xvel, float yvel) processBackViewRelease(xvel, yvel); } invalidate(); - }; + } }; private float mDownX; @@ -398,7 +397,7 @@ public void computeScroll() } @Override - public boolean onInterceptTouchEvent(android.view.MotionEvent ev) + public boolean onInterceptTouchEvent(MotionEvent ev) { return mDragHelper.shouldInterceptTouchEvent(ev) & mGestureDetector.onTouchEvent(ev); diff --git a/app/src/main/jniLibs/armeabi-v7a/libanyrtc-jni.so b/app/src/main/jniLibs/armeabi-v7a/libanyrtc-jni.so deleted file mode 100644 index 05ca855..0000000 Binary files a/app/src/main/jniLibs/armeabi-v7a/libanyrtc-jni.so and /dev/null differ diff --git a/app/src/main/jniLibs/armeabi-v7a/libanyrtc.so b/app/src/main/jniLibs/armeabi-v7a/libanyrtc.so deleted file mode 100644 index 5819acf..0000000 Binary files a/app/src/main/jniLibs/armeabi-v7a/libanyrtc.so and /dev/null differ diff --git a/app/src/main/jniLibs/armeabi-v7a/libjpush210.so b/app/src/main/jniLibs/armeabi-v7a/libjpush210.so new file mode 100644 index 0000000..e8ffa23 Binary files /dev/null and b/app/src/main/jniLibs/armeabi-v7a/libjpush210.so differ diff --git a/app/src/main/jniLibs/armeabi-v7a/libmeet-jni.so b/app/src/main/jniLibs/armeabi-v7a/libmeet-jni.so new file mode 100644 index 0000000..919f345 Binary files /dev/null and b/app/src/main/jniLibs/armeabi-v7a/libmeet-jni.so differ diff --git a/app/src/main/jniLibs/armeabi-v7a/libmsgclient-jni.so b/app/src/main/jniLibs/armeabi-v7a/libmsgclient-jni.so index 2098c00..a2102e0 100755 Binary files a/app/src/main/jniLibs/armeabi-v7a/libmsgclient-jni.so and b/app/src/main/jniLibs/armeabi-v7a/libmsgclient-jni.so differ diff --git a/app/src/main/jniLibs/armeabi-v7a/libopenh264.so b/app/src/main/jniLibs/armeabi-v7a/libopenh264.so new file mode 100644 index 0000000..6f74ccd Binary files /dev/null and b/app/src/main/jniLibs/armeabi-v7a/libopenh264.so differ diff --git a/app/src/main/jniLibs/armeabi/libmsgclient-jni.so b/app/src/main/jniLibs/armeabi/libmsgclient-jni.so index 2098c00..d7761e0 100755 Binary files a/app/src/main/jniLibs/armeabi/libmsgclient-jni.so and b/app/src/main/jniLibs/armeabi/libmsgclient-jni.so differ diff --git a/app/src/main/res/anim/scalebottom.xml b/app/src/main/res/anim/scalebottom.xml new file mode 100644 index 0000000..482ec88 --- /dev/null +++ b/app/src/main/res/anim/scalebottom.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/splash.xml b/app/src/main/res/anim/splash.xml index f237f72..34ba3c1 100644 --- a/app/src/main/res/anim/splash.xml +++ b/app/src/main/res/anim/splash.xml @@ -1,30 +1,32 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/close.png b/app/src/main/res/drawable-hdpi/close.png index 6429309..b946c87 100644 Binary files a/app/src/main/res/drawable-hdpi/close.png and b/app/src/main/res/drawable-hdpi/close.png differ diff --git a/app/src/main/res/drawable-hdpi/btn_chat.png b/app/src/main/res/drawable-hdpi/iv_private.png similarity index 67% rename from app/src/main/res/drawable-hdpi/btn_chat.png rename to app/src/main/res/drawable-hdpi/iv_private.png index e734e06..d5f6f79 100644 Binary files a/app/src/main/res/drawable-hdpi/btn_chat.png and b/app/src/main/res/drawable-hdpi/iv_private.png differ diff --git a/app/src/main/res/drawable-hdpi/pull_to_refresh_arrow.png b/app/src/main/res/drawable-hdpi/pull_to_refresh_arrow.png new file mode 100644 index 0000000..a12cbe9 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/pull_to_refresh_arrow.png differ diff --git a/app/src/main/res/drawable-hdpi/splash_image_lg.png b/app/src/main/res/drawable-hdpi/splash_image_lg.png new file mode 100644 index 0000000..9bbc677 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/splash_image_lg.png differ diff --git a/app/src/main/res/drawable-hdpi/start_bg.png b/app/src/main/res/drawable-hdpi/start_bg.png new file mode 100644 index 0000000..2d457cb Binary files /dev/null and b/app/src/main/res/drawable-hdpi/start_bg.png differ diff --git a/app/src/main/res/drawable-hdpi/unread_count_bg.9.png b/app/src/main/res/drawable-hdpi/unread_count_bg.9.png new file mode 100644 index 0000000..5a9e84f Binary files /dev/null and b/app/src/main/res/drawable-hdpi/unread_count_bg.9.png differ diff --git a/app/src/main/res/drawable-land-hdpi/splash_image_lg.png b/app/src/main/res/drawable-land-hdpi/splash_image_lg.png new file mode 100644 index 0000000..7a767c8 Binary files /dev/null and b/app/src/main/res/drawable-land-hdpi/splash_image_lg.png differ diff --git a/app/src/main/res/drawable-land-xhdpi/splash_image_lg.png b/app/src/main/res/drawable-land-xhdpi/splash_image_lg.png new file mode 100644 index 0000000..4328db3 Binary files /dev/null and b/app/src/main/res/drawable-land-xhdpi/splash_image_lg.png differ diff --git a/app/src/main/res/drawable-land-xhdpi/start_bg.png b/app/src/main/res/drawable-land-xhdpi/start_bg.png new file mode 100644 index 0000000..1b56908 Binary files /dev/null and b/app/src/main/res/drawable-land-xhdpi/start_bg.png differ diff --git a/app/src/main/res/drawable-land-xhdpi/view_page_1.png b/app/src/main/res/drawable-land-xhdpi/view_page_1.png new file mode 100644 index 0000000..c6433c4 Binary files /dev/null and b/app/src/main/res/drawable-land-xhdpi/view_page_1.png differ diff --git a/app/src/main/res/drawable-land-xhdpi/view_page_2.png b/app/src/main/res/drawable-land-xhdpi/view_page_2.png new file mode 100644 index 0000000..066988a Binary files /dev/null and b/app/src/main/res/drawable-land-xhdpi/view_page_2.png differ diff --git a/app/src/main/res/drawable-land-xhdpi/view_page_3.png b/app/src/main/res/drawable-land-xhdpi/view_page_3.png new file mode 100644 index 0000000..6b13c3f Binary files /dev/null and b/app/src/main/res/drawable-land-xhdpi/view_page_3.png differ diff --git a/app/src/main/res/drawable-mdpi/btn_remind.png b/app/src/main/res/drawable-mdpi/btn_remind.png new file mode 100644 index 0000000..dba950e Binary files /dev/null and b/app/src/main/res/drawable-mdpi/btn_remind.png differ diff --git a/app/src/main/res/drawable-xhdpi/btn_camera_back.png b/app/src/main/res/drawable-xhdpi/btn_camera_back.png index 636a331..1e0d6b6 100644 Binary files a/app/src/main/res/drawable-xhdpi/btn_camera_back.png and b/app/src/main/res/drawable-xhdpi/btn_camera_back.png differ diff --git a/app/src/main/res/drawable-xhdpi/btn_camera_on.png b/app/src/main/res/drawable-xhdpi/btn_camera_on.png index 76b03f2..254e6f6 100644 Binary files a/app/src/main/res/drawable-xhdpi/btn_camera_on.png and b/app/src/main/res/drawable-xhdpi/btn_camera_on.png differ diff --git a/app/src/main/res/drawable-xhdpi/btn_remind.png b/app/src/main/res/drawable-xhdpi/btn_remind.png new file mode 100644 index 0000000..c8e7954 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/btn_remind.png differ diff --git a/app/src/main/res/drawable-xhdpi/close.png b/app/src/main/res/drawable-xhdpi/close.png index 5db693a..b946c87 100644 Binary files a/app/src/main/res/drawable-xhdpi/close.png and b/app/src/main/res/drawable-xhdpi/close.png differ diff --git a/app/src/main/res/drawable-xhdpi/iv_private.png b/app/src/main/res/drawable-xhdpi/iv_private.png new file mode 100644 index 0000000..d5f6f79 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/iv_private.png differ diff --git a/app/src/main/res/drawable-xhdpi/popup_email.png b/app/src/main/res/drawable-xhdpi/popup_email.png index 61ca40b..55a4eba 100644 Binary files a/app/src/main/res/drawable-xhdpi/popup_email.png and b/app/src/main/res/drawable-xhdpi/popup_email.png differ diff --git a/app/src/main/res/drawable-xhdpi/popup_weixin.png b/app/src/main/res/drawable-xhdpi/popup_weixin.png new file mode 100644 index 0000000..55a4eba Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/popup_weixin.png differ diff --git a/app/src/main/res/drawable-xhdpi/small_mic_muted.png b/app/src/main/res/drawable-xhdpi/small_mic_muted.png new file mode 100644 index 0000000..e8bb6ea Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/small_mic_muted.png differ diff --git a/app/src/main/res/drawable-xhdpi/splash_image_lg.png b/app/src/main/res/drawable-xhdpi/splash_image_lg.png new file mode 100644 index 0000000..9bbc677 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/splash_image_lg.png differ diff --git a/app/src/main/res/drawable-xhdpi/start_bg.png b/app/src/main/res/drawable-xhdpi/start_bg.png index 0cb324d..2d457cb 100644 Binary files a/app/src/main/res/drawable-xhdpi/start_bg.png and b/app/src/main/res/drawable-xhdpi/start_bg.png differ diff --git a/app/src/main/res/drawable-xhdpi/video_close.png b/app/src/main/res/drawable-xhdpi/video_close.png new file mode 100644 index 0000000..f09c6d1 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/video_close.png differ diff --git a/app/src/main/res/drawable-xhdpi/video_close_small.png b/app/src/main/res/drawable-xhdpi/video_close_small.png new file mode 100644 index 0000000..b9620ac Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/video_close_small.png differ diff --git a/app/src/main/res/drawable-xhdpi/view_page_1.png b/app/src/main/res/drawable-xhdpi/view_page_1.png index 4c0cb66..7743aae 100644 Binary files a/app/src/main/res/drawable-xhdpi/view_page_1.png and b/app/src/main/res/drawable-xhdpi/view_page_1.png differ diff --git a/app/src/main/res/drawable-xhdpi/view_page_2.png b/app/src/main/res/drawable-xhdpi/view_page_2.png index f2aabc8..4c0cb66 100644 Binary files a/app/src/main/res/drawable-xhdpi/view_page_2.png and b/app/src/main/res/drawable-xhdpi/view_page_2.png differ diff --git a/app/src/main/res/drawable-xhdpi/view_page_3.png b/app/src/main/res/drawable-xhdpi/view_page_3.png index e65eb33..f2aabc8 100644 Binary files a/app/src/main/res/drawable-xhdpi/view_page_3.png and b/app/src/main/res/drawable-xhdpi/view_page_3.png differ diff --git a/app/src/main/res/drawable-xlarge/btn_remind.png b/app/src/main/res/drawable-xlarge/btn_remind.png new file mode 100644 index 0000000..9169cd0 Binary files /dev/null and b/app/src/main/res/drawable-xlarge/btn_remind.png differ diff --git a/app/src/main/res/drawable-xlarge/view_page_1.png b/app/src/main/res/drawable-xlarge/view_page_1.png new file mode 100644 index 0000000..b73b607 Binary files /dev/null and b/app/src/main/res/drawable-xlarge/view_page_1.png differ diff --git a/app/src/main/res/drawable-xlarge/view_page_2.png b/app/src/main/res/drawable-xlarge/view_page_2.png new file mode 100644 index 0000000..1b45d52 Binary files /dev/null and b/app/src/main/res/drawable-xlarge/view_page_2.png differ diff --git a/app/src/main/res/drawable-xlarge/view_page_3.png b/app/src/main/res/drawable-xlarge/view_page_3.png new file mode 100644 index 0000000..a06c7ca Binary files /dev/null and b/app/src/main/res/drawable-xlarge/view_page_3.png differ diff --git a/app/src/main/res/drawable/blue_button_background.xml b/app/src/main/res/drawable/blue_button_background.xml new file mode 100644 index 0000000..0e597b4 --- /dev/null +++ b/app/src/main/res/drawable/blue_button_background.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_focused_selector.xml b/app/src/main/res/drawable/btn_focused_selector.xml new file mode 100644 index 0000000..14a5d4b --- /dev/null +++ b/app/src/main/res/drawable/btn_focused_selector.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/custom_progressive_dialog_bg.xml b/app/src/main/res/drawable/custom_progressive_dialog_bg.xml index c19c582..188e350 100644 --- a/app/src/main/res/drawable/custom_progressive_dialog_bg.xml +++ b/app/src/main/res/drawable/custom_progressive_dialog_bg.xml @@ -3,4 +3,5 @@ + diff --git a/app/src/main/res/drawable/dialog_background.xml b/app/src/main/res/drawable/dialog_background.xml new file mode 100644 index 0000000..434fca5 --- /dev/null +++ b/app/src/main/res/drawable/dialog_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/dot_normal.xml b/app/src/main/res/drawable/dot_normal.xml index 9cfe585..de25347 100644 --- a/app/src/main/res/drawable/dot_normal.xml +++ b/app/src/main/res/drawable/dot_normal.xml @@ -1,9 +1,19 @@ - + android:shape="oval"> - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/gray_button_background.xml b/app/src/main/res/drawable/gray_button_background.xml new file mode 100644 index 0000000..04e807d --- /dev/null +++ b/app/src/main/res/drawable/gray_button_background.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/richpush_btn_selector.xml b/app/src/main/res/drawable/richpush_btn_selector.xml new file mode 100644 index 0000000..4750de9 --- /dev/null +++ b/app/src/main/res/drawable/richpush_btn_selector.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_camera_back.xml b/app/src/main/res/drawable/select_camera_back.xml new file mode 100644 index 0000000..6ce3187 --- /dev/null +++ b/app/src/main/res/drawable/select_camera_back.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_camera_ibtn.xml b/app/src/main/res/drawable/select_camera_ibtn.xml new file mode 100644 index 0000000..b0c1892 --- /dev/null +++ b/app/src/main/res/drawable/select_camera_ibtn.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_camera_off_ibtn.xml b/app/src/main/res/drawable/select_camera_off_ibtn.xml new file mode 100644 index 0000000..cb7af3b --- /dev/null +++ b/app/src/main/res/drawable/select_camera_off_ibtn.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_camera_on.xml b/app/src/main/res/drawable/select_camera_on.xml new file mode 100644 index 0000000..b0c1892 --- /dev/null +++ b/app/src/main/res/drawable/select_camera_on.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_camera_switch_ibtn.xml b/app/src/main/res/drawable/select_camera_switch_ibtn.xml new file mode 100644 index 0000000..4029a8f --- /dev/null +++ b/app/src/main/res/drawable/select_camera_switch_ibtn.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_chat_ibtn.xml b/app/src/main/res/drawable/select_chat_ibtn.xml new file mode 100644 index 0000000..8001d53 --- /dev/null +++ b/app/src/main/res/drawable/select_chat_ibtn.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_create_btn.xml b/app/src/main/res/drawable/select_create_btn.xml new file mode 100644 index 0000000..3b5a7ec --- /dev/null +++ b/app/src/main/res/drawable/select_create_btn.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_hangup_ibtn.xml b/app/src/main/res/drawable/select_hangup_ibtn.xml new file mode 100644 index 0000000..b65ac18 --- /dev/null +++ b/app/src/main/res/drawable/select_hangup_ibtn.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_main_title_ibtn.xml b/app/src/main/res/drawable/select_main_title_ibtn.xml new file mode 100644 index 0000000..215f9bb --- /dev/null +++ b/app/src/main/res/drawable/select_main_title_ibtn.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_more_seeting_ibtn.xml b/app/src/main/res/drawable/select_more_seeting_ibtn.xml new file mode 100644 index 0000000..db338ae --- /dev/null +++ b/app/src/main/res/drawable/select_more_seeting_ibtn.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_room_seeting_tv.xml b/app/src/main/res/drawable/select_room_seeting_tv.xml new file mode 100644 index 0000000..bd9615e --- /dev/null +++ b/app/src/main/res/drawable/select_room_seeting_tv.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_voice_ibtn.xml b/app/src/main/res/drawable/select_voice_ibtn.xml new file mode 100644 index 0000000..32849c6 --- /dev/null +++ b/app/src/main/res/drawable/select_voice_ibtn.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-xlarge/activity_main.xml b/app/src/main/res/layout-xlarge/activity_main.xml index 83f239c..37f2bfa 100644 --- a/app/src/main/res/layout-xlarge/activity_main.xml +++ b/app/src/main/res/layout-xlarge/activity_main.xml @@ -1,97 +1,96 @@ - - + android:background="@drawable/start_bg"> - - - + android:id="@+id/rl_main" + android:layout_width="@dimen/room_list_width_pad" + android:layout_height="match_parent" + android:orientation="vertical"> - - android:src="@drawable/btn_invite" /> - + - + - + + - - + + + + + android:background="@color/black_alpha_half"> - - - + + + + -