.gradle/4.1/fileHashes/fileHashes.binBinary files differ
.gradle/4.1/fileHashes/fileHashes.lockBinary files differ
.gradle/4.1/fileHashes/resourceHashesCache.binBinary files differ
.gradle/4.1/javaCompile/classAnalysis.binBinary files differ
.gradle/4.1/javaCompile/jarAnalysis.binBinary files differ
.gradle/4.1/javaCompile/javaCompile.lockBinary files differ
.gradle/4.1/javaCompile/taskHistory.binBinary files differ
.gradle/4.1/javaCompile/taskJars.binBinary files differ
.gradle/4.1/taskHistory/fileSnapshots.binBinary files differ
.gradle/4.1/taskHistory/taskHistory.binBinary files differ
.gradle/4.1/taskHistory/taskHistory.lockBinary files differ
.idea/libraries/Gradle____local_aars____Users_chenqi_AndroidStudioProjects_pregnancy_guard_android_app_libs_BaiduLBS_Android_jar_unspecified_jar.xml
New file @@ -0,0 +1,9 @@ <component name="libraryTable"> <library name="Gradle: __local_aars__:/Users/chenqi/AndroidStudioProjects/pregnancy_guard_android/app/libs/BaiduLBS_Android.jar:unspecified@jar"> <CLASSES> <root url="jar://$PROJECT_DIR$/app/libs/BaiduLBS_Android.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </component> .idea/libraries/Gradle__com_afollestad_material_dialogs_commons_0_9_4_4.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: com.afollestad.material-dialogs:commons-0.9.4.4"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/commons-0.9.4.4.aar/fddeae04668658ba55286c5959082dde/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/commons-0.9.4.4.aar/fddeae04668658ba55286c5959082dde/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/commons-0.9.4.4.aar/fddeae04668658ba55286c5959082dde/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.afollestad.material-dialogs/commons/0.9.4.4/6f6f75b476078511f13fb7d08efa33414477838d/commons-0.9.4.4-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_afollestad_material_dialogs_core_0_9_4_4.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.afollestad.material-dialogs:core-0.9.4.4"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/core-0.9.4.4.aar/5808c912607c9c0fb6b286b9b73df3df/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/core-0.9.4.4.aar/5808c912607c9c0fb6b286b9b73df3df/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.afollestad.material-dialogs/core/0.9.4.4/23cbc9c17684233e5704844a176bbd4b75774eaa/core-0.9.4.4-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_alibaba_fastjson_1_1_56_android_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: com.alibaba:fastjson:1.1.56.android@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.alibaba/fastjson/1.1.56.android/4eef0ac3ef5e18db7af5d44ca0228ca5c29dd2f6/fastjson-1.1.56.android.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.alibaba/fastjson/1.1.56.android/4b5bae918e858319857f429e397326f6b98793d4/fastjson-1.1.56.android-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_animated_vector_drawable_25_3_1.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:animated-vector-drawable-25.3.1"> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/animated-vector-drawable-25.3.1.aar/c159abf01a50a246e9de7a0a9a9adf0a/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/animated-vector-drawable-25.3.1.aar/c159abf01a50a246e9de7a0a9a9adf0a/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/animated-vector-drawable/25.3.1/animated-vector-drawable-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_appcompat_v7_25_3_1.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:appcompat-v7-25.3.1"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-25.3.1.aar/03306f7c55bbcea5d1165fc1b466b7ee/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-25.3.1.aar/03306f7c55bbcea5d1165fc1b466b7ee/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-25.3.1.aar/03306f7c55bbcea5d1165fc1b466b7ee/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/appcompat-v7/25.3.1/appcompat-v7-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_0_2.xml
New file @@ -0,0 +1,10 @@ <component name="libraryTable"> <library name="Gradle: com.android.support.constraint:constraint-layout-1.0.2"> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/constraint-layout-1.0.2.aar/df3a5952978da9d0f2bec9fe644dbf8d/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/constraint-layout-1.0.2.aar/df3a5952978da9d0f2bec9fe644dbf8d/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </component> .idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_0_2_jar.xml
New file @@ -0,0 +1,9 @@ <component name="libraryTable"> <library name="Gradle: com.android.support.constraint:constraint-layout-solver:1.0.2@jar"> <CLASSES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.2/constraint-layout-solver-1.0.2.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </component> .idea/libraries/Gradle__com_android_support_multidex_1_0_1.xml
New file @@ -0,0 +1,10 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:multidex-1.0.1"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/multidex-1.0.1.aar/b1501bdfebb153757df2c15eb485907c/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/multidex-1.0.1.aar/b1501bdfebb153757df2c15eb485907c/res" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </component> .idea/libraries/Gradle__com_android_support_recyclerview_v7_25_3_1.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:recyclerview-v7-25.3.1"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-25.3.1.aar/0d2c5960817ddd389787732d61995687/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-25.3.1.aar/0d2c5960817ddd389787732d61995687/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-25.3.1.aar/0d2c5960817ddd389787732d61995687/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/recyclerview-v7/25.3.1/recyclerview-v7-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_support_annotations_25_3_1_jar.xml
New file @@ -0,0 +1,16 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:support-annotations:25.3.1@jar"> <ANNOTATIONS> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.3.1/support-annotations-25.3.1-annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.3.1/support-annotations-25.3.1.jar!/" /> </CLASSES> <JAVADOC> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.3.1/support-annotations-25.3.1-javadoc.jar!/" /> </JAVADOC> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.3.1/support-annotations-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_support_compat_25_3_1.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:support-compat-25.3.1"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-25.3.1.aar/f6fe5b88e919f2f233f16662b09121f4/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-25.3.1.aar/f6fe5b88e919f2f233f16662b09121f4/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-25.3.1.aar/f6fe5b88e919f2f233f16662b09121f4/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-compat/25.3.1/support-compat-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_support_core_ui_25_3_1.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:support-core-ui-25.3.1"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-25.3.1.aar/0fd5530f2437c763ebc33721eb44068c/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-25.3.1.aar/0fd5530f2437c763ebc33721eb44068c/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-25.3.1.aar/0fd5530f2437c763ebc33721eb44068c/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-core-ui/25.3.1/support-core-ui-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_support_core_utils_25_3_1.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:support-core-utils-25.3.1"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-25.3.1.aar/42ec7f868c6d56691752965ca1bcb191/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-25.3.1.aar/42ec7f868c6d56691752965ca1bcb191/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-25.3.1.aar/42ec7f868c6d56691752965ca1bcb191/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-core-utils/25.3.1/support-core-utils-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_support_fragment_25_3_1.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:support-fragment-25.3.1"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-25.3.1.aar/4091358fd996a8cbe9b0f4d51e9fe0e9/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-25.3.1.aar/4091358fd996a8cbe9b0f4d51e9fe0e9/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-25.3.1.aar/4091358fd996a8cbe9b0f4d51e9fe0e9/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-fragment/25.3.1/support-fragment-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_support_media_compat_25_3_1.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:support-media-compat-25.3.1"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-25.3.1.aar/6d249c224fb3674af1b8cba02689742b/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-25.3.1.aar/6d249c224fb3674af1b8cba02689742b/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-25.3.1.aar/6d249c224fb3674af1b8cba02689742b/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-media-compat/25.3.1/support-media-compat-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_support_v13_25_3_1.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:support-v13-25.3.1"> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v13-25.3.1.aar/ddcbb506878adf055b411c6b579eeb42/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v13-25.3.1.aar/ddcbb506878adf055b411c6b579eeb42/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-v13/25.3.1/support-v13-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_support_v4_25_3_1.xml
New file @@ -0,0 +1,10 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:support-v4-25.3.1"> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-25.3.1.aar/c18892df0bf0298343eff658187baca5/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-25.3.1.aar/c18892df0bf0298343eff658187baca5/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </component> .idea/libraries/Gradle__com_android_support_support_vector_drawable_25_3_1.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.android.support:support-vector-drawable-25.3.1"> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-vector-drawable-25.3.1.aar/5873f37203123af57396d823c55cbcf4/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-vector-drawable-25.3.1.aar/5873f37203123af57396d823c55cbcf4/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-vector-drawable/25.3.1/support-vector-drawable-25.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2.xml
New file @@ -0,0 +1,14 @@ <component name="libraryTable"> <library name="Gradle: com.android.support.test.espresso:espresso-core-2.2.2"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-core-2.2.2.aar/8582a660a4109e21b7e303682ea46a85/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-core-2.2.2.aar/8582a660a4109e21b7e303682ea46a85/res" /> </CLASSES> <JAVADOC> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-core/2.2.2/espresso-core-2.2.2-javadoc.jar!/" /> </JAVADOC> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-core/2.2.2/espresso-core-2.2.2-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2.xml
New file @@ -0,0 +1,14 @@ <component name="libraryTable"> <library name="Gradle: com.android.support.test.espresso:espresso-idling-resource-2.2.2"> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-idling-resource-2.2.2.aar/be02ce9692e456eb6c9d786503ac3f3c/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-idling-resource-2.2.2.aar/be02ce9692e456eb6c9d786503ac3f3c/jars/classes.jar!/" /> </CLASSES> <JAVADOC> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-idling-resource/2.2.2/espresso-idling-resource-2.2.2-javadoc.jar!/" /> </JAVADOC> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/test/espresso/espresso-idling-resource/2.2.2/espresso-idling-resource-2.2.2-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5.xml
New file @@ -0,0 +1,14 @@ <component name="libraryTable"> <library name="Gradle: com.android.support.test:exposed-instrumentation-api-publish-0.5"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/exposed-instrumentation-api-publish-0.5.aar/e5dcbe52691fe80af7f3f6e6774f08df/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/exposed-instrumentation-api-publish-0.5.aar/e5dcbe52691fe80af7f3f6e6774f08df/res" /> </CLASSES> <JAVADOC> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/test/exposed-instrumentation-api-publish/0.5/exposed-instrumentation-api-publish-0.5-javadoc.jar!/" /> </JAVADOC> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/test/exposed-instrumentation-api-publish/0.5/exposed-instrumentation-api-publish-0.5-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_test_rules_0_5.xml
New file @@ -0,0 +1,17 @@ <component name="libraryTable"> <library name="Gradle: com.android.support.test:rules-0.5"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rules-0.5.aar/33c535b9bfeb0d0733d348f547617885/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rules-0.5.aar/33c535b9bfeb0d0733d348f547617885/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rules-0.5.aar/33c535b9bfeb0d0733d348f547617885/jars/classes.jar!/" /> </CLASSES> <JAVADOC> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/test/rules/0.5/rules-0.5-javadoc.jar!/" /> </JAVADOC> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/test/rules/0.5/rules-0.5-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_android_support_test_runner_0_5.xml
New file @@ -0,0 +1,17 @@ <component name="libraryTable"> <library name="Gradle: com.android.support.test:runner-0.5"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-0.5.aar/51e2f325be732064d5a40958ceac211f/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-0.5.aar/51e2f325be732064d5a40958ceac211f/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-0.5.aar/51e2f325be732064d5a40958ceac211f/res" /> </CLASSES> <JAVADOC> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/test/runner/0.5/runner-0.5-javadoc.jar!/" /> </JAVADOC> <SOURCES> <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/test/runner/0.5/runner-0.5-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_contrarywind_Android_PickerView_3_1_2.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.contrarywind:Android-PickerView-3.1.2"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/Android-PickerView-3.1.2.aar/1abad93f184fb2e61fd67e128b2da37f/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/Android-PickerView-3.1.2.aar/1abad93f184fb2e61fd67e128b2da37f/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.contrarywind/Android-PickerView/3.1.2/3010441a4ebae09df147611c6d7c71e90218e6c4/Android-PickerView-3.1.2-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_daimajia_numberprogressbar_library_1_4.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.daimajia.numberprogressbar:library-1.4"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/library-1.4.aar/e8a706eaa0bbee30b9abdbc71c78abaf/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/library-1.4.aar/e8a706eaa0bbee30b9abdbc71c78abaf/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.daimajia.numberprogressbar/library/1.4/fcc2dd900e02a61ee357ada5e620bd9f9344a064/library-1.4-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_github_bumptech_glide_glide_3_7_0_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: com.github.bumptech.glide:glide:3.7.0@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/glide/3.7.0/9e9eeaf9948ee4d6c3ab354e8dc14368f16994a4/glide-3.7.0.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/glide/3.7.0/24a0b0e63af9530bcedd06ed1983a4f2f02155a3/glide-3.7.0-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_github_lecho_hellocharts_library_1_5_8.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.github.lecho:hellocharts-library-1.5.8"> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/hellocharts-library-1.5.8.aar/3efe85d3c8193133205e59a9b0ab7704/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/hellocharts-library-1.5.8.aar/3efe85d3c8193133205e59a9b0ab7704/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.lecho/hellocharts-library/1.5.8/51798d4793c333553a68292ee3a47b4758c2ec47/hellocharts-library-1.5.8-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml
New file @@ -0,0 +1,9 @@ <component name="libraryTable"> <library name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/2.0.1/516c03b21d50a644d538de0f0369c620989cd8f0/jsr305-2.0.1.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </component> .idea/libraries/Gradle__com_google_code_gson_gson_2_8_0_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: com.google.code.gson:gson:2.8.0@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.0/c4ba5371a29ac9b2ad6129b1d39ea38750043eff/gson-2.8.0.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.0/baf95d8519fc1a11d388f8543cb40cd2bb9d66dc/gson-2.8.0-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_lzy_net_okgo_2_1_4.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.lzy.net:okgo-2.1.4"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/okgo-2.1.4.aar/96f97a5f3317096675d235a351d4b0ee/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/okgo-2.1.4.aar/96f97a5f3317096675d235a351d4b0ee/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.lzy.net/okgo/2.1.4/c592fc30b9a9be1b3315af76dd69cfce5b09fae8/okgo-2.1.4-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_lzy_net_okserver_1_1_3.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.lzy.net:okserver-1.1.3"> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/okserver-1.1.3.aar/4756b58038e66fa48f6f5a183970ad3c/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/okserver-1.1.3.aar/4756b58038e66fa48f6f5a183970ad3c/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.lzy.net/okserver/1.1.3/bad9ac00bed49d0837c2072b3b3de62b0efcbbc4/okserver-1.1.3-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_pnikosis_materialish_progress_1_0.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.pnikosis:materialish-progress-1.0"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/materialish-progress-1.0.aar/b24cd27d4154b26e3d30f146b762e3a8/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/materialish-progress-1.0.aar/b24cd27d4154b26e3d30f146b762e3a8/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.pnikosis/materialish-progress/1.0/27fea1adaf2e3fca647208c0f5c65dff96eed495/materialish-progress-1.0-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: com.squareup:javawriter:2.1.1@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.1.1/67ff45d9ae02e583d0f9b3432a5ebbe05c30c966/javawriter-2.1.1.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.1.1/5b31387d839a5cdaf5b6de3990da01f7f2b963c5/javawriter-2.1.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_4_1_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: com.squareup.okhttp3:okhttp:3.4.1@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.4.1/c7c4f9e35c2fd5900da24f9872e3971801f08ce0/okhttp-3.4.1.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.4.1/70fca5cd856d0cc740e43affeb6f661204fdb2cc/okhttp-3.4.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_squareup_okio_okio_1_9_0_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: com.squareup.okio:okio:1.9.0@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.9.0/f824591a0016efbaeddb8300bee54832a1398cfa/okio-1.9.0.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.9.0/3aaaf83694e8c88e8c33c71b609f0ad506007a4a/okio-1.9.0-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_tencent_bugly_crashreport_upgrade_1_3_6.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.tencent.bugly:crashreport_upgrade-1.3.6"> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/crashreport_upgrade-1.3.6.aar/41c79bfd3fe1ad8eeaf4312a672eb42c/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/crashreport_upgrade-1.3.6.aar/41c79bfd3fe1ad8eeaf4312a672eb42c/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.bugly/crashreport_upgrade/1.3.6/58cea176a0409b4e6f1085ed618b35b023955e7/crashreport_upgrade-1.3.6-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_tencent_bugly_nativecrashreport_3_3_1.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: com.tencent.bugly:nativecrashreport-3.3.1"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/nativecrashreport-3.3.1.aar/dbf30888a466adc38f72b3667bf822c2/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/nativecrashreport-3.3.1.aar/dbf30888a466adc38f72b3667bf822c2/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.bugly/nativecrashreport/3.3.1/485c1911d7eb2f37492639c39c32e4a0e5a5c11f/nativecrashreport-3.3.1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_tencent_tinker_aosp_dexutils_1_9_9_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: com.tencent.tinker:aosp-dexutils:1.9.9@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.tinker/aosp-dexutils/1.9.9/a63b69047bc0041cfb9b8f120eb81b7630eb224b/aosp-dexutils-1.9.9.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.tinker/aosp-dexutils/1.9.9/4859f992d8669838de1983236a0e066f3d24cdf8/aosp-dexutils-1.9.9-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_tencent_tinker_bsdiff_util_1_9_9_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: com.tencent.tinker:bsdiff-util:1.9.9@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.tinker/bsdiff-util/1.9.9/9ae926031682ef387ec5afdef12229b4f03270f5/bsdiff-util-1.9.9.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.tinker/bsdiff-util/1.9.9/3192409d81a578fa916a591acd261e3f51bf42ed/bsdiff-util-1.9.9-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_tencent_tinker_tinker_android_lib_1_9_9.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: com.tencent.tinker:tinker-android-lib-1.9.9"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/tinker-android-lib-1.9.9.aar/a0020a86c4c2280c3480403bedb56e08/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/tinker-android-lib-1.9.9.aar/a0020a86c4c2280c3480403bedb56e08/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/tinker-android-lib-1.9.9.aar/a0020a86c4c2280c3480403bedb56e08/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.tinker/tinker-android-lib/1.9.9/5322d7cc44efb589e6b0c25edde821884e8b8583/tinker-android-lib-1.9.9-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_tencent_tinker_tinker_android_loader_1_9_9.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: com.tencent.tinker:tinker-android-loader-1.9.9"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/tinker-android-loader-1.9.9.aar/5132ed48694f724e8dac239d9f48c3a9/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/tinker-android-loader-1.9.9.aar/5132ed48694f724e8dac239d9f48c3a9/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/tinker-android-loader-1.9.9.aar/5132ed48694f724e8dac239d9f48c3a9/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.tinker/tinker-android-loader/1.9.9/f3fa9ccb5f7e75d94a8b6d307c450337edcadc38/tinker-android-loader-1.9.9-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_tencent_tinker_tinker_commons_1_9_9_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: com.tencent.tinker:tinker-commons:1.9.9@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.tinker/tinker-commons/1.9.9/4af248b2b39ac366d6ca8b1f10a0630e092d92cf/tinker-commons-1.9.9.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.tinker/tinker-commons/1.9.9/af31ccf85a6c6379b73c3fe3e44cf4af8d8348cc/tinker-commons-1.9.9-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__com_tencent_tinker_tinker_ziputils_1_9_9_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: com.tencent.tinker:tinker-ziputils:1.9.9@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.tinker/tinker-ziputils/1.9.9/57894244db33610ceb85ed1f8751a8a6c814e385/tinker-ziputils-1.9.9.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.tinker/tinker-ziputils/1.9.9/734638e3c29eddb470a1659d6c121b6faff048f5/tinker-ziputils-1.9.9-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__in_srain_cube_ultra_ptr_1_0_11.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: in.srain.cube:ultra-ptr-1.0.11"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/ultra-ptr-1.0.11.aar/a1615e8c075418694cf92e560439e752/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/ultra-ptr-1.0.11.aar/a1615e8c075418694cf92e560439e752/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/in.srain.cube/ultra-ptr/1.0.11/48c7d061c113c372fb728c7e6702100faffd7d35/ultra-ptr-1.0.11-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__javax_annotation_javax_annotation_api_1_2_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: javax.annotation:javax.annotation-api:1.2@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.2/479c1e06db31c432330183f5cae684163f186146/javax.annotation-api-1.2.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.2/ad18a02db08eaee697f812e333f692fc51129e4a/javax.annotation-api-1.2-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: javax.inject:javax.inject:1@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/6975da39a7040257bd51d21a231b76c915872d38/javax.inject-1.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/a00123f261762a7c5e0ec916a2c7c8298d29c400/javax.inject-1-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__junit_junit_4_12_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: junit:junit:4.12@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__me_zhanghai_android_materialprogressbar_library_1_4_0.xml
New file @@ -0,0 +1,15 @@ <component name="libraryTable"> <library name="Gradle: me.zhanghai.android.materialprogressbar:library-1.4.0"> <ANNOTATIONS> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/library-1.4.0.aar/874fd925032d2e919aec185d8ce5a313/annotations.zip!/" /> </ANNOTATIONS> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/library-1.4.0.aar/874fd925032d2e919aec185d8ce5a313/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/library-1.4.0.aar/874fd925032d2e919aec185d8ce5a313/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/me.zhanghai.android.materialprogressbar/library/1.4.0/d518e296d1e67576916497bcecc2c7ca16db6467/library-1.4.0-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__org_greenrobot_eventbus_3_0_0_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: org.greenrobot:eventbus:3.0.0@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.greenrobot/eventbus/3.0.0/ddd99896e9569eaababbe81b35d80e1b91c4ad85/eventbus-3.0.0.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.greenrobot/eventbus/3.0.0/777f0a941d3dd0f9988d4f22b42b36ce2fe64ea4/eventbus-3.0.0-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: org.hamcrest:hamcrest-core:1.3@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-integration/1.3/5de0c73fef18917cd85d0ab70bb23818685e4dfd/hamcrest-integration-1.3.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-integration/1.3/ae7787a563e6a1b1f17fd4ac43be3a3c8830cfda/hamcrest-integration-1.3-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml
New file @@ -0,0 +1,11 @@ <component name="libraryTable"> <library name="Gradle: org.hamcrest:hamcrest-library:1.3@jar"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/4785a3c21320980282f9f33d0d1264a69040538f/hamcrest-library-1.3.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/47a7ee46628ab7133129cd7cef1e92657bc275e/hamcrest-library-1.3-sources.jar!/" /> </SOURCES> </library> </component> .idea/libraries/Gradle__pub_devrel_easypermissions_0_4_0.xml
New file @@ -0,0 +1,12 @@ <component name="libraryTable"> <library name="Gradle: pub.devrel:easypermissions-0.4.0"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/easypermissions-0.4.0.aar/180f91394749c55f5209568adcee238b/jars/classes.jar!/" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/easypermissions-0.4.0.aar/180f91394749c55f5209568adcee238b/res" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/pub.devrel/easypermissions/0.4.0/bbc7c5db3a209a1b6419eb3c74db44329a44b25b/easypermissions-0.4.0-sources.jar!/" /> </SOURCES> </library> </component> .idea/misc.xml
@@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="MarkdownProjectSettings"> <PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true" openRemoteLinks="true"> <component name="MarkdownProjectSettings" wasCopied="true"> <PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true" openRemoteLinks="true" replaceUnicodeEmoji="false" lastLayoutSetsDefault="false"> <PanelProvider> <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" /> </PanelProvider> </PreviewSettings> <ParserSettings gitHubSyntaxChange="false"> <ParserSettings gitHubSyntaxChange="false" emojiShortcuts="0" emojiImages="0"> <PegdownExtensions> <option name="ABBREVIATIONS" value="false" /> <option name="ANCHORLINKS" value="true" /> @@ -34,21 +34,30 @@ <option name="WIKILINKS" value="true" /> </PegdownExtensions> <ParserOptions> <option name="ADMONITION_EXT" value="false" /> <option name="ATTRIBUTES_EXT" value="false" /> <option name="COMMONMARK_LISTS" value="true" /> <option name="DUMMY" value="false" /> <option name="EMOJI_SHORTCUTS" value="true" /> <option name="ENUMERATED_REFERENCES_EXT" value="false" /> <option name="FLEXMARK_FRONT_MATTER" value="false" /> <option name="GFM_LOOSE_BLANK_LINE_AFTER_ITEM_PARA" value="false" /> <option name="GFM_TABLE_RENDERING" value="true" /> <option name="GITBOOK_URL_ENCODING" value="false" /> <option name="GITHUB_EMOJI_URL" value="false" /> <option name="GITHUB_LISTS" value="false" /> <option name="GITHUB_WIKI_LINKS" value="true" /> <option name="GITLAB_EXT" value="false" /> <option name="GITLAB_MATH_EXT" value="false" /> <option name="GITLAB_MERMAID_EXT" value="false" /> <option name="HEADER_ID_NO_DUPED_DASHES" value="false" /> <option name="JEKYLL_FRONT_MATTER" value="false" /> <option name="MACROS_EXT" value="false" /> <option name="NO_TEXT_ATTRIBUTES" value="false" /> <option name="PARSE_HTML_ANCHOR_ID" value="false" /> <option name="SIM_TOC_BLANK_LINE_SPACER" value="true" /> </ParserOptions> </ParserSettings> <HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true" embedImages="false" embedHttpImages="false"> <HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true" embedImages="false" embedHttpImages="false" imageUriSerials="false" addDocTypeHtml="true"> <GeneratorProvider> <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.generator" providerName="Default Swing HTML Generator" /> </GeneratorProvider> @@ -57,14 +66,15 @@ <bodyTop /> <bodyBottom /> </HtmlSettings> <CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssTextEnabled="false" isDynamicPageWidth="true"> <CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssUriSerial="true" isCssTextEnabled="false" isDynamicPageWidth="true"> <StylesheetProvider> <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.css" providerName="Default Swing Stylesheet" /> </StylesheetProvider> <ScriptProviders /> <cssText /> <cssUriHistory /> </CssSettings> <HtmlExportSettings updateOnSave="false" parentDir="$ProjectFileDir$" targetDir="$ProjectFileDir$" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" linkFormatType="HTTP_ABSOLUTE" /> <HtmlExportSettings updateOnSave="false" parentDir="" targetDir="" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" linkFormatType="HTTP_ABSOLUTE" /> <LinkMapSettings> <textMaps /> </LinkMapSettings> @@ -74,22 +84,26 @@ <option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> <option name="myNullables"> <value> <list size="5"> <list size="7"> <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" /> <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" /> <item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" /> <item index="3" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" /> <item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" /> <item index="5" class="java.lang.String" itemvalue="androidx.annotation.Nullable" /> <item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" /> </list> </value> </option> <option name="myNotNulls"> <value> <list size="4"> <list size="6"> <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" /> <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" /> <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" /> <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" /> <item index="4" class="java.lang.String" itemvalue="androidx.annotation.NonNull" /> <item index="5" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" /> </list> </value> </option> FastBleLib/FastBleLib.iml
@@ -8,11 +8,11 @@ </facet> <facet type="android" name="Android"> <configuration> <option name="SELECTED_BUILD_VARIANT" value="release" /> <option name="ASSEMBLE_TASK_NAME" value="assembleRelease" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileReleaseSources" /> <option name="SELECTED_BUILD_VARIANT" value="debug" /> <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> <afterSyncTasks> <task>generateReleaseSources</task> <task>generateDebugSources</task> </afterSyncTasks> <option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> @@ -24,32 +24,46 @@ </facet> </component> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> <output url="file://$MODULE_DIR$/build/intermediates/classes/release" /> <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/release" /> <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> <exclude-output /> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/release" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/release" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/release" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/release/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/release/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/release/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/release/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/release/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/release/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/release/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> @@ -73,7 +87,6 @@ <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/attr" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> FastBleLib/src/main/java/com/clj/fastble/BleManager.java
@@ -22,6 +22,7 @@ public BleManager(Context context) { this.mContext = context; if (isSupportBle()) { if (bleBluetooth == null) { bleBluetooth = new BleBluetooth(context); @@ -29,10 +30,6 @@ } bleExceptionHandler = new DefaultBleExceptionHandler(); } public void setMtu(int mtu) { bleBluetooth.setMtu(mtu); } /** FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java
@@ -10,7 +10,6 @@ import android.os.Handler; import android.os.Looper; import android.text.TextUtils; import android.util.Log; import com.clj.fastble.conn.BleConnector; import com.clj.fastble.conn.BleGattCallback; @@ -45,7 +44,6 @@ private Context context; private BluetoothAdapter bluetoothAdapter; private BluetoothGatt bluetoothGatt; private int mtu = 20; private Handler handler = new Handler(Looper.getMainLooper()); private HashMap<String, BluetoothGattCallback> callbackHashMap = new HashMap<>(); private PeriodScanCallback periodScanCallback; @@ -58,14 +56,11 @@ bluetoothAdapter = bluetoothManager.getAdapter(); } public void setMtu(int mtu) { this.mtu = mtu; } public BleConnector newBleConnector() { return new BleConnector(this); } public boolean isInScanning() { return connectionState == STATE_SCANNING; @@ -144,8 +139,7 @@ + "\nmac: " + scanResult.getDevice().getAddress() + "\nautoConnect: " + autoConnect); addConnectGattCallback(callback); bluetoothGatt = scanResult.getDevice().connectGatt(context, autoConnect, coreGattCallback); return bluetoothGatt; return scanResult.getDevice().connectGatt(context, autoConnect, coreGattCallback); } public void scanNameAndConnect(String name, long time_out, final boolean autoConnect, final BleGattCallback callback) { @@ -344,21 +338,6 @@ return connectionState; } public static String dumpHex(byte[] src) { String num = "0123456789ABCDEF"; StringBuilder sb = new StringBuilder(); sb.append("[ "); for (byte aSrc : src) { int high = aSrc >> 4 & 0x0f; int low = aSrc & 0x0f; sb.append(num.charAt(high)).append(num.charAt(low)).append(" "); } sb.append(" ]"); return sb.toString(); } private BleGattCallback coreGattCallback = new BleGattCallback() { @Override @@ -368,9 +347,8 @@ @Override public void onConnecting(BluetoothGatt gatt, int status) { BleLog.i("BleGattCallback:onConnecting "); BleLog.i("BleGattCallback:onConnectSuccess "); bluetoothGatt = gatt; Iterator iterator = callbackHashMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); @@ -384,6 +362,7 @@ @Override public void onConnectSuccess(BluetoothGatt gatt, int status) { BleLog.i("BleGattCallback:onConnectSuccess "); bluetoothGatt = gatt; Iterator iterator = callbackHashMap.entrySet().iterator(); while (iterator.hasNext()) { @@ -399,6 +378,7 @@ @Override public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) { BleLog.i("BleGattCallback:onConnectFailure "); closeBluetoothGatt(); bluetoothGatt = null; Iterator iterator = callbackHashMap.entrySet().iterator(); @@ -422,7 +402,6 @@ + '\n' + "status: " + status + '\n' + "newState: " + newState + '\n' + "currentThread: " + Thread.currentThread().getId()); if (newState == BluetoothGatt.STATE_CONNECTED) { connectionState = STATE_CONNECTED; onConnectSuccess(gatt, status); @@ -448,17 +427,18 @@ @Override public void onServicesDiscovered(BluetoothGatt gatt, int status) { BleLog.i("BleGattCallback:onServicesDiscovered " + mtu); BleLog.i("BleGattCallback:onServicesDiscovered "); connectionState = STATE_SERVICES_DISCOVERED; Iterator iterator = callbackHashMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); Object call = entry.getValue(); if (call instanceof BluetoothGattCallback) { gatt.requestMtu(64); ((BluetoothGattCallback) call).onServicesDiscovered(gatt, status); } } bluetoothGatt.requestMtu(mtu); } @Override @@ -490,7 +470,7 @@ @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { BleLog.i("BleGattCallback:onCharacteristicChanged " + characteristic.getValue().length); BleLog.i("BleGattCallback:onCharacteristicChanged "); Iterator iterator = callbackHashMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); @@ -554,17 +534,6 @@ if (call instanceof BluetoothGattCallback) { ((BluetoothGattCallback) call).onReadRemoteRssi(gatt, rssi, status); } } } @Override public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) { super.onMtuChanged(gatt, mtu, status); Log.d("BLE", "onMtuChanged mtu=" + mtu + ",status=" + status); System.out.println("onMtuChanged-------------------->size:" + mtu); if (status == 0) { System.out.println("onMtuChanged-------------------->设置成功"); } } }; FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java
@@ -102,7 +102,6 @@ descriptor = characteristic.getDescriptor(descriptorUUID); } return this; } @@ -129,8 +128,6 @@ if (getCharacteristic() != null && (getCharacteristic().getProperties() | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) { BleLog.w(TAG, "characteristic.getProperties():" + getCharacteristic().getProperties()); System.out.println("chenqi enableCharacteristicNotify =>" + uuid_notify); handleCharacteristicNotificationCallback(bleCallback, uuid_notify); @@ -346,23 +343,34 @@ listenAndTimer(bleCallback, MSG_NOTIFY_CHA, uuid_notify, new BluetoothGattCallback() { AtomicBoolean msgRemoved = new AtomicBoolean(false); @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { if (!msgRemoved.getAndSet(true)) { handler.removeMessages(MSG_NOTIFY_CHA, this); } System.out.println("chenqi Notify Hex ->" + BleBluetooth.dumpHex(characteristic.getValue())); if (characteristic.getUuid().equals(UUID.fromString(uuid_notify))) { System.out.println("chenqi Hex ->" + dumpHex(characteristic.getValue())); bleCallback.onSuccess(characteristic); } } }); } } public String dumpHex(byte[] src) { String num = "0123456789ABCDEF"; StringBuilder sb = new StringBuilder(); // sb.append("[ "); for (byte aSrc : src) { int high = aSrc >> 4 & 0x0f; int low = aSrc & 0x0f; sb.append(num.charAt(high)).append(num.charAt(low)).append(" "); } // sb.append(" ]"); return sb.toString(); } /** @@ -378,7 +386,7 @@ @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { System.out.println("chenqi Notify Hex indicate->" + BleBluetooth.dumpHex(characteristic.getValue())); if (!msgRemoved.getAndSet(true)) { handler.removeMessages(MSG_INDICATE_DES, this); } @@ -402,8 +410,6 @@ public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { handler.removeMessages(MSG_WRITE_CHA, this); System.out.println("chenqi Notify Hex write->" + BleBluetooth.dumpHex(characteristic.getValue())); if (status == BluetoothGatt.GATT_SUCCESS) { if (characteristic.getUuid().equals(UUID.fromString(uuid_write))) { @@ -429,8 +435,6 @@ @Override public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { System.out.println("chenqi Notify Hex indicate read->" + BleBluetooth.dumpHex(characteristic.getValue())); if (!msgRemoved.getAndSet(true)) { handler.removeMessages(MSG_READ_CHA, this); } @@ -456,8 +460,6 @@ @Override public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) { handler.removeMessages(MSG_READ_RSSI, this); System.out.println("chenqi Notify Hex rssi->" + BleBluetooth.dumpHex(characteristic.getValue())); if (status == BluetoothGatt.GATT_SUCCESS) { bleCallback.onSuccess(rssi); } else { @@ -485,6 +487,7 @@ private void listenAndTimer(BleCallback bleCallback, int what, String uuid, BluetoothGattCallback callback) { bleCallback.setBluetoothGattCallback(callback); bleBluetooth.addGattCallback(uuid, callback); Message msg = handler.obtainMessage(what, bleCallback); handler.sendMessageDelayed(msg, timeOutMillis); } andbrickslib/andbrickslib.iml
@@ -8,11 +8,11 @@ </facet> <facet type="android" name="Android"> <configuration> <option name="SELECTED_BUILD_VARIANT" value="release" /> <option name="ASSEMBLE_TASK_NAME" value="assembleRelease" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileReleaseSources" /> <option name="SELECTED_BUILD_VARIANT" value="debug" /> <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> <afterSyncTasks> <task>generateReleaseSources</task> <task>generateDebugSources</task> </afterSyncTasks> <option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> @@ -24,32 +24,46 @@ </facet> </component> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> <output url="file://$MODULE_DIR$/build/intermediates/classes/release" /> <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/release" /> <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> <exclude-output /> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/release" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/release" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/release" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/release/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/release/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/release/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/release/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/release/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/release/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/release/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> @@ -73,7 +87,6 @@ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/attr" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> @@ -94,27 +107,38 @@ <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="Gradle: com.android.support:appcompat-v7-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-fragment-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-v13-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-annotations:25.3.1@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource-2.2.2" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-media-compat-25.3.1" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" /> <orderEntry type="library" name="Gradle: com.pnikosis:materialish-progress-1.0" level="project" /> <orderEntry type="library" name="Gradle: com.lzy.net:okserver-1.1.3" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core-2.2.2" level="project" /> <orderEntry type="library" name="Gradle: me.zhanghai.android.materialprogressbar:library-1.4.0" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-compat-25.3.1" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules-0.5" level="project" /> <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.0@jar" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:commons-0.9.4.4" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-v13-25.3.1" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:core-0.9.4.4" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-v4-25.3.1" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-core-ui-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-media-compat-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.pnikosis:materialish-progress-1.0" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-0.5" level="project" /> <orderEntry type="library" name="Gradle: com.alibaba:fastjson:1.1.56.android@jar" level="project" /> <orderEntry type="library" name="Gradle: com.lzy.net:okserver-1.1.3" level="project" /> <orderEntry type="library" name="Gradle: me.zhanghai.android.materialprogressbar:library-1.4.0" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-compat-25.3.1" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish-0.5" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:recyclerview-v7-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.lzy.net:okgo-2.1.4" level="project" /> <orderEntry type="library" name="Gradle: com.squareup.okhttp3:okhttp:3.4.1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.0@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-core-utils-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.9.0@jar" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:commons-0.9.4.4" level="project" /> </component> </module> app/app.iml
@@ -8,11 +8,11 @@ </facet> <facet type="android" name="Android"> <configuration> <option name="SELECTED_BUILD_VARIANT" value="release" /> <option name="ASSEMBLE_TASK_NAME" value="assembleRelease" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileReleaseSources" /> <option name="SELECTED_BUILD_VARIANT" value="debug" /> <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> <afterSyncTasks> <task>generateReleaseSources</task> <task>generateDebugSources</task> </afterSyncTasks> <option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> @@ -23,32 +23,46 @@ </facet> </component> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> <output url="file://$MODULE_DIR$/build/intermediates/classes/release" /> <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/release" /> <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> <exclude-output /> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/release" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/release" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/release" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/release" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/release/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/release/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/release/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/release/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/release/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/release/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/release/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testRelease/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> @@ -70,22 +84,24 @@ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/build/.DS_Store" /> <excludeFolder url="file://$MODULE_DIR$/build/bakApk" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bugly_intermediates" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/splits-support" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/tinker_intermediates" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> <excludeFolder url="file://$MODULE_DIR$/build/reports" /> @@ -94,38 +110,58 @@ <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" /> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-solver:1.0.2@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:appcompat-v7-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-fragment-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-annotations:25.3.1@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource-2.2.2" level="project" /> <orderEntry type="library" name="Gradle: pub.devrel:easypermissions-0.4.0" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-media-compat-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.pnikosis:materialish-progress-1.0" level="project" /> <orderEntry type="library" name="Gradle: me.zhanghai.android.materialprogressbar:library-1.4.0" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-compat-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:commons-0.9.4.4" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-v13-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.tencent.tinker:bsdiff-util:1.9.9@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core-2.2.2" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:multidex-1.0.1" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules-0.5" level="project" /> <orderEntry type="library" name="Gradle: com.tencent.bugly:nativecrashreport-3.3.1" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.contrarywind:Android-PickerView-3.1.2" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:core-0.9.4.4" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-v4-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-1.0.2" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:core-0.9.4.4" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-core-ui-25.3.1" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-0.5" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:cardview-v7-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: in.srain.cube:ultra-ptr-1.0.11" level="project" /> <orderEntry type="library" name="Gradle: org.greenrobot:eventbus:3.0.0@jar" level="project" /> <orderEntry type="library" name="Gradle: com.alibaba:fastjson:1.1.56.android@jar" level="project" /> <orderEntry type="library" name="Gradle: com.github.lecho:hellocharts-library-1.5.8" level="project" /> <orderEntry type="library" name="Gradle: __local_aars__:/Users/chenqi/AndroidStudioProjects/pregnancy_guard_android/app/libs/BaiduLBS_Android.jar:unspecified@jar" level="project" /> <orderEntry type="library" name="Gradle: com.daimajia.numberprogressbar:library-1.4" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish-0.5" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:recyclerview-v7-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.lzy.net:okgo-2.1.4" level="project" /> <orderEntry type="library" name="Gradle: com.squareup.okhttp3:okhttp:3.4.1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.tencent.tinker:aosp-dexutils:1.9.9@jar" level="project" /> <orderEntry type="library" name="Gradle: com.github.bumptech.glide:glide:3.7.0@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.9.0@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-core-utils-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:appcompat-v7-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.tencent.tinker:tinker-android-lib-1.9.9" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-fragment-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.tencent.bugly:crashreport_upgrade-1.3.6" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" /> <orderEntry type="library" name="Gradle: me.zhanghai.android.materialprogressbar:library-1.4.0" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-compat-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:commons-0.9.4.4" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-v13-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.tencent.tinker:tinker-ziputils:1.9.9@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-1.0.2" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" /> <orderEntry type="library" name="Gradle: in.srain.cube:ultra-ptr-1.0.11" level="project" /> <orderEntry type="library" name="Gradle: com.alibaba:fastjson:1.1.56.android@jar" level="project" /> <orderEntry type="library" name="Gradle: com.tencent.tinker:tinker-android-loader-1.9.9" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" /> <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" /> <orderEntry type="library" name="Gradle: com.github.lecho:hellocharts-library-1.5.8" level="project" /> <orderEntry type="library" name="Gradle: com.tencent.tinker:tinker-commons:1.9.9@jar" level="project" /> <orderEntry type="library" name="Gradle: __local_aars__:/Users/chenqi/AndroidStudioProjects/pregnancy_guard_android/app/libs/BaiduLBS_Android.jar:unspecified@jar" level="project" /> <orderEntry type="library" name="Gradle: com.daimajia.numberprogressbar:library-1.4" level="project" /> <orderEntry type="module" module-name="andbrickslib" /> <orderEntry type="module" module-name="FastBleLib" /> </component> app/build.gradle
@@ -1,14 +1,15 @@ apply plugin: 'com.android.application' apply from: 'tinker-support.gradle' android { compileSdkVersion 25 buildToolsVersion '26.0.2' compileSdkVersion rootProject.ext.android.compileSdkVersion buildToolsVersion rootProject.ext.android.buildToolsVersion defaultConfig { applicationId "com.moral.yunfushao" minSdkVersion 21 targetSdkVersion 25 versionCode 2 versionName "1.0.2_sp10" minSdkVersion rootProject.ext.android.minSdkVersion targetSdkVersion rootProject.ext.android.targetSdkVersion versionCode rootProject.ext.android.versionCode versionName rootProject.ext.android.versionName testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" signingConfig signingConfigs.debug } @@ -25,6 +26,12 @@ sourceSets { main { jniLibs.srcDirs = ['libs'] } } repositories { flatDir { dirs 'libs' } } //自定义名字 @@ -74,4 +81,14 @@ implementation 'org.greenrobot:eventbus:3.0.0' implementation 'com.github.lecho:hellocharts-library:1.5.8@aar' implementation 'com.contrarywind:Android-PickerView:3.1.2' //bugly implementation 'com.android.support:multidex:1.0.1' // 多dex配置 //注释掉原有bugly的仓库 //compile 'com.tencent.bugly:crashreport:latest.release'//其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.3.4 implementation 'com.tencent.bugly:crashreport_upgrade:1.3.6' // 指定tinker依赖版本(注:应用升级1.3.5版本起,不再内置tinker) implementation 'com.tencent.tinker:tinker-android-lib:1.9.9' implementation 'com.tencent.bugly:nativecrashreport:latest.release' } app/libs/bugly_crashreport_upgrade-1.3.5.aarBinary files differ
app/src/main/AndroidManifest.xml
@@ -73,6 +73,7 @@ android:screenOrientation="portrait" /> <activity android:name="com.moral.yunfushao.activity.BLESearchActivity" android:launchMode="singleInstance" android:screenOrientation="portrait" /> <activity android:name="com.moral.yunfushao.activity.VoiceSetActivity" @@ -95,6 +96,26 @@ android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"></service> </application> <!-- Bugly升级SDK配置开始 --> <activity android:name="com.tencent.bugly.beta.ui.BetaActivity" android:configChanges="keyboardHidden|orientation|screenSize|locale" android:theme="@android:style/Theme.Translucent" /> <!--API 24以上配置--> <provider android:name="android.support.v4.content.FileProvider" android:authorities="com.moral.yunfushao.fileProvider" android:exported="false" android:grantUriPermissions="true" tools:replace="name,authorities,exported,grantUriPermissions"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" tools:replace="name,resource" /> </provider> <!-- Bugly升级SDK配置结束--> </application> </manifest> app/src/main/java/com/moral/yunfushao/MainActivity.java
@@ -72,7 +72,7 @@ private int index = 0; private boolean islogin = false; private BluetoothService mBluetoothService; public static BluetoothService mBluetoothService; @Override protected void getBundleExtras(Bundle extras) { @@ -85,10 +85,15 @@ } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); protected void onStart() { super.onStart(); bindService(); PermissionUtil.verifyStoragePermissions(this); } @Override protected void onStop() { super.onStop(); } @Override @@ -315,6 +320,7 @@ mBluetoothService = ((BluetoothService.BluetoothBinder) service).getService(); mBluetoothService.setScanCallback(callback); String mac = MainApp.theApp.sharedPreferencesUtil.getBLE(); System.out.println("BleGattCallback init"); if (!TextUtils.isEmpty(mac)) { mBluetoothService.scanAndConnect5(mac); } @@ -322,6 +328,7 @@ @Override public void onServiceDisconnected(ComponentName name) { System.out.println("BleGattCallback onServiceDisconnected"); mBluetoothService = null; } }; @@ -329,29 +336,32 @@ private BluetoothService.Callback callback = new BluetoothService.Callback() { @Override public void onStartScan() { System.out.println("MainActivity onStartScan"); } @Override public void onScanning(ScanResult result) { System.out.println("MainActivity onScanning"); } @Override public void onScanComplete() { System.out.println("MainActivity onScanComplete"); } @Override public void onConnecting() { System.out.println("MainActivity onConnecting"); progressDialog.setTitleText("正在连接..."); progressDialog.show(); } @Override public void onConnectFail() { System.out.println("MainActivity onConnectFail"); progressDialog.dismiss(); mToatUtils.showSingletonToast("连接失败"); mBluetoothService.closeConnect(); EventMessage msg = new EventMessage(); msg.setType(AppConfig.GET_BLE_DISCONNECT); EventBus.getDefault().postSticky(msg); @@ -359,6 +369,7 @@ @Override public void onDisConnected() { System.out.println("MainActivity onDisConnected"); progressDialog.dismiss(); mToatUtils.showSingletonToast("孕妇哨连接断开"); EventMessage msg = new EventMessage(); @@ -368,6 +379,7 @@ @Override public void onServicesDiscovered() { System.out.println("MainActivity onServicesDiscovered"); progressDialog.dismiss(); EventMessage msg = new EventMessage(); msg.setType(AppConfig.GET_BLE_SERVICE); app/src/main/java/com/moral/yunfushao/MainApp.java
@@ -1,6 +1,5 @@ package com.moral.yunfushao; import android.app.Application; import android.bluetooth.BluetoothGattService; import com.baidu.location.BDLocation; @@ -19,7 +18,7 @@ * Created by haijiang on 2017/5/2. */ public class MainApp extends Application { public class MainApp extends SampleApplication { public static MainApp theApp; //用户id public static String userId; @@ -60,6 +59,10 @@ AppConfig.voideUrl1 = "http://yfsapi.7drlb.com/video/girl/music.mp3"; AppConfig.voideUrl2 = "http://yfsapi.7drlb.com/video/girl/music1.mp3"; AppConfig.voideUrl3 = "http://yfsapi.7drlb.com/video/girl/music2.mp3"; } else if (MainApp.theApp.sharedPreferencesUtil.getVoiceType() == 2) { AppConfig.voideUrl1 = null; AppConfig.voideUrl2 = null; AppConfig.voideUrl3 = null; } bleManager = new BleManager(this); @@ -76,6 +79,7 @@ mLocClient.start(); } /** * 定位SDK监听函数 */ app/src/main/java/com/moral/yunfushao/SampleApplication.java
New file @@ -0,0 +1,17 @@ package com.moral.yunfushao; import com.tencent.tinker.loader.app.TinkerApplication; import com.tencent.tinker.loader.shareutil.ShareConstants; /** * @author : chenqi. * @e_mail : 1650699704@163.com. * @create_time : 2018/10/26. * @Package_name: Bugly2 */ public class SampleApplication extends TinkerApplication { public SampleApplication() { super(ShareConstants.TINKER_ENABLE_ALL, "com.moral.yunfushao.SampleApplicationLike", "com.tencent.tinker.loader.TinkerLoader", false); } } app/src/main/java/com/moral/yunfushao/SampleApplicationLike.java
New file @@ -0,0 +1,163 @@ package com.moral.yunfushao; import android.annotation.TargetApi; import android.app.Application; import android.content.Context; import android.content.Intent; import android.os.Build; import android.text.TextUtils; import android.widget.Toast; import com.tencent.bugly.Bugly; import com.tencent.bugly.beta.Beta; import com.tencent.bugly.beta.interfaces.BetaPatchListener; import com.tencent.bugly.crashreport.CrashReport; import com.tencent.tinker.entry.DefaultApplicationLike; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.Locale; /** * @author : chenqi. * @e_mail : 1650699704@163.com. * @create_time : 2018/10/26. * @Package_name: Bugly2 */ public class SampleApplicationLike extends DefaultApplicationLike { public static final String TAG = "Tinker.SampleApplicationLike"; public SampleApplicationLike(Application application, int tinkerFlags, boolean tinkerLoadVerifyFlag, long applicationStartElapsedTime, long applicationStartMillisTime, Intent tinkerResultIntent) { super(application, tinkerFlags, tinkerLoadVerifyFlag, applicationStartElapsedTime, applicationStartMillisTime, tinkerResultIntent); } @Override public void onCreate() { super.onCreate(); // 设置是否开启热更新能力,默认为true Beta.enableHotfix = true; // 设置是否自动下载补丁,默认为true Beta.canAutoDownloadPatch = true; // 设置是否自动合成补丁,默认为true Beta.canAutoPatch = true; // 设置是否提示用户重启,默认为false Beta.canNotifyUserRestart = true; // 设置升级检查周期为60s(默认检查周期为0s),60s内SDK不重复向后台请求策略); Beta.upgradeCheckPeriod = 60 * 1000; // 设置启动延时为1s(默认延时3s),APP启动1s后初始化SDK,避免影响APP启动速度; Beta.initDelay = 1 * 1000; // 设置更新弹窗默认展示的banner Beta.defaultBannerId = R.mipmap.icon; //设置自定义升级对话框UI布局 // Beta.upgradeDialogLayoutId = R.layout.upgrade_dialog; // 补丁回调接口 Beta.betaPatchListener = new BetaPatchListener() { @Override public void onPatchReceived(String patchFile) { // Toast.makeText(getApplication(), "补丁下载地址" + patchFile, Toast.LENGTH_SHORT).show(); } @Override public void onDownloadReceived(long savedLength, long totalLength) { Toast.makeText(getApplication(), String.format(Locale.getDefault(), "%s %d%%", Beta.strNotificationDownloading, (int) (totalLength == 0 ? 0 : savedLength * 100 / totalLength)), Toast.LENGTH_SHORT).show(); } @Override public void onDownloadSuccess(String msg) { Toast.makeText(getApplication(), "补丁下载成功", Toast.LENGTH_SHORT).show(); } @Override public void onDownloadFailure(String msg) { Toast.makeText(getApplication(), "补丁下载失败", Toast.LENGTH_SHORT).show(); } @Override public void onApplySuccess(String msg) { Toast.makeText(getApplication(), "补丁应用成功", Toast.LENGTH_SHORT).show(); } @Override public void onApplyFailure(String msg) { Toast.makeText(getApplication(), "补丁应用失败", Toast.LENGTH_SHORT).show(); } @Override public void onPatchRollback() { } }; Context context = getApplication().getApplicationContext(); // 获取当前包名 String packageName = context.getPackageName(); // 获取当前进程名 String processName = getProcessName(android.os.Process.myPid()); // 设置是否为上报进程 CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(context); strategy.setUploadProcess(processName == null || processName.equals(packageName)); // 设置开发设备,默认为false,上传补丁如果下发范围指定为“开发设备”,需要调用此接口来标识开发设备 Bugly.setIsDevelopmentDevice(context, false); // 初始化Bugly 调试时候设置为true Bugly.init(getApplication(), "6c3f03f59c", false, strategy); } /** * 获取进程号对应的进程名 * * @param pid 进程号 * @return 进程名 */ private static String getProcessName(int pid) { BufferedReader reader = null; try { reader = new BufferedReader(new FileReader("/proc/" + pid + "/cmdline")); String processName = reader.readLine(); if (!TextUtils.isEmpty(processName)) { processName = processName.trim(); } return processName; } catch (Throwable throwable) { throwable.printStackTrace(); } finally { try { if (reader != null) { reader.close(); } } catch (IOException exception) { exception.printStackTrace(); } } return null; } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override public void onBaseContextAttached(Context base) { super.onBaseContextAttached(base); // 安装tinker // TinkerManager.installTinker(this); 替换成下面Bugly提供的方法 Beta.installTinker(this); } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public void registerActivityLifecycleCallback(Application.ActivityLifecycleCallbacks callbacks) { getApplication().registerActivityLifecycleCallbacks(callbacks); } } app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java
@@ -6,14 +6,17 @@ import android.content.Intent; import android.content.ServiceConnection; import android.content.pm.PackageManager; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.ActivityCompat; import android.support.v13.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.ImageView; @@ -35,7 +38,6 @@ import org.greenrobot.eventbus.EventBus; import java.util.ArrayList; import java.util.List; /** * 蓝牙搜索 @@ -61,6 +63,7 @@ super.onCreate(savedInstanceState); bindService(); } @Override protected void onDestroy() { @@ -105,10 +108,8 @@ if (MainApp.theApp.bleManager != null) { MainApp.theApp.bleManager.closeBluetoothGatt(); } sendEventMessage(AppConfig.BLUETOOCH_CHANGE_CONNECT); mBluetoothService.connectDevice(scanResultList.get(position)); EventMessage eventMessage = new EventMessage(); eventMessage.setType(AppConfig.BLUETOOCH_CHANGE_CONNECT); EventBus.getDefault().post(eventMessage); } } @@ -121,7 +122,7 @@ @Override protected void initListener() { // iv_search.setOnClickListener(this); iv_search.setOnClickListener(this); iv_searchpic.setOnClickListener(this); } @@ -175,6 +176,7 @@ public void onServiceConnected(ComponentName name, IBinder service) { mBluetoothService = ((BluetoothService.BluetoothBinder) service).getService(); mBluetoothService.setScanCallback(callback); mBluetoothService.openBlueTooth(); // mBluetoothService.scanDevice(); } @@ -199,12 +201,21 @@ @Override public void onScanning(ScanResult result) { System.out.println("chenqi ScanResule " + result.getDevice().getName()); if (!TextUtils.isEmpty(result.getDevice().getName())) { if (result.getDevice().getName().equals("孕妇哨") || result.getDevice().getName().equals("yunfushao") || result.getDevice().getName().equals("7drlb") || result.getDevice().getName().contains("FEI-D")) { scanResultList.add(result); adapter.notifyDataSetChanged(); } } } @Override public void onScanComplete() { System.out.println("chenqi onScanComplete "); iv_search.setImageResource(R.mipmap.bt_start); iv_searchpic.setImageResource(R.mipmap.bg_end); } @@ -222,11 +233,8 @@ if (ActivityManager.getActivityManager().isActivityExist(BLESearchActivity.this.getClass().getName())) { progressDialog.dismiss(); } // Log.d("chonglian","连接失败"); mToatUtils.showSingletonToast("连接失败"); EventMessage msg = new EventMessage(); msg.setType(AppConfig.GET_BLE_DISCONNECT); EventBus.getDefault().postSticky(msg); sendEventMessage(AppConfig.GET_BLE_DISCONNECT); } @Override @@ -236,23 +244,26 @@ } Log.d("chonglian", "孕妇哨连接断开"); mToatUtils.showSingletonToast("孕妇哨连接断开"); EventMessage msg = new EventMessage(); msg.setType(AppConfig.GET_BLE_DISCONNECT); EventBus.getDefault().postSticky(msg); } @Override public void onServicesDiscovered() { Log.d("chonglian", "孕妇哨连接成功"); EventMessage msg = new EventMessage(); msg.setType(AppConfig.GET_BLE_SERVICE); EventBus.getDefault().postSticky(msg); sendEventMessage(AppConfig.GET_BLE_SERVICE); if (ActivityManager.getActivityManager().isActivityExist(BLESearchActivity.this.getClass().getName())) { progressDialog.dismiss(); finish(); } } }; private void sendEventMessage(int type) { EventMessage msg = new EventMessage(); msg.setType(type); EventBus.getDefault().postSticky(msg); } @Override public final void onRequestPermissionsResult(int requestCode, @@ -260,44 +271,60 @@ @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case 12: if (grantResults.length > 0) { for (int i = 0; i < grantResults.length; i++) { if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { onPermissionGranted(permissions[i]); } } } case 200: onPermissionGranted(); break; } } private void checkPermissions() { String[] permissions = {Manifest.permission.ACCESS_COARSE_LOCATION}; List<String> permissionDeniedList = new ArrayList<>(); for (String permission : permissions) { int permissionCheck = ContextCompat.checkSelfPermission(this, permission); if (permissionCheck == PackageManager.PERMISSION_GRANTED) { onPermissionGranted(permission); if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {//未开启定位权限 //开启定位权限,200是标识码 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 200); } else { permissionDeniedList.add(permission); if (!isLocationEnable(this)){ Intent locationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); this.startActivityForResult(locationIntent, 2); } } if (!permissionDeniedList.isEmpty()) { String[] deniedPermissions = permissionDeniedList.toArray(new String[permissionDeniedList.size()]); ActivityCompat.requestPermissions(this, deniedPermissions, 12); onPermissionGranted(); } } private void onPermissionGranted(String permission) { switch (permission) { case Manifest.permission.ACCESS_COARSE_LOCATION: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 2) { if (isLocationEnable(this)) { //定位已打开的处理 return; } else { Intent locationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); this.startActivityForResult(locationIntent, 2); //定位依然没有打开的处理 } } else super.onActivityResult(requestCode, resultCode, data); } /** * 判断是否打开定位服务(不是权限) * * @param context * @return */ public static final boolean isLocationEnable(Context context) { LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); boolean networkProvider = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); boolean gpsProvider = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); if (networkProvider || gpsProvider) return true; return false; } private void onPermissionGranted() { if (mBluetoothService == null) { bindService(); } else { mBluetoothService.scanDevice(); } break; } } } app/src/main/java/com/moral/yunfushao/base/BaseActivity.java
@@ -42,6 +42,7 @@ * 吐司工具类 */ protected ToastUtils mToatUtils; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -172,6 +173,7 @@ /** * 代替findViewById * * @param viewId * @param <E> * @return @@ -201,6 +203,7 @@ /** * 解决getActivity为null * * @param outState */ @Override app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java
@@ -6,6 +6,7 @@ import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattService; import android.content.Intent; import android.content.ServiceConnection; import android.os.Binder; import android.os.Handler; import android.os.IBinder; @@ -39,19 +40,21 @@ @Override public void onCreate() { System.out.println("chenqi onCreate service" + MainApp.theApp.bleManager); if (MainApp.theApp.bleManager != null) { bleManager = MainApp.theApp.bleManager; } else { bleManager = new BleManager(MainApp.theApp); MainApp.theApp.bleManager = bleManager; } bleManager.setMtu(128);//给外部接口设置数据传输大小 // bleManager.setMtu(128);//给外部接口设置数据传输大小 bleManager.enableBluetooth(); } @Override public void onDestroy() { super.onDestroy(); System.out.println("chenqi onDestroy service "); bleManager = null; mCallback = null; mCallback2 = null; @@ -62,11 +65,20 @@ return mBinder; } @Override public void unbindService(ServiceConnection conn) { System.out.println("chenqi unbindService service"); super.unbindService(conn); } @Override public boolean onUnbind(Intent intent) { bleManager.closeBluetoothGatt(); System.out.println("chenqi unbinding service"); closeConnect(); return super.onUnbind(intent); } public class BluetoothBinder extends Binder { public BluetoothService getService() { @@ -210,7 +222,7 @@ @Override public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) { System.out.println("chenqi blueTooth connect state -> onDisConnected"); System.out.println("chenqi blueTooth connect state -> onDisConnected" + exception); runOnMainThread(new Runnable() { @Override public void run() { @@ -563,6 +575,8 @@ public void scanAndConnect5(String mac) { resetInfo(); System.out.println("chenqi mCallback" + mCallback); if (mCallback != null) { mCallback.onStartScan(); } @@ -598,7 +612,6 @@ @Override public void onConnectError(BleException exception) { System.out.println("chenqi chenqi" + exception.getDescription()) ; runOnMainThread(new Runnable() { @Override public void run() { @@ -615,6 +628,7 @@ @Override public void onDisConnected(BluetoothGatt gatt, int status, BleException exception) { System.out.println("chenqi onConnectError " + exception.getDescription()); runOnMainThread(new Runnable() { @Override public void run() { @@ -673,6 +687,7 @@ } public void closeConnect() { if (bleManager != null) bleManager.closeBluetoothGatt(); } app/src/main/java/com/moral/yunfushao/common/API.java
@@ -7,8 +7,9 @@ public class API { public static final String URL_HTTP = "http://yfsapi.7drlb.com/yfs/?service="; //http://yfsapi.7drlb.com/yfs/?service=Send.Sms public final static String REQUEST_CODE = URL_HTTP + "Send.Sms";//获取验证码 //http://yfsapi.7drlb.com/yfs/?service=User.Register public final static String REGISTER = URL_HTTP + "User.Register";//用户注册 public final static String LOGIN = URL_HTTP + "User.Login";//用户登录 app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java
@@ -55,6 +55,7 @@ import com.moral.yunfushao.ui.PanelView; import com.moral.yunfushao.utils.AudioUtils; import com.moral.yunfushao.utils.DebugUtils; import com.moral.yunfushao.utils.T; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -98,11 +99,12 @@ //心跳时间 private int HEARTTIMES = 2; //重连时间 private int RECONNECTTIMES = 8000; //是否在本页面 private boolean isMySelfPage = false; //handler管理线程 private Handler handler = new Handler(); private Runnable heartRunnable = new Runnable() { @Override @@ -126,15 +128,17 @@ FragmentMonitor.this.mBluetoothService.write(FragmentMonitor.this.mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), FragmentMonitor.this.mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_HEART, null); Log.d(TGA, "发送心跳"); heart(); } }; private Runnable reconnectRunnable = new Runnable() { @Override public void run() { System.out.println("chenqi 立刻重连"); //重连 if (FragmentMonitor.this.mBluetoothService == null) { if (mBluetoothService == null) { return; } String mac = MainApp.theApp.sharedPreferencesUtil.getBLE(); @@ -142,10 +146,8 @@ if (MainApp.theApp.bleManager.isConnectingOrConnected()) { return; } Log.d(TGA, "正在重连"); FragmentMonitor.this.mBluetoothService.scanAndConnect5(mac); mBluetoothService.scanAndConnect5(mac); } reconnect(); } }; @@ -196,11 +198,11 @@ */ @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) public void eventComing(EventMessage msg) { mBluetoothService = ((MainActivity) getActivity()).getBluetoothService(); if (msg.getType() == AppConfig.GET_BLE_SERVICE) { resetHandler(); pv.setStatusStr("检测中"); //发现服务 mBluetoothService = ((MainActivity) getActivity()).getBluetoothService(); ((MainActivity) getActivity()).resetBLECallBack(); if (mBluetoothService != null) { BluetoothGatt gatt = mBluetoothService.getGatt(); @@ -211,8 +213,8 @@ mBluetoothService.setService(service); break; } } //获取特征 }//获取特征 for (BluetoothGattCharacteristic characteristic : mBluetoothService.getService().getCharacteristics()) { int charaProp = characteristic.getProperties(); if ((charaProp & BluetoothGattCharacteristic.PROPERTY_READ) > 0) { @@ -249,26 +251,25 @@ @Override public void onFailure(final BleException exception) { } @Override public void onInitiatedResult(boolean result) { } }); /** * 发送时间校准 */ // handler.postDelayed(runnable, 5000); //重置handler resetHandler(); //发送心跳 heart(); } } else if (msg.getType() == AppConfig.GET_BLE_DISCONNECT) { preLevel = -1; showStatus(-1); handler.postDelayed(reconnectRunnable, RECONNECTTIMES); reconnect(); stop(); isVirating = false; AudioUtils.virateCancle(getActivity()); } else if (msg.getType() == AppConfig.CHANGE_SETTING) { if (timer != null) { timer.cancel(); @@ -304,6 +305,7 @@ } } else if (msg.getType() == AppConfig.BLUETOOCH_CHANGE_CONNECT) { showStatus(-1); stopReconnect(); } } @@ -339,13 +341,24 @@ @Override public void onAttach(Context context) { super.onAttach(context); FragmentMonitor.this.mBluetoothService = ((MainActivity) getActivity()).getBluetoothService(); mBluetoothService = ((MainActivity) getActivity()).getBluetoothService(); } @Override public void onResume() { super.onResume(); isMySelfPage = true; reconnect(); textShowMac(); } @Override public void onPause() { super.onPause(); //暂停的时候不检测 T.show("onPause"); isMySelfPage = false; stopReconnect(); } @Override @@ -404,6 +417,7 @@ } }); showStatus(-1); } @Override @@ -502,14 +516,29 @@ handler.postDelayed(heartRunnable, 1000 * HEARTTIMES); } /** * 开始重连 */ private void reconnect() { handler.postDelayed(reconnectRunnable, RECONNECTTIMES); if (isMySelfPage) { stopReconnect(); //是否是在本页面 handler.postDelayed(reconnectRunnable, 0); } } /** * 停止重连 */ private void stopReconnect() { handler.removeCallbacks(reconnectRunnable); if (mBluetoothService != null) mBluetoothService.closeConnect(); } private void resetHandler() { handler.removeCallbacks(reconnectRunnable); handler.removeCallbacks(heartRunnable); HEARTTIMES = 2; } private void submitData() { @@ -637,7 +666,7 @@ private void textShowMac() { if (BuildConfig.BUILD_TYPE.equals(VersionConstants.DEBUG)) { final TextView tv_text_mac = (TextView) findView(R.id.tv_text_mac); final TextView tv_text_mac = findView(R.id.tv_text_mac); tv_desc.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { app/src/main/java/com/moral/yunfushao/fragment/FragmentSettings.java
@@ -66,9 +66,6 @@ sc_male = findView(R.id.sc_male); tv_version = findView(R.id.tv_version); tv_version.setText("当前版本V" + getVersion()); // bt_look.setVisibility(DebugUtils.debug_mode ? View.VISIBLE : View.GONE); bt_look.setVisibility(View.GONE); } app/src/main/java/com/moral/yunfushao/fragment/FragmentShoppongMall.java
@@ -16,6 +16,7 @@ public class FragmentShoppongMall extends BaseFragment { private WebView mWebView; @Override protected int getLayoutId() { return R.layout.fragment_shoppingmall_layout; @@ -28,6 +29,14 @@ } @Override public void onResume() { super.onResume(); String url = "https://qixingboshi.tmall.com/shop/view_shop.htm?spm=a220m.1000862.1000730.3.4e577fdaFH6RLh&user_number_id=4065460231&rn=e4ad4c4924aa673e9a82566d92483890"; mWebView.loadUrl(url); // mWebView.loadUrl("https://shop459070069.m.taobao.com/"); } @Override protected void initListener() { } @@ -35,7 +44,7 @@ @Override protected void initData() { // mWebView.loadUrl("http://www.7drlb.cn"); mWebView.loadUrl("https://shop459070069.m.taobao.com/"); } @Override @@ -56,7 +65,7 @@ mWebView.getSettings().setAppCacheEnabled(true); mWebView.getSettings().setDomStorageEnabled(true); mWebView.getSettings().setDatabaseEnabled(true); if(Build.VERSION.SDK_INT >= 0x13) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { mWebView.getSettings().setLoadsImagesAutomatically(true); } else { mWebView.getSettings().setLoadsImagesAutomatically(false); @@ -67,6 +76,7 @@ progressDialog.show(); return false; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); @@ -74,7 +84,10 @@ mWebView.getSettings().setLoadsImagesAutomatically(true); } } }); mWebView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { app/src/main/java/com/moral/yunfushao/ui/PanelView.java
@@ -60,7 +60,7 @@ private Paint drawTextPaint; private int textColor = Color.GRAY; private int textSize = 36; private String[] level = {"安全", "建议回避", "及时闪躲", "紧急撤离"}; private String[] level = {"安全状态", "建议回避", "及时闪躲", "紧急撤离"}; //内进度圆 private Paint mCirclePaint; app/src/main/res/drawable/choose_button.xml
New file @@ -0,0 +1,14 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="10dp" /> <solid android:color="@color/trans" /> <stroke android:width="1dp" android:color="@color/blue_btn_bg_color" /> <padding android:bottom="5dp" android:left="10dp" android:right="10dp" android:top="5dp" /> </shape> app/src/main/res/layout/ac_register_layout.xml
@@ -6,6 +6,7 @@ android:background="@mipmap/bg_login" android:fitsSystemWindows="true" android:orientation="vertical"> <ImageView android:layout_width="100dp" android:layout_height="100dp" @@ -17,8 +18,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/x20" android:layout_marginRight="@dimen/x20" android:layout_marginTop="@dimen/x16" android:layout_marginRight="@dimen/x20" android:background="@mipmap/bg_edit" android:padding="@dimen/x14"> @@ -60,10 +61,10 @@ android:layout_alignParentRight="true" android:background="@mipmap/bt_red_small" android:gravity="center" android:paddingBottom="@dimen/x2" android:paddingLeft="@dimen/x8" android:paddingRight="@dimen/x8" android:paddingTop="@dimen/x2" android:paddingRight="@dimen/x8" android:paddingBottom="@dimen/x2" android:text="获取验证码" android:textColor="@color/white" /> </RelativeLayout> @@ -71,17 +72,19 @@ <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@mipmap/bg_edit" android:layout_marginLeft="@dimen/x20" android:layout_marginRight="@dimen/x20" android:layout_marginTop="@dimen/x16" android:layout_marginRight="@dimen/x20" android:background="@mipmap/bg_edit" android:padding="@dimen/x14"> <ImageView android:id="@+id/iv2" android:layout_width="@dimen/x16" android:layout_height="@dimen/x16" android:layout_centerVertical="true" android:src="@mipmap/icon_code"/> <View android:id="@+id/line2" android:layout_width="1dp" @@ -90,34 +93,38 @@ android:layout_marginLeft="@dimen/x8" android:layout_toRightOf="@+id/iv2" android:background="@color/blue_txt" /> <EditText android:id="@+id/et_code" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_toRightOf="@id/line2" android:background="@null" android:hint="请输入验证码" android:inputType="number" android:textColorHint="@color/blue_txt" android:textColor="@color/blue_txt" android:background="@null" android:textSize="16sp" android:paddingLeft="@dimen/x10" android:paddingRight="@dimen/x10" android:layout_toRightOf="@id/line2"/> android:textColor="@color/blue_txt" android:textColorHint="@color/blue_txt" android:textSize="16sp" /> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/x20" android:layout_marginRight="@dimen/x20" android:layout_marginTop="@dimen/x14" android:layout_marginRight="@dimen/x20" android:background="@mipmap/bg_edit" android:padding="@dimen/x14"> <ImageView android:id="@+id/iv3" android:layout_width="@dimen/x16" android:layout_height="@dimen/x16" android:layout_centerVertical="true" android:src="@mipmap/icon_password"/> <View android:id="@+id/line3" android:layout_width="1dp" @@ -126,41 +133,44 @@ android:layout_marginLeft="@dimen/x8" android:layout_toRightOf="@+id/iv3" android:background="@color/blue_txt" /> <EditText android:id="@+id/et_pwd" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_toRightOf="@+id/line3" android:layout_centerVertical="true" android:hint="请输入密码" android:textColorHint="@color/blue_txt" android:textColor="@color/blue_txt" android:layout_toRightOf="@+id/line3" android:background="@null" android:hint="请输入密码" android:inputType="textPassword" android:paddingLeft="@dimen/x10" android:paddingRight="@dimen/x10" android:textColor="@color/blue_txt" android:textColorHint="@color/blue_txt" android:textSize="16sp" /> </RelativeLayout> <Button android:id="@+id/bt_sure" android:layout_width="match_parent" android:layout_height="@dimen/x40" android:layout_marginLeft="@dimen/x20" android:layout_marginRight="@dimen/x20" android:layout_marginTop="@dimen/x20" android:layout_marginRight="@dimen/x20" android:background="@mipmap/bt_blue" android:gravity="center" android:text="注册" android:textColor="@color/white" android:textColorHint="@color/white" android:textSize="16sp" /> <TextView android:id="@+id/tv_login" android:layout_width="match_parent" android:layout_height="match_parent" android:text="已有账号,返回登录" android:gravity="bottom|center_horizontal" android:textColor="@color/blue_txt" android:layout_marginBottom="@dimen/x30" android:gravity="bottom|center_horizontal" android:text="已有账号,返回登录" android:textColor="@color/blue_txt" android:textSize="16sp" /> </LinearLayout> app/src/main/res/layout/fragment_monitor_layout.xml
@@ -116,7 +116,7 @@ android:layout_marginTop="@dimen/x4" android:text="0" android:textColor="@color/green_txt" android:textSize="18sp" android:textSize="14sp" android:textStyle="bold" /> </LinearLayout> @@ -147,7 +147,7 @@ android:layout_marginTop="@dimen/x4" android:text="0" android:textColor="@color/yellow_txt" android:textSize="18sp" android:textSize="14sp" android:textStyle="bold" /> </LinearLayout> </LinearLayout> app/src/main/res/layout/fragment_setting_layout.xml
@@ -121,8 +121,8 @@ android:layout_marginRight="@dimen/x20" android:background="@drawable/choose_button" android:stateListAnimator="@anim/progress" android:textColor="@color/dark_gray_txt" android:text="无声" /> android:text="无声" android:textColor="@color/dark_gray_txt" /> </RelativeLayout> <View @@ -138,7 +138,7 @@ android:layout_marginTop="@dimen/x24" android:layout_marginRight="@dimen/x40" android:background="@mipmap/bt_blue" android:gravity="center" android:paddingBottom="@dimen/x10" android:text="退出登录" android:textColor="@color/white" android:textSize="16sp" /> app/tinker-support.gradle
New file @@ -0,0 +1,100 @@ apply plugin: 'com.tencent.bugly.tinker-support' def bakPath = file("${buildDir}/bakApk/") /** * 此处填写每次构建生成的基准包目录 */ def baseApkDir = "app-1109-16-53-16" def outputFile = "Dev_yfs_v.${rootProject.ext.android.versionName}.apk" //def outputFile = "yfs_v.${rootProject.ext.android.versionName}.apk" /** * 对于插件各参数的详细解析请参考 */ tinkerSupport { // 开启tinker-support插件,默认值true enable = true // 指定归档目录,默认值当前module的子目录tinker autoBackupApkDir = "${bakPath}" // 是否启用覆盖tinkerPatch配置功能,默认值false // 开启后tinkerPatch配置不生效,即无需添加tinkerPatch overrideTinkerPatchConfiguration = true // 编译补丁包时,必需指定基线版本的apk,默认值为空 // 如果为空,则表示不是进行补丁包的编译 // @{link tinkerPatch.oldApk } baseApk = "${bakPath}/${baseApkDir}/${outputFile}" // 对应tinker插件applyMapping baseApkProguardMapping = "${bakPath}/${baseApkDir}/${outputFile}-mapping.txt" // 对应tinker插件applyResourceMapping baseApkResourceMapping = "${bakPath}/${baseApkDir}/${outputFile}-R.txt" // 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性 tinkerId = "dev_patch-1.0.1" // 构建多渠道补丁时使用 // buildAllFlavorsDir = "${bakPath}/${baseApkDir}" // 是否启用加固模式,默认为false.(tinker-spport 1.0.7起支持) // isProtectedApp = true // 是否开启反射Application模式 enableProxyApplication = false // 是否支持新增非export的Activity(注意:设置为true才能修改AndroidManifest文件) supportHotplugComponent = true } /** * 一般来说,我们无需对下面的参数做任何的修改 * 对于各参数的详细介绍请参考: * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97 */ tinkerPatch { //oldApk ="${bakPath}/${appName}/app-release.apk" ignoreWarning = false useSign = true dex { dexMode = "jar" pattern = ["classes*.dex"] loader = [] } lib { pattern = ["lib/*/*.so"] } res { pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"] ignoreChange = [] largeModSize = 100 } packageConfig { } sevenZip { zipArtifact = "com.tencent.mm:SevenZip:1.1.10" // path = "/usr/local/bin/7za" } buildConfig { keepDexApply = false //tinkerId = "1.0.1-base" //applyMapping = "${bakPath}/${appName}/app-release-mapping.txt" // 可选,设置mapping文件,建议保持旧apk的proguard混淆方式 //applyResourceMapping = "${bakPath}/${appName}/app-release-R.txt" // 可选,设置R.txt文件,通过旧apk文件保持ResId的分配 } } build.gradle
@@ -1,4 +1,5 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. apply from: 'conf.gradle' buildscript { repositories { @@ -8,6 +9,7 @@ } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' classpath "com.tencent.bugly:tinker-support:1.1.5" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files conf.gradle
New file @@ -0,0 +1,14 @@ ext { android = [ compileSdkVersion: 25, buildToolsVersion: "26.0.2", versionCode : 4, versionName : "1.0.3.1", minSdkVersion : 21, targetSdkVersion : 25, debugVersion : "sp1", ] dependencies = [ ] }