1.0.3-1测试版本
[*]修改重新连接的方式
[*]修改商城连接
[*]修改心跳机制
[*]主要针对oppo和vivo机型添加开启定位服务
60 files added
34 files modified
1770 ■■■■ changed files
.gradle/4.1/fileHashes/fileHashes.bin patch | view | raw | blame | history
.gradle/4.1/fileHashes/fileHashes.lock patch | view | raw | blame | history
.gradle/4.1/fileHashes/resourceHashesCache.bin patch | view | raw | blame | history
.gradle/4.1/javaCompile/classAnalysis.bin patch | view | raw | blame | history
.gradle/4.1/javaCompile/jarAnalysis.bin patch | view | raw | blame | history
.gradle/4.1/javaCompile/javaCompile.lock patch | view | raw | blame | history
.gradle/4.1/javaCompile/taskHistory.bin patch | view | raw | blame | history
.gradle/4.1/javaCompile/taskJars.bin patch | view | raw | blame | history
.gradle/4.1/taskHistory/fileSnapshots.bin patch | view | raw | blame | history
.gradle/4.1/taskHistory/taskHistory.bin patch | view | raw | blame | history
.gradle/4.1/taskHistory/taskHistory.lock patch | view | raw | blame | history
.idea/libraries/Gradle____local_aars____Users_chenqi_AndroidStudioProjects_pregnancy_guard_android_app_libs_BaiduLBS_Android_jar_unspecified_jar.xml 9 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_afollestad_material_dialogs_commons_0_9_4_4.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_afollestad_material_dialogs_core_0_9_4_4.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_alibaba_fastjson_1_1_56_android_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_animated_vector_drawable_25_3_1.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_appcompat_v7_25_3_1.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_0_2.xml 10 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_0_2_jar.xml 9 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_multidex_1_0_1.xml 10 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_recyclerview_v7_25_3_1.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_support_annotations_25_3_1_jar.xml 16 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_support_compat_25_3_1.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_support_core_ui_25_3_1.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_support_core_utils_25_3_1.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_support_fragment_25_3_1.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_support_media_compat_25_3_1.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_support_v13_25_3_1.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_support_v4_25_3_1.xml 10 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_support_vector_drawable_25_3_1.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2.xml 14 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2.xml 14 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5.xml 14 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_test_rules_0_5.xml 17 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_android_support_test_runner_0_5.xml 17 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_contrarywind_Android_PickerView_3_1_2.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_daimajia_numberprogressbar_library_1_4.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_github_bumptech_glide_glide_3_7_0_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_github_lecho_hellocharts_library_1_5_8.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml 9 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_google_code_gson_gson_2_8_0_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_lzy_net_okgo_2_1_4.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_lzy_net_okserver_1_1_3.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_pnikosis_materialish_progress_1_0.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_4_1_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_squareup_okio_okio_1_9_0_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_tencent_bugly_crashreport_upgrade_1_3_6.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_tencent_bugly_nativecrashreport_3_3_1.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_tencent_tinker_aosp_dexutils_1_9_9_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_tencent_tinker_bsdiff_util_1_9_9_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_tencent_tinker_tinker_android_lib_1_9_9.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_tencent_tinker_tinker_android_loader_1_9_9.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_tencent_tinker_tinker_commons_1_9_9_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__com_tencent_tinker_tinker_ziputils_1_9_9_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__in_srain_cube_ultra_ptr_1_0_11.xml 12 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__javax_annotation_javax_annotation_api_1_2_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__junit_junit_4_12_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__me_zhanghai_android_materialprogressbar_library_1_4_0.xml 15 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__org_greenrobot_eventbus_3_0_0_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml 11 ●●●●● patch | view | raw | blame | history
.idea/libraries/Gradle__pub_devrel_easypermissions_0_4_0.xml 12 ●●●●● patch | view | raw | blame | history
.idea/misc.xml 32 ●●●● patch | view | raw | blame | history
FastBleLib/FastBleLib.iml 71 ●●●●● patch | view | raw | blame | history
FastBleLib/src/main/java/com/clj/fastble/BleManager.java 5 ●●●● patch | view | raw | blame | history
FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java 49 ●●●● patch | view | raw | blame | history
FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java 33 ●●●● patch | view | raw | blame | history
andbrickslib/andbrickslib.iml 100 ●●●●● patch | view | raw | blame | history
app/app.iml 128 ●●●●● patch | view | raw | blame | history
app/build.gradle 29 ●●●● patch | view | raw | blame | history
app/libs/bugly_crashreport_upgrade-1.3.5.aar patch | view | raw | blame | history
app/src/main/AndroidManifest.xml 23 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/MainActivity.java 26 ●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/MainApp.java 8 ●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/SampleApplication.java 17 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/SampleApplicationLike.java 163 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java 107 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/base/BaseActivity.java 3 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java 23 ●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/common/API.java 3 ●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java 71 ●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/fragment/FragmentSettings.java 3 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/fragment/FragmentShoppongMall.java 17 ●●●● patch | view | raw | blame | history
app/src/main/java/com/moral/yunfushao/ui/PanelView.java 2 ●●● patch | view | raw | blame | history
app/src/main/res/drawable/choose_button.xml 14 ●●●●● patch | view | raw | blame | history
app/src/main/res/layout/ac_register_layout.xml 48 ●●●●● patch | view | raw | blame | history
app/src/main/res/layout/fragment_monitor_layout.xml 4 ●●●● patch | view | raw | blame | history
app/src/main/res/layout/fragment_setting_layout.xml 6 ●●●● patch | view | raw | blame | history
app/tinker-support.gradle 100 ●●●●● patch | view | raw | blame | history
build.gradle 2 ●●●●● patch | view | raw | blame | history
conf.gradle 14 ●●●●● patch | view | raw | blame | history
.gradle/4.1/fileHashes/fileHashes.bin
Binary files differ
.gradle/4.1/fileHashes/fileHashes.lock
Binary files differ
.gradle/4.1/fileHashes/resourceHashesCache.bin
Binary files differ
.gradle/4.1/javaCompile/classAnalysis.bin
Binary files differ
.gradle/4.1/javaCompile/jarAnalysis.bin
Binary files differ
.gradle/4.1/javaCompile/javaCompile.lock
Binary files differ
.gradle/4.1/javaCompile/taskHistory.bin
Binary files differ
.gradle/4.1/javaCompile/taskJars.bin
Binary files differ
.gradle/4.1/taskHistory/fileSnapshots.bin
Binary files differ
.gradle/4.1/taskHistory/taskHistory.bin
Binary files differ
.gradle/4.1/taskHistory/taskHistory.lock
Binary 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.aar
Binary 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 = [
    ]
}