wxr
2022-11-24 7c3d23232c5c0328131d2b560e6224dd0d566f01
Merge branch 'wxr-sdk-test' into SDK
84个文件已添加
2个文件已删除
30个文件已修改
2 文件已重命名
2149 ■■■■ 已修改文件
.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
.idea/HdlToLc.iml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/modules.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/vcs.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/workspace.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/.name 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/caches/build_file_checksums.ser 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle____DeviceAddModule_libs_imageload4dh_jar.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle____DeviceAddModule_libs_lechangeSDK_jar.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle______________gradle_caches_transforms_1_files_1_1_DHMobileToolset_1_1_1_aar_f7d8eb2f1804db3345ec5a537e5ec0db.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle______________gradle_caches_transforms_1_files_1_1_DHScanner_1_0_7_aar_0ecd90b9bed2580cb7702e452029b5fe.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle______________gradle_caches_transforms_1_files_1_1_PullToRefreshListView_release_aar_1232b6310601f161610e5eb82d661087.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle____third_zxing_libs_zxing_3_3_0_jar.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_core_common_1_1_1.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_alibaba_arouter_annotation_1_0_6.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_alibaba_arouter_api_1_4_1_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_collections_28_0_0.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_1_0.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_3_0_2_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_monitor_1_0_2_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_rules_0_5_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_runner_0_5_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_runner_1_0_2_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_google_code_gson_gson_2_8_8.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__javax_annotation_javax_annotation_api_1_2.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__junit_junit_4_12.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__org_greenrobot_eventbus_3_0_0.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/modules.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/modules/DeviceAddModule/LCAndroidSDKDemo.DeviceAddModule.iml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/modules/LCAndroidSDKDemo.iml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/modules/app/LCAndroidSDKDemo.app.iml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/.idea/modules/third-zxing/LCAndroidSDKDemo.third-zxing.iml 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/libs/gson-2.8.8.jar 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/DeviceAddActivity.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/LCDeviceEngine.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/model/DeviceAddModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/CONST.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/DeviceAddOpenApiManager.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HDLMD5Utils.java 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HttpClient.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HttpSend.java 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/p_bindsuccess/BindSuccessFragment.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/p_inputsn/ScanFragment.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/service/DeviceAddService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/DeviceAddModule/src/main/res/layout/fragment_bind_success.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/AndroidManifest123456.xml 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/callBack/IAddCamera.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/common/openapi/DeviceDetailService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/common/openapi/DeviceInfoOpenApiManager.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/common/openapi/IGetDeviceInfoCallBack.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/common/openapi/MethodConst.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/hdl/HdlToLc.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/lechange/demo/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/lechange/demo/App.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/lechange/demo/ui/DeviceDetailMainFragment.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/lechange/demo/ui/DeviceListActivity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/lechange/demo/ui/DeviceOnlineMediaPlayActivity.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/lechange/demo/ui/EnvGuideActivity.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/net/IUserDataCallBack.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/net/UserNetManager.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/utils/DeviceUtils.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/java/com/utils/HdlToLcUtils.java 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/res/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/res/layout/activity_device_online_media_play.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/res/layout/fragment_device_detail_main.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/res/values-en/strings.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/res/values/strings.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/app/src/main/res/values/styles.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AndroidOpenDemo/third-zxing/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
.DS_Store
Binary files differ
.idea/HdlToLc.iml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$" />
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>
.idea/modules.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/.idea/HdlToLc.iml" filepath="$PROJECT_DIR$/.idea/HdlToLc.iml" />
    </modules>
  </component>
</project>
.idea/vcs.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="" vcs="Git" />
  </component>
</project>
.idea/workspace.xml
New file
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ChangeListManager">
    <list default="true" id="65c1ada5-6f56-4f18-9096-9578840f8ac4" name="Default Changelist" comment="" />
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
    <option name="LAST_RESOLUTION" value="IGNORE" />
  </component>
  <component name="Git.Settings">
    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
  </component>
  <component name="ProjectId" id="2Hq3DqbkspUmNCGD5OprF7fRXne" />
  <component name="ProjectViewState">
    <option name="autoscrollFromSource" value="true" />
    <option name="autoscrollToSource" value="true" />
    <option name="hideEmptyMiddlePackages" value="true" />
    <option name="showLibraryContents" value="true" />
  </component>
  <component name="PropertiesComponent">
    <property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
    <property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
    <property name="android.project.structure.last.selected" value="SDK Location" />
    <property name="android.project.structure.proportion" value="0.15" />
    <property name="android.sdk.path" value="$USER_HOME$/Library/Developer/Xamarin/android-sdk-macosx" />
    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
    <property name="project.structure.last.edited" value="SDK Location" />
    <property name="project.structure.proportion" value="0.17" />
    <property name="project.structure.side.proportion" value="0.0" />
    <property name="settings.editor.selected.configurable" value="AndroidSdkUpdater" />
  </component>
  <component name="SvnConfiguration">
    <configuration />
  </component>
  <component name="TaskManager">
    <task active="true" id="Default" summary="Default task">
      <changelist id="65c1ada5-6f56-4f18-9096-9578840f8ac4" name="Default Changelist" comment="" />
      <created>1668998669220</created>
      <option name="number" value="Default" />
      <option name="presentableId" value="Default" />
      <updated>1668998669220</updated>
    </task>
    <servers />
  </component>
</project>
AndroidOpenDemo/.DS_Store
Binary files differ
AndroidOpenDemo/.idea/.name
New file
@@ -0,0 +1 @@
LCAndroidSDKDemo
AndroidOpenDemo/.idea/caches/build_file_checksums.ser
Binary files differ
AndroidOpenDemo/.idea/libraries/Gradle____DeviceAddModule_libs_imageload4dh_jar.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: ./DeviceAddModule/libs/imageload4dh.jar">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/DeviceAddModule/libs/imageload4dh.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle____DeviceAddModule_libs_lechangeSDK_jar.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: ./DeviceAddModule/libs/lechangeSDK.jar">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/DeviceAddModule/libs/lechangeSDK.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle______________gradle_caches_transforms_1_files_1_1_DHMobileToolset_1_1_1_aar_f7d8eb2f1804db3345ec5a537e5ec0db.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: ./../../../.gradle/caches/transforms-1/files-1.1/DHMobileToolset-1.1.1.aar/f7d8eb2f1804db3345ec5a537e5ec0db">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/DHMobileToolset-1.1.1.aar/f7d8eb2f1804db3345ec5a537e5ec0db/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/DHMobileToolset-1.1.1.aar/f7d8eb2f1804db3345ec5a537e5ec0db/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle______________gradle_caches_transforms_1_files_1_1_DHScanner_1_0_7_aar_0ecd90b9bed2580cb7702e452029b5fe.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: ./../../../.gradle/caches/transforms-1/files-1.1/DHScanner-1.0.7.aar/0ecd90b9bed2580cb7702e452029b5fe">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/DHScanner-1.0.7.aar/0ecd90b9bed2580cb7702e452029b5fe/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/DHScanner-1.0.7.aar/0ecd90b9bed2580cb7702e452029b5fe/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle______________gradle_caches_transforms_1_files_1_1_PullToRefreshListView_release_aar_1232b6310601f161610e5eb82d661087.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: ./../../../.gradle/caches/transforms-1/files-1.1/PullToRefreshListView-release.aar/1232b6310601f161610e5eb82d661087">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/PullToRefreshListView-release.aar/1232b6310601f161610e5eb82d661087/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/PullToRefreshListView-release.aar/1232b6310601f161610e5eb82d661087/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle____third_zxing_libs_zxing_3_3_0_jar.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: ./third-zxing/libs/zxing_3.3.0.jar">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/third-zxing/libs/zxing_3.3.0.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_core_common_1_1_1.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: android.arch.core:common:1.1.1">
    <CLASSES>
      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.1.1/e55b70d1f5620db124b3e85a7f4bdc7bd48d9f95/common-1.1.1.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: android.arch.core:runtime:1.1.1@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.1.1.aar/f3914d400c29aab655fe9080500f1c18/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.1.1.aar/f3914d400c29aab655fe9080500f1c18/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: android.arch.lifecycle:common:1.1.1">
    <CLASSES>
      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.1.1/207a6efae6a3555e326de41f76bdadd9a239cbce/common-1.1.1.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: android.arch.lifecycle:livedata:1.1.1@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/livedata-1.1.1.aar/2dafc25bec144912cd7baa2b06103bf0/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/livedata-1.1.1.aar/2dafc25bec144912cd7baa2b06103bf0/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: android.arch.lifecycle:livedata-core:1.1.1@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/livedata-core-1.1.1.aar/51cf83ab2bb2c1ff34397b3858b71eff/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/livedata-core-1.1.1.aar/51cf83ab2bb2c1ff34397b3858b71eff/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: android.arch.lifecycle:runtime:1.1.1@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.1.1.aar/65f9fbf2d6dae92de8d9ea1f65ddbe69/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.1.1.aar/65f9fbf2d6dae92de8d9ea1f65ddbe69/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: android.arch.lifecycle:viewmodel:1.1.1@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/viewmodel-1.1.1.aar/c6db8ff658b2b8de4a22f78c823055bf/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/viewmodel-1.1.1.aar/c6db8ff658b2b8de4a22f78c823055bf/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_alibaba_arouter_annotation_1_0_6.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: com.alibaba:arouter-annotation:1.0.6">
    <CLASSES>
      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.alibaba/arouter-annotation/1.0.6/667fa943838b31d3a94cce6fe9e0b786cd9445ae/arouter-annotation-1.0.6.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_alibaba_arouter_api_1_4_1_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.alibaba:arouter-api:1.4.1@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/arouter-api-1.4.1.aar/015e319478c0f7958e0441563ac7d56a/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/arouter-api-1.4.1.aar/015e319478c0f7958e0441563ac7d56a/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:animated-vector-drawable:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/animated-vector-drawable-28.0.0.aar/743c9ae12b78dc2ed55955f6c0e0d327/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/animated-vector-drawable-28.0.0.aar/743c9ae12b78dc2ed55955f6c0e0d327/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:appcompat-v7:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0.aar/af1e5516ccbf3c62a3eb96e82dd2f042/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0.aar/af1e5516ccbf3c62a3eb96e82dd2f042/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0.aar/af1e5516ccbf3c62a3eb96e82dd2f042/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:asynclayoutinflater:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/asynclayoutinflater-28.0.0.aar/fc1d79774b572c7edc6165c2044bc836/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/asynclayoutinflater-28.0.0.aar/fc1d79774b572c7edc6165c2044bc836/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:cardview-v7:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/cardview-v7-28.0.0.aar/d08606ace6213f60bdd13cf318fcac05/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/cardview-v7-28.0.0.aar/d08606ace6213f60bdd13cf318fcac05/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_collections_28_0_0.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:collections:28.0.0">
    <CLASSES>
      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/collections/28.0.0/c1bcdade4d3cc2836130424a3f3e4182c666a745/collections-28.0.0.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.constraint:constraint-layout:1.1.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/constraint-layout-1.1.0.aar/1d8b7a5d9e326d5497f2d8c4e7d7f00a/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/constraint-layout-1.1.0.aar/1d8b7a5d9e326d5497f2d8c4e7d7f00a/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_1_0.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.0">
    <CLASSES>
      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support.constraint/constraint-layout-solver/1.1.0/931532e953a477f876f2de18c2e7f16eee01078f/constraint-layout-solver-1.1.0.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:coordinatorlayout:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/coordinatorlayout-28.0.0.aar/d6fd15962868e41da2f2d643faf7eedf/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/coordinatorlayout-28.0.0.aar/d6fd15962868e41da2f2d643faf7eedf/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/coordinatorlayout-28.0.0.aar/d6fd15962868e41da2f2d643faf7eedf/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:cursoradapter:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/cursoradapter-28.0.0.aar/9361a234a82258237d549852fa3b395e/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/cursoradapter-28.0.0.aar/9361a234a82258237d549852fa3b395e/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:customview:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/customview-28.0.0.aar/358ea5e98f1f69eb38944bd2ac523ac4/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/customview-28.0.0.aar/358ea5e98f1f69eb38944bd2ac523ac4/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:design:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/design-28.0.0.aar/2ef48b3aca247c9437a11bcb025e6060/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/design-28.0.0.aar/2ef48b3aca247c9437a11bcb025e6060/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/design-28.0.0.aar/2ef48b3aca247c9437a11bcb025e6060/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:documentfile:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/documentfile-28.0.0.aar/559c6031ec394a9e4c19d120e5fee401/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/documentfile-28.0.0.aar/559c6031ec394a9e4c19d120e5fee401/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:drawerlayout:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/drawerlayout-28.0.0.aar/db044f7318c1f1029be44dbf263c97ca/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/drawerlayout-28.0.0.aar/db044f7318c1f1029be44dbf263c97ca/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/drawerlayout-28.0.0.aar/db044f7318c1f1029be44dbf263c97ca/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:interpolator:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/interpolator-28.0.0.aar/8e57400c9ccf3285f7b4a03cbdc54ae8/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/interpolator-28.0.0.aar/8e57400c9ccf3285f7b4a03cbdc54ae8/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:loader:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/loader-28.0.0.aar/67a451e4b57e284303e25d6da1998e1b/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/loader-28.0.0.aar/67a451e4b57e284303e25d6da1998e1b/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:localbroadcastmanager:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/localbroadcastmanager-28.0.0.aar/63492ab9a82305c0fd760d4562357a82/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/localbroadcastmanager-28.0.0.aar/63492ab9a82305c0fd760d4562357a82/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:print:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/print-28.0.0.aar/e01cda6a4f1490f83e0e164212992f54/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/print-28.0.0.aar/e01cda6a4f1490f83e0e164212992f54/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/print-28.0.0.aar/e01cda6a4f1490f83e0e164212992f54/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:recyclerview-v7:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-28.0.0.aar/24421858359922ef9c9daa6635011ff2/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-28.0.0.aar/24421858359922ef9c9daa6635011ff2/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-28.0.0.aar/24421858359922ef9c9daa6635011ff2/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:slidingpanelayout:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/slidingpanelayout-28.0.0.aar/05b3dd8a9b8acf6a3cf18008b7b61034/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/slidingpanelayout-28.0.0.aar/05b3dd8a9b8acf6a3cf18008b7b61034/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:support-annotations:28.0.0">
    <CLASSES>
      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/28.0.0/ed73f5337a002d1fd24339d5fb08c2c9d9ca60d8/support-annotations-28.0.0.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:support-compat:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-28.0.0.aar/76ff6b44cfa7b874c02780054c242146/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-28.0.0.aar/76ff6b44cfa7b874c02780054c242146/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-28.0.0.aar/76ff6b44cfa7b874c02780054c242146/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:support-core-ui:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-28.0.0.aar/bded591d04c13b20403a46a77e5a9dbb/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-28.0.0.aar/bded591d04c13b20403a46a77e5a9dbb/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:support-core-utils:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-28.0.0.aar/0dbd2805f802b9d11f9e1855c46961c8/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-28.0.0.aar/0dbd2805f802b9d11f9e1855c46961c8/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:support-fragment:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-28.0.0.aar/8abac4bbb8af8a373b6a9ec06d51ea85/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-28.0.0.aar/8abac4bbb8af8a373b6a9ec06d51ea85/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-28.0.0.aar/8abac4bbb8af8a373b6a9ec06d51ea85/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:support-media-compat:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-28.0.0.aar/7af6a08473ce8027f47e2e6295b3d538/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-28.0.0.aar/7af6a08473ce8027f47e2e6295b3d538/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-28.0.0.aar/7af6a08473ce8027f47e2e6295b3d538/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:support-v4:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-28.0.0.aar/337cab79775309d0bf2cbe9c1c583100/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-28.0.0.aar/337cab79775309d0bf2cbe9c1c583100/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:support-vector-drawable:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-vector-drawable-28.0.0.aar/c35f9e81b033c59ee523dc9fe6b221a7/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-vector-drawable-28.0.0.aar/c35f9e81b033c59ee523dc9fe6b221a7/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:swiperefreshlayout:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/swiperefreshlayout-28.0.0.aar/89aeeeef975e5446c20b20f8b81d9549/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/swiperefreshlayout-28.0.0.aar/89aeeeef975e5446c20b20f8b81d9549/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/swiperefreshlayout-28.0.0.aar/89aeeeef975e5446c20b20f8b81d9549/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.test.espresso:espresso-core:2.2.2@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-core-2.2.2.aar/30c8156779e315641ac9677bede0aec2/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-core-2.2.2.aar/30c8156779e315641ac9677bede0aec2/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_3_0_2_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.test.espresso:espresso-core:3.0.2@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-core-3.0.2.aar/08753eefdd4f9556e2ec7ff764778aaf/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-core-3.0.2.aar/08753eefdd4f9556e2ec7ff764778aaf/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.test.espresso:espresso-idling-resource:2.2.2@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-idling-resource-2.2.2.aar/bce9e2e0c0ec2d3973e11b9515b39511/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-idling-resource-2.2.2.aar/bce9e2e0c0ec2d3973e11b9515b39511/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.test.espresso:espresso-idling-resource:3.0.2@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-idling-resource-3.0.2.aar/f87341fd3005a2edd8f630f762a57e2e/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-idling-resource-3.0.2.aar/f87341fd3005a2edd8f630f762a57e2e/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.test:exposed-instrumentation-api-publish:0.5@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/exposed-instrumentation-api-publish-0.5.aar/bc62c7cb534a39bd9062c0d2fb1e4343/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/exposed-instrumentation-api-publish-0.5.aar/bc62c7cb534a39bd9062c0d2fb1e4343/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_monitor_1_0_2_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.test:monitor:1.0.2@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/monitor-1.0.2.aar/84cf6733468782b268ac8a1229f0c3c4/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/monitor-1.0.2.aar/84cf6733468782b268ac8a1229f0c3c4/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_rules_0_5_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.test:rules:0.5@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rules-0.5.aar/3d25ed1044033d691e695a547f283ae0/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rules-0.5.aar/3d25ed1044033d691e695a547f283ae0/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rules-0.5.aar/3d25ed1044033d691e695a547f283ae0/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_runner_0_5_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.test:runner:0.5@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-0.5.aar/bd213aa88f7431826e6e6dd5e32cf256/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-0.5.aar/bd213aa88f7431826e6e6dd5e32cf256/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-0.5.aar/bd213aa88f7431826e6e6dd5e32cf256/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_test_runner_1_0_2_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support.test:runner:1.0.2@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-1.0.2.aar/1d2f271d3bd18dc681ea132350e497ed/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-1.0.2.aar/1d2f271d3bd18dc681ea132350e497ed/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:transition:28.0.0@aar">
    <ANNOTATIONS>
      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/transition-28.0.0.aar/6c6e415c4d5e81dafe1aac0c92b8d6e4/annotations.zip!/" />
    </ANNOTATIONS>
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/transition-28.0.0.aar/6c6e415c4d5e81dafe1aac0c92b8d6e4/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/transition-28.0.0.aar/6c6e415c4d5e81dafe1aac0c92b8d6e4/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:versionedparcelable:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/versionedparcelable-28.0.0.aar/9d982810dfe7b7c0aa44a2acc7b6c371/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/versionedparcelable-28.0.0.aar/9d982810dfe7b7c0aa44a2acc7b6c371/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml
New file
@@ -0,0 +1,10 @@
<component name="libraryTable">
  <library name="Gradle: com.android.support:viewpager:28.0.0@aar">
    <CLASSES>
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/viewpager-28.0.0.aar/994f7681272756449a4ecf21cb58d2d5/res" />
      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/viewpager-28.0.0.aar/994f7681272756449a4ecf21cb58d2d5/AndroidManifest.xml" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: com.google.code.findbugs:jsr305:2.0.1">
    <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>
AndroidOpenDemo/.idea/libraries/Gradle__com_google_code_gson_gson_2_8_8.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: com.google.code.gson:gson:2.8.8">
    <CLASSES>
      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.8/431fc3cbc0ff81abdbfde070062741089c3ba874/gson-2.8.8.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: com.squareup:javawriter:2.1.1">
    <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 />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__javax_annotation_javax_annotation_api_1_2.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: javax.annotation:javax.annotation-api:1.2">
    <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 />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: javax.inject:javax.inject:1">
    <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 />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__junit_junit_4_12.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: junit:junit:4.12">
    <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 />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: net.sf.kxml:kxml2:2.3.0">
    <CLASSES>
      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.kxml/kxml2/2.3.0/ccbc77a5fd907ef863c29f3596c6f54ffa4e9442/kxml2-2.3.0.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__org_greenrobot_eventbus_3_0_0.xml
New file
@@ -0,0 +1,11 @@
<component name="libraryTable">
  <library name="Gradle: org.greenrobot:eventbus:3.0.0">
    <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>
AndroidOpenDemo/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: org.hamcrest:hamcrest-core:1.3">
    <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 />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: org.hamcrest:hamcrest-integration:1.3">
    <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 />
  </library>
</component>
AndroidOpenDemo/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml
New file
@@ -0,0 +1,9 @@
<component name="libraryTable">
  <library name="Gradle: org.hamcrest:hamcrest-library:1.3">
    <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 />
  </library>
</component>
AndroidOpenDemo/.idea/modules.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/.idea/modules/LCAndroidSDKDemo.iml" filepath="$PROJECT_DIR$/.idea/modules/LCAndroidSDKDemo.iml" />
      <module fileurl="file://$PROJECT_DIR$/.idea/modules/DeviceAddModule/LCAndroidSDKDemo.DeviceAddModule.iml" filepath="$PROJECT_DIR$/.idea/modules/DeviceAddModule/LCAndroidSDKDemo.DeviceAddModule.iml" />
      <module fileurl="file://$PROJECT_DIR$/.idea/modules/app/LCAndroidSDKDemo.app.iml" filepath="$PROJECT_DIR$/.idea/modules/app/LCAndroidSDKDemo.app.iml" />
      <module fileurl="file://$PROJECT_DIR$/.idea/modules/third-zxing/LCAndroidSDKDemo.third-zxing.iml" filepath="$PROJECT_DIR$/.idea/modules/third-zxing/LCAndroidSDKDemo.third-zxing.iml" />
    </modules>
  </component>
</project>
AndroidOpenDemo/.idea/modules/DeviceAddModule/LCAndroidSDKDemo.DeviceAddModule.iml
@@ -22,7 +22,6 @@
        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res;file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res/lc;file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res/lc/drawable;file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res/lc/drawable-hdpi;file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res/lc/drawable-xhdpi;file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res/lc/drawable-xxhdpi;file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res/lc/anim;file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res/lc/color;file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res/lc/values;file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res/lc/values-en;file://$MODULE_DIR$/../../../DeviceAddModule/src/main/res/lc/layout;file://$MODULE_DIR$/../../../DeviceAddModule/src/debug/res;file://$MODULE_DIR$/../../../DeviceAddModule/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../DeviceAddModule/build/generated/res/resValues/debug" />
        <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../DeviceAddModule/src/androidTest/res;file://$MODULE_DIR$/../../../DeviceAddModule/src/androidTestDebug/res;file://$MODULE_DIR$/../../../DeviceAddModule/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../DeviceAddModule/build/generated/res/resValues/androidTest/debug" />
        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
        <option name="PROJECT_TYPE" value="1" />
      </configuration>
    </facet>
  </component>
@@ -57,7 +56,8 @@
    <orderEntry type="library" name="Gradle: ./DeviceAddModule/libs/imageload4dh.jar" level="project" />
    <orderEntry type="library" name="Gradle: ./DeviceAddModule/libs/lechangeSDK.jar" level="project" />
    <orderEntry type="library" name="Gradle: ./third-zxing/libs/zxing_3.3.0.jar" level="project" />
    <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.1" level="project" />
    <orderEntry type="library" name="Gradle: org.greenrobot:eventbus:3.0.0" level="project" />
    <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.8" level="project" />
    <orderEntry type="library" name="Gradle: com.alibaba:arouter-annotation:1.0.6" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:collections:28.0.0" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.1" level="project" />
AndroidOpenDemo/.idea/modules/LCAndroidSDKDemo.iml
New file
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="LCAndroidSDKDemo" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="java-gradle" name="Java-Gradle">
      <configuration>
        <option name="BUILDABLE" value="false" />
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager">
    <exclude-output />
    <content url="file://$MODULE_DIR$/../..">
      <excludeFolder url="file://$MODULE_DIR$/../../.gradle" />
      <excludeFolder url="file://$MODULE_DIR$/../../build" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>
AndroidOpenDemo/.idea/modules/app/LCAndroidSDKDemo.app.iml
@@ -22,7 +22,6 @@
        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/main/res;file://$MODULE_DIR$/../../../app/src/debug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug" />
        <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/androidTest/res;file://$MODULE_DIR$/../../../app/src/androidTestDebug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/androidTest/debug" />
        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
        <option name="PROJECT_TYPE" value="1" />
      </configuration>
    </facet>
  </component>
@@ -57,32 +56,15 @@
    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner:1.0.2@aar" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:monitor:1.0.2@aar" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource:3.0.2@aar" level="project" />
    <orderEntry type="library" name="Gradle: ./DeviceAddModule/libs/imageload4dh.jar" level="project" />
    <orderEntry type="library" name="Gradle: ./third-zxing/libs/zxing_3.3.0.jar" level="project" />
    <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.1" level="project" />
    <orderEntry type="library" name="Gradle: com.alibaba:arouter-annotation:1.0.6" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:collections:28.0.0" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.1" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.core:common:1.1.1" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-annotations:28.0.0" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.0" level="project" />
    <orderEntry type="library" name="Gradle: ./../../../.gradle/caches/transforms-1/files-1.1/PullToRefreshListView-release.aar/1232b6310601f161610e5eb82d661087" level="project" />
    <orderEntry type="library" name="Gradle: ./../../../.gradle/caches/transforms-1/files-1.1/DHMobileToolset-1.1.1.aar/f7d8eb2f1804db3345ec5a537e5ec0db" level="project" />
    <orderEntry type="library" name="Gradle: ./../../../.gradle/caches/transforms-1/files-1.1/DHScanner-1.0.7.aar/0ecd90b9bed2580cb7702e452029b5fe" level="project" />
    <orderEntry type="library" name="Gradle: com.alibaba:arouter-api:1.4.1@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-v4:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:design:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:recyclerview-v7:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:appcompat-v7:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:cardview-v7:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout:1.1.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-media-compat:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-fragment:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-core-ui:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-core-utils:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:transition:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:loader:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:viewpager:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:coordinatorlayout:28.0.0@aar" level="project" />
@@ -93,17 +75,15 @@
    <orderEntry type="library" name="Gradle: com.android.support:asynclayoutinflater:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-compat:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:versionedparcelable:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:cursoradapter:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime:1.1.1@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:documentfile:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:localbroadcastmanager:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:print:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:interpolator:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:cursoradapter:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:viewmodel:1.1.1@aar" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata:1.1.1@aar" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-core:1.1.1@aar" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.core:runtime:1.1.1@aar" level="project" />
    <orderEntry type="module" module-name="LCAndroidSDKDemo.DeviceAddModule" />
    <orderEntry type="module" module-name="LCAndroidSDKDemo.third-zxing" />
  </component>
</module>
AndroidOpenDemo/.idea/modules/third-zxing/LCAndroidSDKDemo.third-zxing.iml
New file
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":third-zxing" external.linked.project.path="$MODULE_DIR$/../../../third-zxing" external.root.project.path="$MODULE_DIR$/../../.." external.system.id="GRADLE" external.system.module.group="LCAndroidSDKDemo" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="android-gradle" name="Android-Gradle">
      <configuration>
        <option name="GRADLE_PROJECT_PATH" value=":third-zxing" />
        <option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.2.1" />
        <option name="LAST_KNOWN_AGP_VERSION" value="3.2.1" />
      </configuration>
    </facet>
    <facet type="android" name="Android">
      <configuration>
        <option name="SELECTED_BUILD_VARIANT" value="debug" />
        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
        <afterSyncTasks>
          <task>generateDebugSources</task>
        </afterSyncTasks>
        <option name="ALLOW_USER_CONFIGURATION" value="false" />
        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../third-zxing/src/main/res;file://$MODULE_DIR$/../../../third-zxing/src/debug/res;file://$MODULE_DIR$/../../../third-zxing/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../third-zxing/build/generated/res/resValues/debug" />
        <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../third-zxing/src/androidTest/res;file://$MODULE_DIR$/../../../third-zxing/src/androidTestDebug/res;file://$MODULE_DIR$/../../../third-zxing/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../third-zxing/build/generated/res/resValues/androidTest/debug" />
        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
        <option name="PROJECT_TYPE" value="1" />
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
    <output url="file://$MODULE_DIR$/../../../third-zxing/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
    <output-test url="file://$MODULE_DIR$/../../../third-zxing/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
    <exclude-output />
    <content url="file://$MODULE_DIR$/../../../third-zxing">
      <sourceFolder url="file://$MODULE_DIR$/../../../third-zxing/build/generated/res/resValues/debug" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/../../../third-zxing/build/generated/res/rs/debug" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/../../../third-zxing/build/generated/source/apt/debug" isTestSource="false" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/../../../third-zxing/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/../../../third-zxing/build/generated/source/rs/debug" isTestSource="false" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/../../../third-zxing/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/../../../third-zxing/src/main/res" type="java-resource" />
      <excludeFolder url="file://$MODULE_DIR$/../../../third-zxing/.gradle" />
      <excludeFolder url="file://$MODULE_DIR$/../../../third-zxing/build" />
    </content>
    <orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core:2.2.2@aar" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules:0.5@aar" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner:0.5@aar" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource:2.2.2@aar" level="project" />
    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish:0.5@aar" level="project" />
    <orderEntry type="library" name="Gradle: ./third-zxing/libs/zxing_3.3.0.jar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:collections:28.0.0" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.1" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.core:common:1.1.1" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-annotations:28.0.0" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:appcompat-v7:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-fragment:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-core-ui:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-core-utils:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:loader:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:viewpager:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:coordinatorlayout:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:drawerlayout:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:slidingpanelayout:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:customview:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:swiperefreshlayout:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:asynclayoutinflater:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:support-compat:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:versionedparcelable:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:cursoradapter:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime:1.1.1@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:documentfile:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:localbroadcastmanager:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:print:28.0.0@aar" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:viewmodel:1.1.1@aar" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata:1.1.1@aar" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-core:1.1.1@aar" level="project" />
    <orderEntry type="library" name="Gradle: android.arch.core:runtime:1.1.1@aar" level="project" />
    <orderEntry type="library" name="Gradle: com.android.support:interpolator:28.0.0@aar" level="project" />
  </component>
</module>
AndroidOpenDemo/DeviceAddModule/.DS_Store
Binary files differ
AndroidOpenDemo/DeviceAddModule/libs/gson-2.8.8.jar
Binary files differ
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/DeviceAddActivity.java
@@ -499,6 +499,7 @@
            }
            mLoadingPopWindow = null;
        }
        EventBus.getDefault().post("backXamarin");
    }
    // 离线配网成功,返回上一级页面
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/LCDeviceEngine.java
@@ -39,6 +39,7 @@
    private Throwable throwable;
    public CommonParam commonParam;
    public String userId = "";
    private String homeId;
    public static LCDeviceEngine newInstance() {
        if (lcDeviceEngine == null) {
@@ -53,7 +54,7 @@
    public boolean init(CommonParam commonParam) throws Throwable {
        this.commonParam = commonParam;
        this.accessToken = "";
        this.accessToken = "St_0000c3e2e772d5f74bfca2d86eaa18a6";//为了低层空判断,当前token无效
        this.userId = "";
        this.sdkHasInit = false;
        if (commonParam == null) {
@@ -63,13 +64,15 @@
        commonParam.checkParam();
        //初始化参数
        initParam(commonParam);
        //获取开放平台token
        initToken();
        if (TextUtils.isEmpty(accessToken)) {
            throw throwable;
        if (!CONST.HOST.contains("hdlcontrol.com")) {
            //获取开放平台token
            initToken();
            if (TextUtils.isEmpty(accessToken)) {
                throw throwable;
            }
        }
        //组件初始化
        InitParams initParams = new InitParams(commonParam.getContext(), CONST.HOST.replace("https://", ""), accessToken);
        InitParams initParams = new InitParams(commonParam.getContext(), CONST.Envirment.OVERSEAS_PRO.url.replace("https://", ""), accessToken);
        LCOpenSDK_Api.initOpenApi(initParams);
        LCOpenSDK_DeviceInit.getInstance();
        sdkHasInit = true;
@@ -83,11 +86,12 @@
        //开启添加页面
        activity.startActivity(new Intent(commonParam.getContext(), DeviceAddActivity.class));
    }
    public void setSubAccessToken(String subAccessToken){
    public void setSubAccessToken(String subAccessToken) {
        this.subAccessToken = subAccessToken;
    }
    public boolean deviceOnlineChangeNet(Activity activity,DHDevice device, CurWifiInfo wifiInfo)  {
    public boolean deviceOnlineChangeNet(Activity activity, DHDevice device, CurWifiInfo wifiInfo) {
        if (!sdkHasInit) {
            return false;
        }
@@ -145,4 +149,11 @@
        ImageLoader.getInstance().init(config);
    }
    public String getHomeId() {
        return homeId == null ? "" : homeId;
    }
    public void setHomeId(String homeId) {
        this.homeId = homeId;
    }
}
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/model/DeviceAddModel.java
@@ -327,7 +327,7 @@
        new BusinessRunnable(handler) {
            @Override
            public void doBusiness() throws BusinessException {
                DeviceBindResult deviceBindResult = deviceAddService.userDeviceBind( sn, devPwd, DMS_TIMEOUT);
                DeviceBindResult deviceBindResult = deviceAddService.hdlUserDeviceBind( sn, devPwd, DMS_TIMEOUT);
                mDeviceAddInfo.setDeviceDefaultName(deviceBindResult.getDeviceName());
                mDeviceAddInfo.setBindStatus(deviceBindResult.getBindStatus());
                mDeviceAddInfo.setBindAcount(deviceBindResult.getUserAccount());
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/CONST.java
@@ -34,6 +34,8 @@
    //添加子账户权限
    public static String ADD_POLICY = "addPolicy";
    public static String INDEPENDENT_REGISTER  ="independentRegister";
    // URL地址
    public static String HOST = "";
    // 如果不知道appid,请登录open.lechange.com,开发者服务模块中创建应用
@@ -42,7 +44,7 @@
    public static String SECRET = "";
    public enum Envirment {
        CHINA_TEST("https://funcopenapi.lechange.cn:443"),
        CHINA_TEST("https://test-gz.hdlcontrol.com"),
        CHINA_PRO("https://openapi.lechange.cn:443"),
        OVERSEAS_TEST("https://openapifunc.easy4ip.com:443"),
        OVERSEAS_PRO("https://openapi.easy4ip.com:443");
@@ -58,4 +60,8 @@
        SECRET = secretKey;
        HOST = url;
    }
    public static boolean isHdlServer() {
        return HOST.contains("hdlcontrol.com");
    }
}
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/DeviceAddOpenApiManager.java
@@ -3,6 +3,7 @@
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.mm.android.deviceaddmodule.LCDeviceEngine;
import com.mm.android.deviceaddmodule.device_wifi.CurWifiInfo;
import com.mm.android.deviceaddmodule.device_wifi.WifiConfig;
@@ -19,6 +20,7 @@
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class DeviceAddOpenApiManager {
    private static int TIME_OUT = 10 * 1000;
@@ -106,6 +108,24 @@
        HashMap<String, Object> paramsMap = new HashMap<String, Object>();
        paramsMap.put("token", bindDeviceData.data.token);
        paramsMap.put("deviceId", bindDeviceData.data.deviceId);
        JsonObject json = HttpSend.execute(paramsMap, CONST.METHOD_BINDDEVICE,DMS_TIME_OUT);
        BindDeviceData.Response response = new BindDeviceData.Response();
        response.parseData(json);
        return response;
    }
    /**
     * 绑定设备
     *
     * @param bindDeviceData
     * @return
     * @throws BusinessException
     */
    public static BindDeviceData.Response hdlUserDeviceBind(BindDeviceData bindDeviceData) throws BusinessException {
        HashMap<String, Object> paramsMap = new HashMap<String, Object>();
        paramsMap.put("extDevId", bindDeviceData.data.deviceId);
        paramsMap.put("spk","security.ipcam.imou");
        paramsMap.put("sid","8D00708PAGA01ED");
        paramsMap.put("code", bindDeviceData.data.code);
        JsonObject json = HttpSend.execute(paramsMap, CONST.METHOD_BINDDEVICE,DMS_TIME_OUT);
        BindDeviceData.Response response = new BindDeviceData.Response();
@@ -241,9 +261,15 @@
        return  json.get("openid").getAsString();
    }
    public static boolean addPolicy(AddDevicePolicyData req)throws BusinessException{
        String jsonParam = new Gson().toJson(req);
        HttpSend.execute(jsonParam, CONST.ADD_POLICY,TIME_OUT);
        return  true;
    public static boolean addPolicy(AddDevicePolicyData req)throws BusinessException {
//        String jsonParam = new Gson().toJson(req);
//        HttpSend.execute(jsonParam, CONST.ADD_POLICY,TIME_OUT);
//        return  true;
//        final Map<String, Object> map = new Gson().fromJson(new Gson().toJson(req), new TypeToken<Map<String, Object>>() {
//        }.getType());
//
//        JsonObject json = HttpSend.execute(map, CONST.CREATE_SUB_ACCOUNT, TIME_OUT);
        return true;
    }
}
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HDLMD5Utils.java
New file
@@ -0,0 +1,183 @@
package com.mm.android.deviceaddmodule.openapi;
import java.io.File;
import java.io.FileInputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
 * Created by Tong on 2021/11/3.
 */
public final class HDLMD5Utils {
    /**
     * MD5转字符串
     */
    public static String encodeMD5(String s) {
        try {
            MessageDigest digest = MessageDigest.getInstance("MD5");
            digest.update(s.getBytes("UTF-8"));
            byte[] messageDigest = digest.digest();
            return toHexString(messageDigest);
        } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return "";
    }
    private static String toHexString(byte[] keyData) {
        if (keyData == null) {
            return null;
        }
        int expectedStringLen = keyData.length * 2;
        StringBuilder sb = new StringBuilder(expectedStringLen);
        for (byte keyDatum : keyData) {
            String hexStr = Integer.toString(keyDatum & 0x00FF, 16);
            if (hexStr.length() == 1) {
                hexStr = "0" + hexStr;
            }
            sb.append(hexStr);
        }
        return sb.toString();
    }
    /**
     * MD5转字符串
     * 额外值
     */
    public static String encodeMD52(String s) {
        char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
        try {
            byte[] btInput = s.getBytes("utf-8");
            MessageDigest digest = MessageDigest.getInstance("MD5");
            digest.update(btInput);
            byte[] md = digest.digest();
            int j = md.length;
            char[] str = new char[j * 2];
            int k = 0;
            for (byte byte0 : md) {
                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(str);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    /**
     * MD5文件转字符串
     */
    public static String encodeMD5(File f) {
        if (!f.isFile()) {
            return null;
        }
        MessageDigest digest;
        byte[] buffer = new byte[1024];
        int len;
        try {
            digest = MessageDigest.getInstance("MD5");
            FileInputStream in = new FileInputStream(f);
            while ((len = in.read(buffer, 0, 1024)) != -1) {
                digest.update(buffer, 0, len);
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        BigInteger bigInt = new BigInteger(1, digest.digest());
        return bigInt.toString(16);
    }
    /**
     * MD5文件转字符串
     */
    public static String encodeMD5(byte[] f) {
        MessageDigest digest;
        try {
            digest = MessageDigest.getInstance("MD5");
            digest.update(f);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        BigInteger bigInt = new BigInteger(1, digest.digest());
        return bigInt.toString(16);
    }
    public final static String md5(String plainText) {
// 返回字符串
        String md5Str = null;
        try {
// 操作字符串
            StringBuffer buf = new StringBuffer();
            MessageDigest md =
                    MessageDigest.getInstance("MD5");
// 添加要进行计算摘要的信息,使用 plainText 的 byte
            md.update(plainText.getBytes());
// 计算出摘要,完成哈希计算。
            byte b[] = md.digest();
            int i;
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0) {
                    i += 256;
                }
                if (i < 16) {
                    buf.append("0");
                }
// 将整型 十进制 i
                buf.append(Integer.toHexString(i));
            }
// 32位的加密
            md5Str = buf.toString();
// 16位的加密
// md5Str =  buf.toString().md5Strstring(8,24);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return md5Str;
    }
}
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HttpClient.java
@@ -1,11 +1,26 @@
package com.mm.android.deviceaddmodule.openapi;
import android.net.Uri;
import android.text.TextUtils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import com.mm.android.deviceaddmodule.LCDeviceEngine;
import com.mm.android.deviceaddmodule.mobilecommon.utils.LogUtil;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
public class HttpClient {
@@ -38,6 +53,7 @@
            conn.setUseCaches(false);
            conn.setInstanceFollowRedirects(true);
            conn.setRequestProperty("Content-Type", contentType);
            conn.setRequestProperty("Authorization","Bearer "+ LCDeviceEngine.newInstance().accessToken);
            conn.connect();
            outputStream = conn.getOutputStream();
            outputStream.write(paramStr.getBytes());
@@ -85,4 +101,85 @@
        }
        return resultData;
    }
    /**
     * 需要按字母排序
     *
     * @param json 所有字段使用urlParameter拼接,除了appSecret
     */
    public static String getSign(JsonObject json, String appSecret) {
        String builder = jsonToUrlParameter(json) +
                appSecret;
        return HDLMD5Utils.encodeMD5(builder);
    }
    private static JsonObject getBodyJson(Map<String,Object> map) {
        JsonObject object = new JsonObject();
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            object.addProperty(entry.getKey(), entry.getValue().toString());
        }
        return object;
    }
    /**
     * 添加sign字段
     */
    public static JsonObject encrypt(Map<String,Object> map ) {
        final String timestamp = String.valueOf(System.currentTimeMillis());
        final JsonObject json = getBodyJson(map);
        if (json != null) {
            json.addProperty("appKey", CONST.APPID);
            json.addProperty("timestamp", timestamp);
            json.addProperty("sign", getSign(json, CONST.SECRET));
        }
        return json;
    }
    private static String jsonToUrlParameter(JsonObject object) {
        final Map<String, String> map = new Gson().fromJson(object, new TypeToken<Map<String, String>>() {
        }.getType());
        final Uri.Builder builder = new Uri.Builder();
        List<String> list = new ArrayList<>(map.keySet());
        Collections.sort(list);
        for (String key : list) {
            //判断当前值是否需要参与签名,保持跟云端一致
            if (IfValueNeedSign(map.get(key))) {
                builder.appendQueryParameter(key, map.get(key));
//                HDLSDKLog.e("要签名:" + key + " :" + map.get(key));
            } else {
//                HDLSDKLog.e("不需要签名:" + key + " :" + map.get(key));
            }
        }
        return builder.build().getQuery();
    }
    /**
     * 判断当前值是否需要参与签名,保持跟云端一致
     * 空字符串不参与
     * 数组,集合,对象不参与
     *
     * @param valueStr
     * @return
     */
    private static boolean IfValueNeedSign(String valueStr) {
        if (TextUtils.isEmpty(valueStr))
            return false;
        final char[] strChar = valueStr.substring(0, 1).toCharArray();
        final char firstChar = strChar[0];
        //System.out.println("getJSONType firstChar = "+firstChar);
        if (firstChar != '{' && firstChar != '[')
            return true;
        return false;
    }
}
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HttpSend.java
@@ -1,17 +1,24 @@
package com.mm.android.deviceaddmodule.openapi;
import android.text.TextUtils;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import com.mm.android.deviceaddmodule.LCDeviceEngine;
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.BusinessException;
import com.mm.android.deviceaddmodule.mobilecommon.utils.LogUtil;
import com.mm.android.deviceaddmodule.mobilecommon.utils.MD5Helper;
import org.apache.http.conn.ConnectTimeoutException;
import org.json.JSONObject;
import java.io.IOException;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.URLDecoder;
import java.net.UnknownHostException;
import java.net.UnknownServiceException;
import java.util.HashMap;
@@ -26,13 +33,21 @@
    public static JsonObject execute(Map<String, Object> paramsMap, String method,int timeOut) throws BusinessException {
        Map<String, Object> map = paramsInit(paramsMap);
        // 返回json
        JsonObject jsonObj = doPost(CONST.HOST + "/openapi/" + method, map,timeOut);
        LogUtil.debugLog(TAG, "url::"+method+"\n"+"response result:" + jsonObj.toString());
        if (jsonObj == null) {
            throw new BusinessException("openApi response is null");
        JsonObject jsonResult = null;
        if (CONST.isHdlServer()) {
            if (method.equals("bindDevice")) {
                jsonResult = doPost(CONST.HOST + "/home-wisdom/app/device/independentRegister", map, timeOut);
            } else {
                jsonResult = doPost(CONST.HOST + "/home-wisdom/imou/openapi/" + method, map, timeOut);
            }
        } else {
            jsonResult = doPost(CONST.HOST + "/openapi/" + method, map, timeOut);
            if (jsonResult == null) {
                throw new BusinessException("openApi response is null");
            }
            jsonResult = jsonResult.getAsJsonObject("result");
        }
        JsonObject jsonResult = jsonObj.getAsJsonObject("result");
        if (jsonResult == null) {
            throw new BusinessException("openApi response is null");
        }
@@ -41,54 +56,56 @@
            String msg = jsonResult.get("msg").getAsString();
            throw new BusinessException(code + msg);
        }
        JsonObject jsonData = new JsonObject();
        try {
            JsonObject jsonData = jsonResult.getAsJsonObject("data");
            if (jsonData ==null){
                jsonData=new JsonObject();
            jsonData = jsonResult.getAsJsonObject("data");
            if (jsonData == null) {
                jsonData = new JsonObject();
            }
            return jsonData;
        } catch (Throwable e) {
            BusinessException businessException = new BusinessException(e);
            throw businessException;
//            BusinessException businessException = new BusinessException(e);
//            throw businessException;
        }
        return jsonData;
    }
    public static JsonObject execute(String json, String method,int timeOut) throws BusinessException {
        // 返回json
        LogUtil.debugLog(TAG, "request result:" + json.toString());
        JsonObject jsonObj = doPost(CONST.HOST + "/openapi/" + method, json,timeOut);
        LogUtil.debugLog(TAG, "URL::"+method+"\n"+"response result:" + jsonObj.toString());
        if (jsonObj == null) {
            throw new BusinessException("openApi response is null");
        }
        JsonObject jsonResult = jsonObj.getAsJsonObject("result");
        if (jsonResult == null) {
            throw new BusinessException("openApi response is null");
        }
        String code = jsonResult.get("code").getAsString();
        if (!"0".equals(code)) {
            String msg = jsonResult.get("msg").getAsString();
            throw new BusinessException(code + msg);
        }
        try {
            JsonObject jsonData = jsonResult.getAsJsonObject("data");
            if (jsonData ==null){
                jsonData=new JsonObject();
            }
            return jsonData;
        } catch (Throwable e) {
            BusinessException businessException = new BusinessException(e);
            throw businessException;
        }
    }
    private static JsonObject doPost(String url, Map<String, Object> map, int timeOut) throws BusinessException {
        Gson gson = new Gson();
        String json = gson.toJson(map);
        JsonObject jsonObject = new JsonObject();
        String json;
        JsonObject jsonObject;
        if(CONST.isHdlServer()) {
            map.put("homeId", LCDeviceEngine.newInstance().getHomeId());
            if (map.containsKey("params")) {
                Map<String, Object> tempMap = (Map<String, Object>) map.get("params");
                map.remove("params");
                map.remove("id");
                map.remove("system");
                for (Map.Entry<String, Object> temp : tempMap.entrySet()) {
                    if ("page".equals(temp.getKey())) {
                        map.put("pageNo", temp.getValue());
                    }
                    else {
                        if("token".equals(temp.getKey())){
                            continue;
                        }
                        map.put(temp.getKey(), temp.getValue());
                    }
                }
            }
            json = gson.toJson(HttpClient.encrypt(map));
        }else{
            json = gson.toJson(map);
        }
        try {
            LogUtil.debugLog(TAG, "reqest: " + url + " data:" + json.toString());
            LogUtil.debugLog(TAG, "reqest: " + url + " data:" + json);
            String openApi = HttpClient.post(url, json, "application/json", "OpenApi",timeOut);
            LogUtil.debugLog(TAG, "返回结果: \r\n"  + openApi);
            jsonObject =  new JsonParser().parse(openApi).getAsJsonObject();
        } catch (IOException e) {
            BusinessException b = new BusinessException(e);
@@ -106,28 +123,6 @@
        return jsonObject;
    }
    private static JsonObject doPost(String url, String json, int timeOut) throws BusinessException {
        Gson gson = new Gson();
        JsonObject jsonObject = new JsonObject();
        try {
            LogUtil.debugLog(TAG, "reqest: " + url + " data:" + json.toString());
            String openApi = HttpClient.post(url, json, "application/json", "OpenApi",timeOut);
            jsonObject =  new JsonParser().parse(openApi).getAsJsonObject();
        } catch (IOException e) {
            BusinessException b = new BusinessException(e);
            if (e instanceof ConnectTimeoutException || e instanceof SocketTimeoutException
                    || e instanceof UnknownHostException
                    || e instanceof UnknownServiceException || e instanceof SSLException
                    || e instanceof SocketException) {
                b.errorDescription = "操作失败,请检查网络";
            }
            throw b;
        } catch (Throwable e) {
            BusinessException b = new BusinessException(e);
            throw b;
        }
        return jsonObject;
    }
    private static Map<String, Object> paramsInit(Map<String, Object> paramsMap) {
        long time = System.currentTimeMillis() / 1000;
@@ -152,4 +147,70 @@
        map.put("id", id);
        return map;
    }
//    public static JsonObject execute(String json, String method,int timeOut) throws BusinessException {
//        // 返回json
//        LogUtil.debugLog(TAG, "request result:" + json.toString());
//        JsonObject jsonResult=null;
//        if (CONST.isHdlServer()) {
//            JsonObject jsonObj = doPost(CONST.HOST + "/home-wisdom/imou/openapi/"  + method, json, timeOut);
//            LogUtil.debugLog(TAG, "URL::"+method+"\n"+"response result:" + jsonObj.toString());
//            if (jsonObj == null) {
//                throw new BusinessException("openApi response is null");
//            }
//            jsonResult = jsonObj;
//        }
//        else {
//            JsonObject jsonObj = doPost(CONST.HOST + "/openapi/" + method, json, timeOut);
//            LogUtil.debugLog(TAG, "URL::"+method+"\n"+"response result:" + jsonObj.toString());
//            if (jsonObj == null) {
//                throw new BusinessException("openApi response is null");
//            }
//            jsonResult = jsonObj.getAsJsonObject("result");
//        }
//
//        if (jsonResult == null) {
//            throw new BusinessException("openApi response is null");
//        }
//        String code = jsonResult.get("code").getAsString();
//        if (!"0".equals(code)) {
//            String msg = jsonResult.get("msg").getAsString();
//            throw new BusinessException(code + msg);
//        }
//        try {
//            JsonObject jsonData = jsonResult.getAsJsonObject("data");
//            if (jsonData ==null){
//                jsonData=new JsonObject();
//            }
//            return jsonData;
//        } catch (Throwable e) {
//            BusinessException businessException = new BusinessException(e);
//            throw businessException;
//        }
//    }
//    private static JsonObject doPost(String url, String json, int timeOut) throws BusinessException {
//        Gson gson = new Gson();
//        JsonObject jsonObject = new JsonObject();
//        try {
//            LogUtil.debugLog(TAG, "reqest: " + url + " data:" + json.toString());
//            String openApi = HttpClient.post(url, json, "application/json", "OpenApi",timeOut);
//            jsonObject =  new JsonParser().parse(openApi).getAsJsonObject();
//        } catch (IOException e) {
//            BusinessException b = new BusinessException(e);
//            if (e instanceof ConnectTimeoutException || e instanceof SocketTimeoutException
//                    || e instanceof UnknownHostException
//                    || e instanceof UnknownServiceException || e instanceof SSLException
//                    || e instanceof SocketException) {
//                b.errorDescription = "操作失败,请检查网络";
//            }
//            throw b;
//        } catch (Throwable e) {
//            BusinessException b = new BusinessException(e);
//            throw b;
//        }
//        return jsonObject;
//    }
}
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/p_bindsuccess/BindSuccessFragment.java
@@ -150,8 +150,8 @@
    public void completeAction() {
        //添加结束哪来回哪,把DeviceAddActivity结束掉
        EventBus.getDefault().post(new DeviceAddEvent(DeviceAddEvent.DESTROY_ACTION));
        //通知主页、我的设备列表自动刷新
        EventBus.getDefault().post(new CommonEvent(CommonEvent.DEVICE_ADD_SUCCESS_ACTION));
//        //通知主页、我的设备列表自动刷新  跨平台打包,不需要再通知了kaede
//        EventBus.getDefault().post(new CommonEvent(CommonEvent.DEVICE_ADD_SUCCESS_ACTION));
    }
    @Override
@@ -194,7 +194,8 @@
    public void onClick(View v) {
        int id = v.getId();
        if (id == R.id.tv_next) {
            mPresenter.modifyDevName();
            completeAction();
           //mPresenter.modifyDevName();
        }
    }
}
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/p_inputsn/ScanFragment.java
@@ -138,7 +138,7 @@
                PageNavigationHelper.gotoManualInputPage(this);
                return;
            }
            //扫描二维码--kaede
            mPresenter.getDeviceInfo(scanResult.getSn().trim(), scanResult.getMode());
        }
    }
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/service/DeviceAddService.java
@@ -127,6 +127,18 @@
        return deviceBindResult;
    }
    public DeviceBindResult hdlUserDeviceBind(String deviceId, String code, int timeout) throws BusinessException {
        BindDeviceData req=new BindDeviceData();
        req.data.deviceId = deviceId;
        req.data.code = code;
        BindDeviceData.Response response = DeviceAddOpenApiManager.hdlUserDeviceBind(req);
        DeviceBindResult deviceBindResult = new DeviceBindResult();
        deviceBindResult.setBindStatus(response.data.bindStatus);
        deviceBindResult.setDeviceName(response.data.deviceName);
        deviceBindResult.setUserAccount(response.data.userAccount);
        return deviceBindResult;
    }
    /**
     * openApi
     * 修改设备或者通道名,channelId为空则为修改设备名,不为空为修改通道名
AndroidOpenDemo/DeviceAddModule/src/main/res/layout/fragment_bind_success.xml
@@ -60,6 +60,7 @@
                    android:textSize="20dp" />
                <TextView
                    android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
@@ -69,6 +70,7 @@
                    android:textSize="15sp" />
                <com.mm.android.deviceaddmodule.mobilecommon.widget.ClearEditText
                    android:visibility="invisible"
                    android:id="@+id/device_name_input"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/add_device_common_edit_height"
AndroidOpenDemo/app/AndroidManifest123456.xml
File was deleted
AndroidOpenDemo/app/src/main/java/com/.DS_Store
Binary files differ
AndroidOpenDemo/app/src/main/java/com/callBack/IAddCamera.java
New file
@@ -0,0 +1,13 @@
package com.callBack;
public interface IAddCamera {
    void success(String deviceId);
    /**
     * 错误回调
     *
     * @param errMsg
     */
    void onError(String errMsg);
    void back();
}
AndroidOpenDemo/app/src/main/java/com/common/openapi/DeviceDetailService.java
@@ -292,4 +292,38 @@
        };
    }
    /**
     * 格式化SD卡
     * @param deviceId
     * @param iRecoverSDCardCallBack
     */
    public void recoverSDCard(final String deviceId, final IGetDeviceInfoCallBack.IRecoverSDCardCallBack iRecoverSDCardCallBack){
        final LCBusinessHandler handler = new LCBusinessHandler() {
            @Override
            public void handleBusiness(Message msg) {
                if (iRecoverSDCardCallBack == null) {
                    return;
                }
                if (msg.what == HandleMessageCode.HMC_SUCCESS) {
                    //成功
                    iRecoverSDCardCallBack.onSuccess("Success");
                } else {
                    //失败
                    iRecoverSDCardCallBack.onError(BusinessErrorTip.throwError(msg));
                }
            }
        };
        new BusinessRunnable(handler) {
            @Override
            public void doBusiness() throws BusinessException {
                try {
                    boolean b = DeviceInfoOpenApiManager.recoverSDCard(deviceId);
                    handler.obtainMessage(HandleMessageCode.HMC_SUCCESS, b).sendToTarget();
                } catch (BusinessException e) {
                    throw e;
                }
            }
        };
    }
}
AndroidOpenDemo/app/src/main/java/com/common/openapi/DeviceInfoOpenApiManager.java
@@ -14,11 +14,7 @@
import com.google.gson.JsonObject;
import com.mm.android.deviceaddmodule.LCDeviceEngine;
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.BusinessException;
import com.mm.android.deviceaddmodule.mobilecommon.common.Constants;
import com.mm.android.deviceaddmodule.mobilecommon.utils.PreferencesHelper;
import com.mm.android.deviceaddmodule.openapi.HttpSend;
import org.json.JSONObject;
import java.util.HashMap;
@@ -124,6 +120,14 @@
        paramsMap.put("token", LCDeviceEngine.newInstance().accessToken);
        paramsMap.put("deviceId", deviceId);
        HttpSend.execute(paramsMap, MethodConst.DELETE_DEVICE_PERMISSION,TIME_OUT);
        return true;
    }
    public static boolean recoverSDCard(String deviceId) throws BusinessException{
        HashMap<String, Object> paramsMap = new HashMap<String, Object>();
        paramsMap.put("token", LCDeviceEngine.newInstance().accessToken);
        paramsMap.put("deviceId", deviceId);
        HttpSend.execute(paramsMap, MethodConst.RECOVER_SDCARD,TIME_OUT);
        return true;
    }
@@ -240,7 +244,7 @@
        paramsMap.put("channelId", cloudRecordsData.data.channelId);
        paramsMap.put("beginTime", cloudRecordsData.data.beginTime);
        paramsMap.put("endTime", cloudRecordsData.data.endTime);
        paramsMap.put("nextRecordId", cloudRecordsData.data.nextRecordId);
//        paramsMap.put("nextRecordId", cloudRecordsData.data.nextRecordId);
        paramsMap.put("count", cloudRecordsData.data.count);
        JsonObject json = HttpSend.execute(paramsMap, MethodConst.METHOD_GET_CLOUND_RECORDS,TIME_OUT);
        CloudRecordsData.Response response = new CloudRecordsData.Response();
AndroidOpenDemo/app/src/main/java/com/common/openapi/IGetDeviceInfoCallBack.java
@@ -214,6 +214,22 @@
        void onError(Throwable throwable);
    }
    public interface IRecoverSDCardCallBack {
        /**
         * 成功
         *
         * @param result
         */
        void onSuccess(String result);
        /**
         * 错误回调
         *
         * @param throwable
         */
        void onError(Throwable throwable);
    }
}
AndroidOpenDemo/app/src/main/java/com/common/openapi/MethodConst.java
@@ -38,6 +38,8 @@
    public static String DELETE_DEVICE_PERMISSION = "deleteDevicePermission";
    public static String RECOVER_SDCARD = "recoverSDCard";
    public static String SD_STATUE_QUERY = "deviceSdcardStatus";
    public static String GET_DEVICE_CLOUD = "getDeviceCloud";
AndroidOpenDemo/app/src/main/java/com/hdl/HdlToLc.java
File was deleted
AndroidOpenDemo/app/src/main/java/com/lechange/demo/.DS_Store
Binary files differ
AndroidOpenDemo/app/src/main/java/com/lechange/demo/App.java
@@ -1,6 +1,7 @@
package com.lechange.demo;
import android.app.Application;
import android.content.Intent;
import com.common.openapi.ClassInstanceManager;
import com.lechange.demo.tools.MediaPlayHelper;
@@ -13,8 +14,7 @@
//        ARouter.openDebug();
//        ARouter.openLog();
//        ARouter.init(this);
        MediaPlayHelper.initContext(getApplicationContext());
        ClassInstanceManager.newInstance().init(this);
//        MediaPlayHelper.initContext(getApplicationContext());
//        ClassInstanceManager.newInstance().init(this);
    }
}
AndroidOpenDemo/app/src/main/java/com/lechange/demo/ui/DeviceDetailMainFragment.java
@@ -55,6 +55,7 @@
    private IGetDeviceInfoCallBack.IModifyDeviceName modifyNameListener;
    private String fromWhere;
    private TextView tvDeploymentTip;
    private TextView tvFormat_sd;
    public static DeviceDetailMainFragment newInstance() {
        DeviceDetailMainFragment fragment = new DeviceDetailMainFragment();
@@ -92,11 +93,13 @@
        tvDeviceVersion = view.findViewById(R.id.tv_device_version);
        tvCurrentWifi = view.findViewById(R.id.tv_current_wifi);
        rlCurWifi = view.findViewById(R.id.rl_cur_wifi);
        tvFormat_sd =view.findViewById(R.id.tvFormat_sd);
        rlDeployment.setOnClickListener(this);
        rlDetele.setOnClickListener(this);
        rlDeviceDetail.setOnClickListener(this);
        rlCurWifi.setOnClickListener(this);
        tvFormat_sd.setOnClickListener(this);
        DeviceDetailActivity deviceDetailActivity = (DeviceDetailActivity) getActivity();
        deviceDetailActivity.tvTitle.setText(getResources().getString(R.string.lc_demo_device_detail_title));
        if (arguments == null) {
@@ -271,6 +274,25 @@
            deviceDetailService.unBindDevice(deviceUnBindData, this);*/
            deviceDetailService.deletePermission(deviceListBean.deviceId,null,this);
        }
        else if(id==R.id.tvFormat_sd){
            deviceDetailActivity.rlLoading.setVisibility(View.VISIBLE);
            DeviceDetailService deviceDetailService = ClassInstanceManager.newInstance().getDeviceDetailService();
         /*   DeviceUnBindData deviceUnBindData = new DeviceUnBindData();
            deviceUnBindData.data.deviceId = deviceListBean.deviceId;
            deviceDetailService.unBindDevice(deviceUnBindData, this);*/
            deviceDetailService.recoverSDCard(deviceListBean.deviceId, new IGetDeviceInfoCallBack.IRecoverSDCardCallBack() {
                @Override
                public void onSuccess(String result) {
                    deviceDetailActivity.rlLoading.setVisibility(View.GONE);
                }
                @Override
                public void onError(Throwable throwable) {
                    deviceDetailActivity.rlLoading.setVisibility(View.GONE);
                }
            });
        }
    }
    @Override
AndroidOpenDemo/app/src/main/java/com/lechange/demo/ui/DeviceListActivity.java
@@ -19,7 +19,6 @@
import com.common.openapi.MethodConst;
import com.common.openapi.entity.DeviceDetailListData;
import com.common.openapi.entity.DeviceListData;
import com.hdl.HdlToLc;
import com.lechange.demo.R;
import com.lechange.demo.adapter.DeviceListAdapter;
import com.lechange.demo.view.LcPullToRefreshRecyclerView;
@@ -27,6 +26,7 @@
import com.lechange.pulltorefreshlistview.PullToRefreshBase;
import com.mm.android.deviceaddmodule.LCDeviceEngine;
import com.mm.android.deviceaddmodule.mobilecommon.utils.LogUtil;
import com.utils.HdlToLcUtils;
import java.util.ArrayList;
import java.util.Iterator;
@@ -53,7 +53,7 @@
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_device_list);
        initView();
        HdlToLc.requestPermission();
        HdlToLcUtils.getInstance().requestPermission();
    }
    private void initView() {
AndroidOpenDemo/app/src/main/java/com/lechange/demo/ui/DeviceOnlineMediaPlayActivity.java
@@ -577,7 +577,7 @@
            mLayoutParams.addRule(RelativeLayout.BELOW, R.id.rl_title);
            frLiveWindow.setLayoutParams(mLayoutParams);
            MediaPlayHelper.quitFullScreen(DeviceOnlineMediaPlayActivity.this);
            llController.setVisibility(View.VISIBLE);
            llController.setVisibility(View.GONE);
            rlTitle.setVisibility(View.VISIBLE);
            llSpeak1.setVisibility(View.GONE);
            llCloudStage1.setVisibility(View.GONE);
@@ -601,10 +601,10 @@
            MediaPlayHelper.setFullScreen(DeviceOnlineMediaPlayActivity.this);
            llController.setVisibility(View.GONE);
            rlTitle.setVisibility(View.GONE);
            llSpeak1.setVisibility(View.VISIBLE);
            llSpeak1.setVisibility(View.GONE);
            llCloudStage1.setVisibility(View.VISIBLE);
            llVideo1.setVisibility(View.VISIBLE);
            llScreenShot1.setVisibility(View.VISIBLE);
            llVideo1.setVisibility(View.GONE);
            llScreenShot1.setVisibility(View.GONE);
            RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(frRecord
                    .getLayoutParams());
            layoutParams.removeRule(RelativeLayout.BELOW);
AndroidOpenDemo/app/src/main/java/com/lechange/demo/ui/EnvGuideActivity.java
@@ -6,10 +6,12 @@
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.hdl.HdlToLc;
import com.callBack.IAddCamera;
import com.lechange.demo.R;
import com.lechange.demo.tools.RootUtil;
import com.mm.android.deviceaddmodule.utils.SDsolutionUtility;
import com.utils.HdlToLcUtils;
public class EnvGuideActivity extends Activity implements View.OnClickListener {
    private TextView tvTitleCn;
@@ -62,12 +64,34 @@
    public void onClick(View v) {
        int id = v.getId();
        if (id == R.id.tv_title_cn) {
            HdlToLc.initData( this,true,"");
//            HdlToLc.initData( this,true,"");
        } else if (id == R.id.tv_overseas) {
            HdlToLc.initData(this,false,"c11b4f38c6aa4563a17e3cb35b6882df06");
        }
        HdlToLc.openActivity();
        HdlToLcUtils.getInstance().initData(this, "HDL-HOME-APP-TEST", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", "https://test-gz.hdlcontrol.com");
        HdlToLcUtils.getInstance().setHomeId("1547099040465408002");
        HdlToLcUtils.getInstance().setToken("eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJjZmQ1NzM3NTk4YjA0YjQ3YTQyOTQ4YzczNTNkODk3MCIsImNvbXBhbnlJZCI6IjIwMiIsInJvbGUiOiIiLCJoZWFkZXJQcmVmaXgiOiJCZWFyZXIgIiwidXNlckFjY291bnQiOiJ3eHIiLCJ0ZW5hbnRJZCI6IjIwIiwidXNlclR5cGUiOiJVU0VSX0IiLCJ0b2tlblR5cGUiOiJhY2Nlc3NfdG9rZW4iLCJ1c2VyTmFtZSI6Ind4ciIsIm9wZW5BcHBsaWNhdGlvbklkIjoiMCIsInVzZXJJZCI6IjEzOTIwMzU1NjgyMDQ0MjMxNjkiLCJleHAiOjE2NjkyNzI5MDAsIm5iZiI6MTY2OTI2NTcwMH0.LX4HmxmxuH80eNpBuDurp8POOGwX2hhqcLR4ULCCSnGhhYH61OaTYym4rn_CGM2J15EBVg0EpcJAfabePtQAS6pbeNv60jf-5s-V4zCPyqGKatduFbx1uG1Bw3TPiPCoTdhKkWb_pwRAfchhFMeibMrbS9W3JSs6eJ1mpZODOtM");
        HdlToLcUtils.getInstance().setSubAccessToken("St_00003ee84eda32b14126af958052f20a");
//        HdlToLcUtils.getInstance().openActivity();
        HdlToLcUtils.getInstance().addCamera(new IAddCamera() {
            @Override
            public void success(String deviceId) {
            }
            @Override
            public void onError(String errMsg) {
            }
            @Override
            public void back() {
            }
        });
//        HdlToLcUtils.getInstance().play("8F05F83AAG05B3A");
    }
AndroidOpenDemo/app/src/main/java/com/net/IUserDataCallBack.java
File was renamed from AndroidOpenDemo/app/src/main/java/com/hdl/net/IUserDataCallBack.java
@@ -1,4 +1,4 @@
package com.hdl.net;
package com.net;
public interface IUserDataCallBack {
    void onCallBackOpenId(String str);
AndroidOpenDemo/app/src/main/java/com/net/UserNetManager.java
File was renamed from AndroidOpenDemo/app/src/main/java/com/hdl/net/UserNetManager.java
@@ -1,4 +1,4 @@
package com.hdl.net;
package com.net;
import android.os.Handler;
import android.os.Message;
AndroidOpenDemo/app/src/main/java/com/utils/DeviceUtils.java
New file
@@ -0,0 +1,94 @@
package com.utils;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
import com.common.openapi.ClassInstanceManager;
import com.common.openapi.DeviceSubAccountListService;
import com.common.openapi.IGetDeviceInfoCallBack;
import com.common.openapi.MethodConst;
import com.common.openapi.entity.DeviceDetailListData;
import com.lechange.demo.ui.DeviceDetailActivity;
import com.lechange.demo.ui.DeviceListActivity;
import com.lechange.demo.ui.DeviceOnlineMediaPlayActivity;
import com.mm.android.deviceaddmodule.openapi.HDLMD5Utils;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
 * Created by hxb on 2022/11/22.
 */
public class DeviceUtils implements IGetDeviceInfoCallBack.ISubAccountDevice< DeviceDetailListData.Response>  {
    private String deviceId;
    public DeviceUtils(String deviceId){
        this.deviceId=deviceId;
    }
    private static List<DeviceDetailListData.ResponseData.DeviceListBean> datas = new ArrayList<>();
    private void getDeviceList() {
        DeviceSubAccountListService deviceSubAccountListService = ClassInstanceManager.newInstance().getDeviceSubAccountListService();
        deviceSubAccountListService.getSubAccountDeviceList(1,this);
    }
    public void play() {
        for (DeviceDetailListData.ResponseData.DeviceListBean deviceListBean : datas) {
            if (deviceListBean.deviceId.equals(deviceId)) {
                if (!deviceListBean.status.equals("online")) {
                    return;
                }
                Bundle bundle = new Bundle();
                bundle.putSerializable(MethodConst.ParamConst.deviceDetail, deviceListBean);
                Intent intent = new Intent(HdlToLcUtils.getInstance().getActivity(), DeviceOnlineMediaPlayActivity.class);
                intent.putExtras(bundle);
                HdlToLcUtils.getInstance().getActivity().startActivity(intent);
                return;
            }
        }
        getDeviceList();
    }
    @Override
    public void DeviceList(DeviceDetailListData.Response responseData) {
        if (responseData.data != null && responseData.data.deviceList != null && responseData.data.deviceList.size() != 0) {
            Iterator<DeviceDetailListData.ResponseData.DeviceListBean> iterator = responseData.data.deviceList.iterator();
            while (iterator.hasNext()) {
                DeviceDetailListData.ResponseData.DeviceListBean next = iterator.next();
                if (next.channels != null && next.channels.size() == 0 && !next.catalog.contains("NVR")) {
                    // 使用迭代器中的remove()方法,可以删除元素.
                    iterator.remove();
                }
            }
        }
        if ((responseData.data == null || responseData.data.deviceList == null || responseData.data.deviceList.size() == 0)) {
            return;
        }
        datas.addAll(responseData.data.deviceList);
        for (DeviceDetailListData.ResponseData.DeviceListBean deviceListBean : datas) {
            if (deviceListBean.deviceId.equals(deviceId)) {
                if (!deviceListBean.status.equals("online")) {
                    return;
                }
                Bundle bundle = new Bundle();
                bundle.putSerializable(MethodConst.ParamConst.deviceDetail, deviceListBean);
                Intent intent = new Intent(HdlToLcUtils.getInstance().getActivity(), DeviceOnlineMediaPlayActivity.class);
                intent.putExtras(bundle);
                HdlToLcUtils.getInstance().getActivity().startActivity(intent);
                return;
            }
        }
    }
    @Override
    public void onError(Throwable throwable) {
        Toast.makeText(HdlToLcUtils.getInstance().getActivity(), throwable.getMessage(), Toast.LENGTH_SHORT).show();
    }
}
AndroidOpenDemo/app/src/main/java/com/utils/HdlToLcUtils.java
New file
@@ -0,0 +1,218 @@
package com.utils;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.widget.Toast;
import com.callBack.IAddCamera;
import com.common.openapi.ClassInstanceManager;
import com.lechange.demo.tools.MediaPlayHelper;
import com.mm.android.deviceaddmodule.CommonParam;
import com.mm.android.deviceaddmodule.DeviceAddActivity;
import com.mm.android.deviceaddmodule.LCDeviceEngine;
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.ProviderManager;
import com.mm.android.deviceaddmodule.openapi.CONST;
import com.usermodule.net.IUserDataCallBack;
import com.usermodule.net.UserNetManager;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class HdlToLcUtils {
    private Activity activity;
    private String homeId;
    private String token;
    private String subAccessToken;
    private IAddCamera iAddCamera;
    public Activity getActivity() {
        return activity;
    }
    /**
     * instance
     */
    private volatile static HdlToLcUtils instance;
    /**
     * getInstance
     *
     * @return HDLLink
     */
    public static synchronized HdlToLcUtils getInstance() {
        if (instance == null) {
            synchronized (HdlToLcUtils.class) {
                if (instance == null) {
                    instance = new HdlToLcUtils();
                }
            }
        }
        return instance;
    }
    public  void initData(Activity activity, String appKey, String secretKey,String url) {
        this.activity = activity;
        MediaPlayHelper.initContext(activity.getApplication().getApplicationContext());
        ClassInstanceManager.newInstance().init(activity.getApplication().getApplicationContext());
//        if (isChina) {
////            mAppSecret = "f869433de68a4a06bb8f9bb89118fc";
////            mAppid = "lc2ea929282d5f4636";
//            mUrl = CONST.Envirment.CHINA_TEST.url;
//            ProviderManager.getAppProvider().setAppType(0);
//        } else {
//            secretKey = "017fc27bb987496f9a677e4e6f0c88";
//            appKey = "lc0285433bc7e8423d";
//            url = CONST.Envirment.OVERSEAS_PRO.url;
             ProviderManager.getAppProvider().setAppType(1);
//        }
        try {
            CommonParam commonParam = new CommonParam();
            commonParam.setEnvirment(url);//云端连接
            commonParam.setContext(activity.getApplication());
            commonParam.setAppId(appKey);
            commonParam.setAppSecret(secretKey);
            //SDK信息初始化
            LCDeviceEngine.newInstance().init(commonParam);
        } catch (Throwable e) {
            Toast.makeText(activity, e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
    public  void openActivity() {
        try {
//            getSubAccountToken("827a98c98da7469b8bc19bb6a3c7651906");
            activity.startActivity(new Intent(activity, com.lechange.demo.ui.DeviceListActivity.class));
        } catch (Throwable e) {
            Toast.makeText(activity, e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
    public  void addCamera(IAddCamera iAddCamera) {
        if(!EventBus.getDefault().isRegistered(this)){
            EventBus.getDefault().register(this);
        }
        //开启添加页面
        activity.startActivity(new Intent(activity.getApplication(), DeviceAddActivity.class));
    }
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onGetMessage(String obj) {
        if(obj.equals("backXamarin")){
            iAddCamera.back();
            if(EventBus.getDefault().isRegistered(this)){
                EventBus.getDefault().unregister(this);
            }
        }
    }
    public  void play(String deviceId){
        new DeviceUtils(deviceId).play();
    }
    public void setActivity(Activity activity) {
        this.activity = activity;
    }
    public String getHomeId() {
        return homeId;
    }
    public void setHomeId(String homeId) {
        this.homeId = homeId;
        LCDeviceEngine.newInstance().setHomeId(homeId);
    }
    public String getToken() {
        return token;
    }
    public void setToken(String token) {
        this.token = token;
        LCDeviceEngine.newInstance().accessToken=(token);
    }
    public String getSubAccessToken() {
        return subAccessToken;
    }
    public void setSubAccessToken(String subAccessToken) {
        this.subAccessToken = subAccessToken;
        LCDeviceEngine.newInstance().setSubAccessToken(subAccessToken);
    }
    private  void getSubAccountToken(String openId){
        UserNetManager.getInstance().subAccountToken(openId, new IUserDataCallBack() {
            @Override
            public void onCallBackOpenId(String str) {
                if (str!=null){
                    //暂不保存到sp中了,因为获取需要context。
                    //  PreferencesHelper.getInstance(getApplicationContext()).set(Constants.SUBACCOUNTTOKEN,str);
                    LCDeviceEngine.newInstance().setSubAccessToken(str);
                    activity.startActivity(new Intent(activity,com.lechange.demo.ui.DeviceListActivity.class));
                }
            }
            @Override
            public void onError(Throwable throwable) {
            }
        });
    }
    /**
     * 请求对讲权限
     */
    public  void requestPermission() {
        boolean isMinSDKM = Build.VERSION.SDK_INT < 23;
        boolean isGranted = ActivityCompat.checkSelfPermission(activity, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(activity, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
        if (isMinSDKM || isGranted) {
            return;
        }
        requestRecordAudioPermission();
    }
    private  void requestRecordAudioPermission() {
        if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.RECORD_AUDIO)
                || ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.ACCESS_COARSE_LOCATION)
                || ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.CAMERA)
                || ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                || ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.READ_EXTERNAL_STORAGE)) {
            ActivityCompat.requestPermissions(activity,
                    new String[]{
                            Manifest.permission.RECORD_AUDIO,
                            Manifest.permission.ACCESS_COARSE_LOCATION,
                            Manifest.permission.CAMERA,
                            Manifest.permission.WRITE_EXTERNAL_STORAGE,
                            Manifest.permission.READ_EXTERNAL_STORAGE},
                    1);
        } else {
            ActivityCompat.requestPermissions(activity,
                    new String[]{
                            Manifest.permission.RECORD_AUDIO,
                            Manifest.permission.ACCESS_COARSE_LOCATION,
                            Manifest.permission.CAMERA,
                            Manifest.permission.WRITE_EXTERNAL_STORAGE,
                            Manifest.permission.READ_EXTERNAL_STORAGE},
                    1);
        }
    }
}
AndroidOpenDemo/app/src/main/res/.DS_Store
Binary files differ
AndroidOpenDemo/app/src/main/res/layout/activity_device_online_media_play.xml
@@ -180,7 +180,8 @@
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@color/lc_demo_color_442c2c2c"
                android:gravity="center">
                android:gravity="center"
                android:visibility="gone">
                <ImageView
                    android:id="@+id/iv_sound"
@@ -277,6 +278,7 @@
        android:layout_height="@dimen/px_140"
        android:layout_marginBottom="@dimen/px_20"
        android:background="@color/lc_demo_color_ffffff"
        android:visibility="gone"
        android:paddingLeft="@dimen/px_30"
        android:paddingRight="@dimen/px_30">
@@ -338,6 +340,7 @@
    </LinearLayout>
    <FrameLayout
        android:visibility="gone"
        android:layout_below="@id/ll_controller"
        android:id="@+id/fr_record"
        android:layout_width="match_parent"
AndroidOpenDemo/app/src/main/res/layout/fragment_device_detail_main.xml
@@ -122,6 +122,23 @@
            android:src="@mipmap/lc_demo_common_btn_next"></ImageView>
    </RelativeLayout>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/px_130"
        android:background="@color/lc_demo_color_ffffff"
        android:gravity="center_vertical"
        android:paddingLeft="@dimen/px_30"
        android:paddingRight="@dimen/px_30">
        <TextView
            android:id="@+id/tvFormat_sd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:text="@string/format_sd"
            android:textColor="@color/lc_demo_color_2c2c2c"
            android:textSize="@dimen/px_36"></TextView>
    </RelativeLayout>
    <RelativeLayout
        android:visibility="gone"
        android:layout_marginTop="@dimen/px_1"
        android:id="@+id/rl_cur_wifi"
@@ -133,6 +150,7 @@
        android:paddingRight="@dimen/px_30">
        <TextView
            android:visibility="gone"
            android:id="@+id/tv_cur_wifi_tip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
@@ -166,7 +184,8 @@
        android:layout_gravity="bottom"
        android:layout_marginBottom="@dimen/px_50"
        android:background="@color/lc_demo_color_ffffff"
        android:gravity="center_vertical">
        android:gravity="center_vertical"
        android:visibility="gone">
        <TextView
            android:layout_width="wrap_content"
AndroidOpenDemo/app/src/main/res/values-en/strings.xml
@@ -78,4 +78,5 @@
    <string name="lc_demo_device_today_no_record">today no record</string>
    <string name="lc_demo_device_local_sd">No storage medium</string>
    <string name="lc_demo_device_cloud_not_open">Cloud storage is not enabled</string>
    <string name="format_sd">Format sd card</string>
</resources>
AndroidOpenDemo/app/src/main/res/values/strings.xml
@@ -78,4 +78,5 @@
    <string name="lc_demo_device_today_no_record">今日暂无录像</string>
    <string name="lc_demo_device_local_sd">无存储介质</string>
    <string name="lc_demo_device_cloud_not_open">云存储未开通</string>
    <string name="format_sd">格式化SD卡</string>
</resources>
AndroidOpenDemo/app/src/main/res/values/styles.xml
@@ -46,8 +46,8 @@
        <item name="android:textSize">15sp</item>
    </style>
    <style name="device_page_style" parent="@style/Theme.AppCompat.NoActionBar">
        <item name="background_color">#FF000000</item>
        <item name="background_color">#FFF2F3F7</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:statusBarColor">#000000</item>
        <item name="android:statusBarColor">#FFF2F3F7</item>
    </style>
</resources>
AndroidOpenDemo/third-zxing/.DS_Store
Binary files differ