├── Android └── ESP32-CAM-MJPEG-Viewer │ ├── .DS_Store │ ├── .gradle │ ├── 6.5 │ │ ├── executionHistory │ │ │ ├── executionHistory.bin │ │ │ └── executionHistory.lock │ │ ├── fileChanges │ │ │ └── last-build.bin │ │ ├── fileContent │ │ │ └── fileContent.lock │ │ ├── fileHashes │ │ │ ├── fileHashes.bin │ │ │ ├── fileHashes.lock │ │ │ └── resourceHashesCache.bin │ │ ├── gc.properties │ │ └── javaCompile │ │ │ ├── classAnalysis.bin │ │ │ ├── jarAnalysis.bin │ │ │ ├── javaCompile.lock │ │ │ └── taskHistory.bin │ ├── buildOutputCleanup │ │ ├── buildOutputCleanup.lock │ │ ├── cache.properties │ │ └── outputFiles.bin │ ├── checksums │ │ └── checksums.lock │ └── vcs-1 │ │ └── gc.properties │ ├── .idea │ ├── $CACHE_FILE$ │ ├── .gitignore │ ├── .name │ ├── caches │ │ └── build_file_checksums.ser │ ├── compiler.xml │ ├── dictionaries │ ├── encodings.xml │ ├── gradle.xml │ ├── jarRepositories.xml │ ├── libraries │ │ ├── Gradle__androidx_activity_activity_1_0_0_aar.xml │ │ ├── Gradle__androidx_annotation_annotation_1_1_0.xml │ │ ├── Gradle__androidx_appcompat_appcompat_1_1_0_aar.xml │ │ ├── Gradle__androidx_appcompat_appcompat_resources_1_1_0_aar.xml │ │ ├── Gradle__androidx_arch_core_core_common_2_1_0.xml │ │ ├── Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml │ │ ├── Gradle__androidx_cardview_cardview_1_0_0_aar.xml │ │ ├── Gradle__androidx_collection_collection_1_1_0.xml │ │ ├── Gradle__androidx_constraintlayout_constraintlayout_1_1_3_aar.xml │ │ ├── Gradle__androidx_constraintlayout_constraintlayout_solver_1_1_3.xml │ │ ├── Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml │ │ ├── Gradle__androidx_core_core_1_1_0_aar.xml │ │ ├── Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml │ │ ├── Gradle__androidx_customview_customview_1_0_0_aar.xml │ │ ├── Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml │ │ ├── Gradle__androidx_fragment_fragment_1_1_0_aar.xml │ │ ├── Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_common_2_1_0.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_runtime_2_1_0_aar.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_2_1_0_aar.xml │ │ ├── Gradle__androidx_loader_loader_1_0_0_aar.xml │ │ ├── Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml │ │ ├── Gradle__androidx_savedstate_savedstate_1_0_0_aar.xml │ │ ├── Gradle__androidx_test_core_1_2_0_aar.xml │ │ ├── Gradle__androidx_test_espresso_espresso_core_3_2_0_aar.xml │ │ ├── Gradle__androidx_test_espresso_espresso_idling_resource_3_2_0_aar.xml │ │ ├── Gradle__androidx_test_ext_junit_1_1_1_aar.xml │ │ ├── Gradle__androidx_test_monitor_1_2_0_aar.xml │ │ ├── Gradle__androidx_test_runner_1_2_0_aar.xml │ │ ├── Gradle__androidx_transition_transition_1_2_0_aar.xml │ │ ├── Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml │ │ ├── Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml │ │ ├── Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml │ │ ├── Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml │ │ ├── Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml │ │ ├── Gradle__com_google_android_material_material_1_1_0_aar.xml │ │ ├── Gradle__com_google_code_findbugs_jsr305_2_0_1.xml │ │ ├── Gradle__com_squareup_javawriter_2_1_1.xml │ │ ├── Gradle__javax_inject_javax_inject_1.xml │ │ ├── Gradle__junit_junit_4_12.xml │ │ ├── Gradle__junit_junit_4_13_2.xml │ │ ├── Gradle__net_sf_kxml_kxml2_2_3_0.xml │ │ ├── Gradle__org_hamcrest_hamcrest_core_1_3.xml │ │ ├── Gradle__org_hamcrest_hamcrest_integration_1_3.xml │ │ └── Gradle__org_hamcrest_hamcrest_library_1_3.xml │ ├── misc.xml │ ├── modules.xml │ └── modules │ │ ├── ESP32-CAM-MJPEG-Monitor.iml │ │ └── app │ │ └── ESP32-CAM-MJPEG-Monitor.app.iml │ ├── app │ ├── .DS_Store │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── .DS_Store │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── esp32_cam_mjpeg_monitor │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── .DS_Store │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── esp32_cam_mjpeg_monitor │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── .DS_Store │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── values-night │ │ │ └── themes.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── esp32_cam_mjpeg_monitor │ │ └── ExampleUnitTest.java │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── local.properties │ └── settings.gradle ├── Firmware └── ESP32-CAM │ ├── .DS_Store │ ├── ESP32-CAM.ino │ ├── app_httpd.cpp │ ├── camera_index.h │ ├── camera_pins.h │ └── define.h ├── LICENSE ├── README.md └── res └── demo.gif /Android/ESP32-CAM-MJPEG-Viewer/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.DS_Store -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/executionHistory/executionHistory.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/executionHistory/executionHistory.bin -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/executionHistory/executionHistory.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/executionHistory/executionHistory.lock -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/fileChanges/last-build.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/fileContent/fileContent.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/fileContent/fileContent.lock -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/fileHashes/fileHashes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/fileHashes/fileHashes.bin -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/fileHashes/fileHashes.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/fileHashes/fileHashes.lock -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/fileHashes/resourceHashesCache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/fileHashes/resourceHashesCache.bin -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/gc.properties -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/javaCompile/classAnalysis.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/javaCompile/classAnalysis.bin -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/javaCompile/jarAnalysis.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/javaCompile/jarAnalysis.bin -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/javaCompile/javaCompile.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/javaCompile/javaCompile.lock -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/javaCompile/taskHistory.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/6.5/javaCompile/taskHistory.bin -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/buildOutputCleanup/buildOutputCleanup.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/buildOutputCleanup/buildOutputCleanup.lock -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Sun Jun 20 21:40:55 CST 2021 2 | gradle.version=6.5 3 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/buildOutputCleanup/outputFiles.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/buildOutputCleanup/outputFiles.bin -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/checksums/checksums.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/checksums/checksums.lock -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.gradle/vcs-1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.gradle/vcs-1/gc.properties -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/$CACHE_FILE$: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Android 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/.name: -------------------------------------------------------------------------------- 1 | ESP32-CAM-MJPEG-Monitor -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/dictionaries: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_activity_activity_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_1_1_3_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_1_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_core_core_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_fragment_fragment_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_test_core_1_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_test_monitor_1_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_test_runner_1_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__com_google_android_material_material_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__junit_junit_4_12.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__junit_junit_4_13_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/modules/ESP32-CAM-MJPEG-Monitor.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/.idea/modules/app/ESP32-CAM-MJPEG-Monitor.app.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/app/.DS_Store -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.android.application' 3 | } 4 | 5 | android { 6 | compileSdkVersion 29 7 | 8 | defaultConfig { 9 | applicationId "com.example.esp32_cam_mjpeg_monitor" 10 | minSdkVersion 21 11 | targetSdkVersion 29 12 | versionCode 1 13 | versionName "1.0" 14 | 15 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 16 | } 17 | 18 | buildTypes { 19 | release { 20 | minifyEnabled false 21 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 22 | } 23 | } 24 | compileOptions { 25 | sourceCompatibility JavaVersion.VERSION_1_8 26 | targetCompatibility JavaVersion.VERSION_1_8 27 | } 28 | } 29 | 30 | dependencies { 31 | 32 | implementation 'androidx.appcompat:appcompat:1.1.0' 33 | implementation 'com.google.android.material:material:1.1.0' 34 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 35 | testImplementation 'junit:junit:4.+' 36 | androidTestImplementation 'androidx.test.ext:junit:1.1.1' 37 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 38 | } -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/app/src/.DS_Store -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/src/androidTest/java/com/example/esp32_cam_mjpeg_monitor/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.example.esp32_cam_mjpeg_monitor; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("com.example.esp32_cam_mjpeg_monitor", appContext.getPackageName()); 25 | } 26 | } -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/app/src/main/.DS_Store -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/src/main/java/com/example/esp32_cam_mjpeg_monitor/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.esp32_cam_mjpeg_monitor; 2 | 3 | import android.app.Activity; 4 | import android.graphics.Bitmap; 5 | import android.graphics.BitmapFactory; 6 | import android.os.Bundle; 7 | import android.os.Environment; 8 | import android.os.Handler; 9 | import android.os.HandlerThread; 10 | import android.os.Looper; 11 | import android.os.Message; 12 | import android.view.View; 13 | import android.widget.Button; 14 | import android.widget.EditText; 15 | import android.widget.ImageView; 16 | import android.widget.TextView; 17 | 18 | import java.io.BufferedInputStream; 19 | import java.io.BufferedReader; 20 | import java.io.File; 21 | import java.io.FileOutputStream; 22 | import java.io.IOException; 23 | import java.io.InputStream; 24 | import java.io.InputStreamReader; 25 | import java.net.HttpURLConnection; 26 | import java.net.MalformedURLException; 27 | import java.net.URL; 28 | 29 | public class MainActivity extends Activity implements View.OnClickListener 30 | { 31 | 32 | private static final String TAG = "MainActivity::"; 33 | 34 | private HandlerThread stream_thread,flash_thread,rssi_thread; 35 | private Handler stream_handler,flash_handler,rssi_handler; 36 | private Button flash_button; 37 | private ImageView monitor; 38 | private TextView rssi_text; 39 | private EditText ip_text; 40 | 41 | private final int ID_CONNECT = 200; 42 | private final int ID_FLASH = 201; 43 | private final int ID_RSSI = 202; 44 | 45 | private boolean flash_on_off = false; 46 | 47 | @Override 48 | protected void onCreate(Bundle savedInstanceState) { 49 | super.onCreate(savedInstanceState); 50 | setContentView(R.layout.activity_main); 51 | 52 | findViewById(R.id.connect).setOnClickListener(this); 53 | findViewById(R.id.flash).setOnClickListener(this); 54 | flash_button = findViewById(R.id.flash); 55 | monitor = findViewById(R.id.monitor); 56 | rssi_text = findViewById(R.id.rssi); 57 | ip_text = findViewById(R.id.ip); 58 | 59 | ip_text.setText("192.168.110.253"); 60 | 61 | stream_thread = new HandlerThread("http"); 62 | stream_thread.start(); 63 | stream_handler = new HttpHandler(stream_thread.getLooper()); 64 | 65 | flash_thread = new HandlerThread("http"); 66 | flash_thread.start(); 67 | flash_handler = new HttpHandler(flash_thread.getLooper()); 68 | 69 | rssi_thread = new HandlerThread("http"); 70 | rssi_thread.start(); 71 | rssi_handler = new HttpHandler(rssi_thread.getLooper()); 72 | } 73 | 74 | @Override 75 | public void onClick(View v) 76 | { 77 | switch (v.getId()) 78 | { 79 | case R.id.connect: 80 | stream_handler.sendEmptyMessage(ID_CONNECT); 81 | rssi_handler.sendEmptyMessage(ID_RSSI); 82 | break; 83 | case R.id.flash: 84 | flash_handler.sendEmptyMessage(ID_FLASH); 85 | break; 86 | default: 87 | break; 88 | } 89 | } 90 | 91 | private class HttpHandler extends Handler 92 | { 93 | public HttpHandler(Looper looper) 94 | { 95 | super(looper); 96 | } 97 | 98 | @Override 99 | public void handleMessage(Message msg) 100 | { 101 | switch (msg.what) 102 | { 103 | case ID_CONNECT: 104 | VideoStream(); 105 | break; 106 | case ID_FLASH: 107 | SetFlash(); 108 | break; 109 | case ID_RSSI: 110 | GetRSSI(); 111 | break; 112 | default: 113 | break; 114 | } 115 | } 116 | } 117 | 118 | private void SetFlash() 119 | { 120 | flash_on_off ^= true; 121 | 122 | String flash_url; 123 | if(flash_on_off){ 124 | flash_url = "http://" + ip_text.getText() + ":80/led?var=flash&val=1"; 125 | } 126 | else { 127 | flash_url = "http://" + ip_text.getText() + ":80/led?var=flash&val=0"; 128 | } 129 | 130 | try 131 | { 132 | 133 | URL url = new URL(flash_url); 134 | 135 | HttpURLConnection huc = (HttpURLConnection) url.openConnection(); 136 | huc.setRequestMethod("GET"); 137 | huc.setConnectTimeout(1000 * 5); 138 | huc.setReadTimeout(1000 * 5); 139 | huc.setDoInput(true); 140 | huc.connect(); 141 | if (huc.getResponseCode() == 200) 142 | { 143 | InputStream in = huc.getInputStream(); 144 | 145 | InputStreamReader isr = new InputStreamReader(in); 146 | BufferedReader br = new BufferedReader(isr); 147 | } 148 | 149 | } catch (Exception e) 150 | { 151 | e.printStackTrace(); 152 | } 153 | } 154 | 155 | private void GetRSSI() { 156 | rssi_handler.sendEmptyMessageDelayed(ID_RSSI,500); 157 | 158 | String rssi_url = "http://" + ip_text.getText() + ":80/RSSI"; 159 | 160 | try { 161 | URL url = new URL(rssi_url); 162 | 163 | try { 164 | 165 | HttpURLConnection huc = (HttpURLConnection) url.openConnection(); 166 | huc.setRequestMethod("GET"); 167 | huc.setConnectTimeout(1000 * 5); 168 | huc.setReadTimeout(1000 * 5); 169 | huc.setDoInput(true); 170 | huc.connect(); 171 | if (huc.getResponseCode() == 200) { 172 | InputStream in = huc.getInputStream(); 173 | 174 | InputStreamReader isr = new InputStreamReader(in); 175 | BufferedReader br = new BufferedReader(isr); 176 | final String data = br.readLine(); 177 | if (!data.isEmpty()) { 178 | runOnUiThread(new Runnable() { 179 | @Override 180 | public void run() { 181 | rssi_text.setText(data); 182 | } 183 | }); 184 | } 185 | 186 | } 187 | 188 | } catch (Exception e) { 189 | e.printStackTrace(); 190 | } 191 | }catch (MalformedURLException e) { 192 | e.printStackTrace(); 193 | } 194 | } 195 | 196 | private void VideoStream() 197 | { 198 | String stream_url = "http://" + ip_text.getText() + ":81/stream"; 199 | 200 | BufferedInputStream bis = null; 201 | FileOutputStream fos = null; 202 | try 203 | { 204 | 205 | URL url = new URL(stream_url); 206 | 207 | try 208 | { 209 | HttpURLConnection huc = (HttpURLConnection) url.openConnection(); 210 | huc.setRequestMethod("GET"); 211 | huc.setConnectTimeout(1000 * 5); 212 | huc.setReadTimeout(1000 * 5); 213 | huc.setDoInput(true); 214 | huc.connect(); 215 | 216 | if (huc.getResponseCode() == 200) 217 | { 218 | InputStream in = huc.getInputStream(); 219 | 220 | InputStreamReader isr = new InputStreamReader(in); 221 | BufferedReader br = new BufferedReader(isr); 222 | 223 | String data; 224 | 225 | int len; 226 | byte[] buffer; 227 | 228 | while ((data = br.readLine()) != null) 229 | { 230 | if (data.contains("Content-Type:")) 231 | { 232 | data = br.readLine(); 233 | 234 | len = Integer.parseInt(data.split(":")[1].trim()); 235 | 236 | bis = new BufferedInputStream(in); 237 | buffer = new byte[len]; 238 | 239 | int t = 0; 240 | while (t < len) 241 | { 242 | t += bis.read(buffer, t, len - t); 243 | } 244 | 245 | Bytes2ImageFile(buffer, getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/0A.jpg"); 246 | 247 | final Bitmap bitmap = BitmapFactory.decodeFile(getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/0A.jpg"); 248 | 249 | runOnUiThread(new Runnable() 250 | { 251 | @Override 252 | public void run() 253 | { 254 | monitor.setImageBitmap(bitmap); 255 | } 256 | }); 257 | 258 | } 259 | 260 | 261 | } 262 | } 263 | 264 | } catch (IOException e) 265 | { 266 | e.printStackTrace(); 267 | } 268 | } catch (MalformedURLException e) 269 | { 270 | e.printStackTrace(); 271 | } finally 272 | { 273 | try 274 | { 275 | if (bis != null) 276 | { 277 | bis.close(); 278 | } 279 | if (fos != null) 280 | { 281 | fos.close(); 282 | } 283 | 284 | stream_handler.sendEmptyMessageDelayed(ID_CONNECT,3000); 285 | } catch (IOException e) 286 | { 287 | e.printStackTrace(); 288 | } 289 | } 290 | 291 | } 292 | 293 | private void Bytes2ImageFile(byte[] bytes, String fileName) 294 | { 295 | try 296 | { 297 | File file = new File(fileName); 298 | FileOutputStream fos = new FileOutputStream(file); 299 | fos.write(bytes, 0, bytes.length); 300 | fos.flush(); 301 | fos.close(); 302 | } catch (Exception e) 303 | { 304 | e.printStackTrace(); 305 | } 306 | } 307 | 308 | } -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/src/main/res/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GCY/Android-ESP32-CAM-MJPEG-Viewer/67527f921b905c0bb49f86b6b90c124482cceb68/Android/ESP32-CAM-MJPEG-Viewer/app/src/main/res/.DS_Store -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 30 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 | 165 | 170 | 171 | -------------------------------------------------------------------------------- /Android/ESP32-CAM-MJPEG-Viewer/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 18 | 19 | 27 | 28 |