├── .gitignore
├── .gitlab-ci.yml
├── LICENSE
├── Matter_CustomCluster.md
├── README.md
├── app
├── .gitignore
├── build.gradle
├── google-services.json
├── proguard-rules.pro
├── src
│ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── espressif
│ │ │ └── espressif
│ │ │ └── ExampleInstrumentedTest.java
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ └── fonts
│ │ │ │ ├── AmazonEmberDisplay_Bd.ttf
│ │ │ │ ├── AmazonEmberDisplay_He.ttf
│ │ │ │ ├── AmazonEmberDisplay_Lt.ttf
│ │ │ │ ├── AmazonEmberDisplay_Md.ttf
│ │ │ │ ├── AmazonEmberDisplay_Rg.ttf
│ │ │ │ ├── Bookerly-Bold.ttf
│ │ │ │ ├── Bookerly-BoldItalic.ttf
│ │ │ │ ├── Bookerly-Italic.ttf
│ │ │ │ └── Bookerly-Regular.ttf
│ │ ├── ic_esp_rainmaker_launcher_web.png
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── espressif
│ │ │ │ ├── AlexaLinkingWorker.java
│ │ │ │ ├── AppConstants.kt
│ │ │ │ ├── AppRegister.java
│ │ │ │ ├── ESPControllerAPIKeys.kt
│ │ │ │ ├── EspApplication.java
│ │ │ │ ├── EspFcmService.kt
│ │ │ │ ├── GroupSharingActionReceiver.java
│ │ │ │ ├── JsonDataParser.java
│ │ │ │ ├── NetworkApiManager.java
│ │ │ │ ├── NodeSharingActionReceiver.java
│ │ │ │ ├── NotificationWorker.java
│ │ │ │ ├── cloudapi
│ │ │ │ ├── AlexaApiClient.java
│ │ │ │ ├── AlexaApiInterface.java
│ │ │ │ ├── AlexaApiManager.java
│ │ │ │ ├── AlexaTokenAuthenticator.kt
│ │ │ │ ├── ApiClient.java
│ │ │ │ ├── ApiInterface.java
│ │ │ │ ├── ApiManager.java
│ │ │ │ ├── ApiResponseListener.kt
│ │ │ │ ├── CloudException.java
│ │ │ │ ├── DeviceOperationRequest.java
│ │ │ │ └── TokenAuthenticator.kt
│ │ │ │ ├── db
│ │ │ │ ├── EspDatabase.java
│ │ │ │ ├── GroupDao.java
│ │ │ │ ├── NodeDao.java
│ │ │ │ ├── NotificationDao.java
│ │ │ │ └── StringArrayListConverters.java
│ │ │ │ ├── local_control
│ │ │ │ ├── EspLocalDevice.java
│ │ │ │ ├── EspLocalSession.java
│ │ │ │ ├── EspLocalTransport.java
│ │ │ │ ├── LocalControlApiManager.java
│ │ │ │ ├── TbrServiceDiscovery.java
│ │ │ │ └── mDNSManager.java
│ │ │ │ ├── matter
│ │ │ │ ├── AccessControlClusterHelper.kt
│ │ │ │ ├── AppCommissioningService.kt
│ │ │ │ ├── BaseCompletionListener.kt
│ │ │ │ ├── ChipClient.kt
│ │ │ │ ├── ChipClientHelper.kt
│ │ │ │ ├── ClustersHelper.kt
│ │ │ │ ├── ColorControlClusterHelper.kt
│ │ │ │ ├── ControllerClusterHelper.kt
│ │ │ │ ├── ControllerLoginActivity.kt
│ │ │ │ ├── DoorLockClusterHelper.kt
│ │ │ │ ├── FabricDetails.java
│ │ │ │ ├── FanControlClusterHelper.kt
│ │ │ │ ├── GroupSelectionActivity.kt
│ │ │ │ ├── GroupSelectionAdapter.kt
│ │ │ │ ├── LevelControlClusterHelper.kt
│ │ │ │ ├── MatterConstants.kt
│ │ │ │ ├── MatterFabricUtils.kt
│ │ │ │ ├── OnOffClusterHelper.kt
│ │ │ │ ├── RemoteControlApiHelper.java
│ │ │ │ ├── SubscriptionHelper.kt
│ │ │ │ ├── TemperatureClusterHelper.kt
│ │ │ │ ├── ThermostatClusterHelper.kt
│ │ │ │ ├── ThreadBRActivity.kt
│ │ │ │ ├── ThreadBRClusterHelper.kt
│ │ │ │ └── Utils.kt
│ │ │ │ ├── rainmaker
│ │ │ │ └── wxapi
│ │ │ │ │ └── WXEntryActivity.java
│ │ │ │ ├── ui
│ │ │ │ ├── EventSelectionListener.java
│ │ │ │ ├── Utils.java
│ │ │ │ ├── activities
│ │ │ │ │ ├── AboutAppActivity.kt
│ │ │ │ │ ├── AccountActivity.java
│ │ │ │ │ ├── AddDeviceActivity.kt
│ │ │ │ │ ├── AlexaAppLinkingActivity.java
│ │ │ │ │ ├── AutomationActionsActivity.java
│ │ │ │ │ ├── AutomationDetailActivity.java
│ │ │ │ │ ├── BLEProvisionLanding.java
│ │ │ │ │ ├── ClaimingActivity.java
│ │ │ │ │ ├── CmdRespActivity.java
│ │ │ │ │ ├── ConsentActivity.kt
│ │ │ │ │ ├── EspDeviceActivity.kt
│ │ │ │ │ ├── EspMainActivity.java
│ │ │ │ │ ├── EventDeviceActivity.java
│ │ │ │ │ ├── FwUpdateActivity.java
│ │ │ │ │ ├── GroupDetailActivity.java
│ │ │ │ │ ├── GroupInfoActivity.java
│ │ │ │ │ ├── GroupNodeSelectionActivity.java
│ │ │ │ │ ├── GroupShareActivity.java
│ │ │ │ │ ├── GroupsActivity.java
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ ├── NodeDetailsActivity.java
│ │ │ │ │ ├── NotificationsActivity.java
│ │ │ │ │ ├── ProofOfPossessionActivity.java
│ │ │ │ │ ├── ProvisionActivity.java
│ │ │ │ │ ├── ProvisionLanding.java
│ │ │ │ │ ├── SceneActionsActivity.java
│ │ │ │ │ ├── SceneDetailActivity.java
│ │ │ │ │ ├── ScheduleActionsActivity.java
│ │ │ │ │ ├── ScheduleDetailActivity.java
│ │ │ │ │ ├── SplashActivity.kt
│ │ │ │ │ ├── ThreadConfigActivity.java
│ │ │ │ │ ├── TimeSeriesActivity.java
│ │ │ │ │ ├── VoiceServicesActivity.java
│ │ │ │ │ ├── WebRtcActivity.java
│ │ │ │ │ ├── WebRtcConfigActivity.java
│ │ │ │ │ ├── WiFiConfigActivity.java
│ │ │ │ │ └── WiFiScanActivity.java
│ │ │ │ ├── adapters
│ │ │ │ │ ├── AccountAdapter.java
│ │ │ │ │ ├── ActionDiffCallback.java
│ │ │ │ │ ├── AttrParamAdapter.java
│ │ │ │ │ ├── AutomationActionAdapter.java
│ │ │ │ │ ├── AutomationActionListAdapter.java
│ │ │ │ │ ├── AutomationAdapter.java
│ │ │ │ │ ├── AutomationDiffCallback.java
│ │ │ │ │ ├── AutomationParamAdapter.java
│ │ │ │ │ ├── BleDeviceListAdapter.java
│ │ │ │ │ ├── DeviceParamUpdates.java
│ │ │ │ │ ├── EspDeviceAdapter.java
│ │ │ │ │ ├── EventDeviceAdapter.java
│ │ │ │ │ ├── GroupAdapter.java
│ │ │ │ │ ├── GroupDeviceAdapter.java
│ │ │ │ │ ├── GroupNodeAdapter.java
│ │ │ │ │ ├── GroupShareAdapter.java
│ │ │ │ │ ├── GroupSharedWithAdapter.java
│ │ │ │ │ ├── GroupSharingPendingRequestAdapter.java
│ │ │ │ │ ├── GroupsPageAdapter.java
│ │ │ │ │ ├── HomeScreenPagerAdapter.java
│ │ │ │ │ ├── NodeAdapter.java
│ │ │ │ │ ├── NodeDetailsAdapter.java
│ │ │ │ │ ├── NotificationAdapter.java
│ │ │ │ │ ├── ParamAdapter.java
│ │ │ │ │ ├── ParamDiffCallback.java
│ │ │ │ │ ├── ParamSelectionAdapter.java
│ │ │ │ │ ├── SceneActionAdapter.java
│ │ │ │ │ ├── SceneAdapter.java
│ │ │ │ │ ├── SceneParamAdapter.java
│ │ │ │ │ ├── ScheduleActionAdapter.java
│ │ │ │ │ ├── ScheduleAdapter.java
│ │ │ │ │ ├── ScheduleParamAdapter.java
│ │ │ │ │ ├── SharedUserAdapter.java
│ │ │ │ │ ├── SharingRequestAdapter.java
│ │ │ │ │ ├── SystemServiceAdapter.java
│ │ │ │ │ ├── TabsPagerAdapter.kt
│ │ │ │ │ ├── UserProfileAdapter.java
│ │ │ │ │ └── WiFiListAdapter.java
│ │ │ │ ├── fragments
│ │ │ │ │ ├── AutomationFragment.java
│ │ │ │ │ ├── DeleteUserConfirmFragment.kt
│ │ │ │ │ ├── DeleteUserRequestFragment.kt
│ │ │ │ │ ├── DevicesFragment.java
│ │ │ │ │ ├── ForgotPasswordFragment.kt
│ │ │ │ │ ├── LoginFragment.kt
│ │ │ │ │ ├── ParamSelectionFragment.java
│ │ │ │ │ ├── ResetPasswordFragment.kt
│ │ │ │ │ ├── ScenesFragment.java
│ │ │ │ │ ├── SchedulesFragment.java
│ │ │ │ │ ├── SignUpFragment.kt
│ │ │ │ │ └── UserProfileFragment.java
│ │ │ │ ├── models
│ │ │ │ │ ├── Action.java
│ │ │ │ │ ├── ApiResponse.kt
│ │ │ │ │ ├── Automation.java
│ │ │ │ │ ├── BleDevice.kt
│ │ │ │ │ ├── Device.java
│ │ │ │ │ ├── EspNode.java
│ │ │ │ │ ├── EspOtaUpdate.kt
│ │ │ │ │ ├── Group.java
│ │ │ │ │ ├── GroupSharingRequest.kt
│ │ │ │ │ ├── MatterDeviceInfo.java
│ │ │ │ │ ├── NodeMetadata.java
│ │ │ │ │ ├── NotificationEvent.java
│ │ │ │ │ ├── Param.java
│ │ │ │ │ ├── ParamUpdateRequest.java
│ │ │ │ │ ├── Scene.java
│ │ │ │ │ ├── Schedule.java
│ │ │ │ │ ├── Service.java
│ │ │ │ │ ├── SharingRequest.kt
│ │ │ │ │ ├── TsData.kt
│ │ │ │ │ └── UpdateEvent.kt
│ │ │ │ ├── user_module
│ │ │ │ │ ├── ChangePasswordActivity.kt
│ │ │ │ │ ├── DeleteUserActivity.kt
│ │ │ │ │ ├── ForgotPasswordActivity.kt
│ │ │ │ │ └── SignUpConfirmActivity.kt
│ │ │ │ └── widgets
│ │ │ │ │ ├── AvsEmberBoldText.java
│ │ │ │ │ ├── AvsEmberRegularText.java
│ │ │ │ │ ├── BookerlyRegularText.java
│ │ │ │ │ ├── EspDropDown.java
│ │ │ │ │ ├── EspMarkerView.java
│ │ │ │ │ └── PaletteBar.java
│ │ │ │ ├── utils
│ │ │ │ ├── AppUpdateHelper.kt
│ │ │ │ ├── NodeUtils.kt
│ │ │ │ └── ParamUtils.kt
│ │ │ │ └── webrtc
│ │ │ │ ├── AwsV4Signer.java
│ │ │ │ ├── AwsV4SignerConstants.java
│ │ │ │ ├── Constants.java
│ │ │ │ ├── Event.java
│ │ │ │ ├── IoTCredentialsProvider.java
│ │ │ │ ├── KinesisVideoPeerConnection.java
│ │ │ │ ├── KinesisVideoSdpObserver.java
│ │ │ │ ├── Message.java
│ │ │ │ ├── Signaling.java
│ │ │ │ ├── SignalingListener.java
│ │ │ │ ├── SignalingServiceWebSocketClient.java
│ │ │ │ ├── WebRtcConstants.java
│ │ │ │ └── WebSocketClient.java
│ │ ├── libs
│ │ │ └── tickseekbar-37b1d67f64.aar
│ │ ├── proto
│ │ │ ├── constants.proto
│ │ │ ├── devices.proto
│ │ │ ├── devices_state.proto
│ │ │ ├── esp_local_ctrl.proto
│ │ │ ├── esp_rmaker_chal_resp.proto
│ │ │ ├── esp_rmaker_claim.proto
│ │ │ └── esp_rmaker_user_mapping.proto
│ │ └── res
│ │ │ ├── color
│ │ │ └── logout_text_color_state.xml
│ │ │ ├── drawable-hdpi
│ │ │ ├── ic_info.png
│ │ │ ├── ic_notify_rainmaker.png
│ │ │ ├── ic_right_arrow.png
│ │ │ └── ic_title_rainmaker.png
│ │ │ ├── drawable-mdpi
│ │ │ ├── ic_info.png
│ │ │ ├── ic_notify_rainmaker.png
│ │ │ ├── ic_right_arrow.png
│ │ │ └── ic_title_rainmaker.png
│ │ │ ├── drawable-xhdpi
│ │ │ ├── ic_info.png
│ │ │ ├── ic_notify_rainmaker.png
│ │ │ ├── ic_right_arrow.png
│ │ │ └── ic_title_rainmaker.png
│ │ │ ├── drawable-xxhdpi
│ │ │ ├── ic_info.png
│ │ │ ├── ic_notify_rainmaker.png
│ │ │ ├── ic_right_arrow.png
│ │ │ └── ic_title_rainmaker.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ ├── ic_esp_splash.png
│ │ │ ├── ic_info.png
│ │ │ ├── ic_notify_rainmaker.png
│ │ │ ├── ic_right_arrow.png
│ │ │ └── ic_title_rainmaker.png
│ │ │ ├── drawable
│ │ │ ├── bg.xml
│ │ │ ├── bg_activate.xml
│ │ │ ├── bg_badge.xml
│ │ │ ├── bg_btn.xml
│ │ │ ├── bg_dropdown.xml
│ │ │ ├── bg_edit_text.xml
│ │ │ ├── bg_group_tab.xml
│ │ │ ├── bg_group_tab_selected.xml
│ │ │ ├── bg_home_screen.jpg
│ │ │ ├── bg_marker.xml
│ │ │ ├── bg_transparent_button.xml
│ │ │ ├── bluetooth_icon.png
│ │ │ ├── checked.png
│ │ │ ├── ic_account_circle_white.png
│ │ │ ├── ic_add.xml
│ │ │ ├── ic_alert.xml
│ │ │ ├── ic_alexa.png
│ │ │ ├── ic_alexa_horizontal.png
│ │ │ ├── ic_alexa_vertical.png
│ │ │ ├── ic_arrow_left.xml
│ │ │ ├── ic_brightness_high.xml
│ │ │ ├── ic_brightness_low.xml
│ │ │ ├── ic_cct_high.xml
│ │ │ ├── ic_cct_low.xml
│ │ │ ├── ic_change_password.xml
│ │ │ ├── ic_checkbox.xml
│ │ │ ├── ic_checkbox_checked.xml
│ │ │ ├── ic_checkbox_indeterminate.xml
│ │ │ ├── ic_checkbox_off.xml
│ │ │ ├── ic_checkbox_on.xml
│ │ │ ├── ic_checkbox_unchecked.xml
│ │ │ ├── ic_checkbox_unselected.xml
│ │ │ ├── ic_claiming.xml
│ │ │ ├── ic_connect_device.xml
│ │ │ ├── ic_copy.xml
│ │ │ ├── ic_device.xml
│ │ │ ├── ic_device_air_conditioner.xml
│ │ │ ├── ic_device_bulb_cct.xml
│ │ │ ├── ic_device_bulb_rgb.xml
│ │ │ ├── ic_device_camera.xml
│ │ │ ├── ic_device_contact_sensor.xml
│ │ │ ├── ic_device_door_bell.xml
│ │ │ ├── ic_device_external_blinds.xml
│ │ │ ├── ic_device_fan.xml
│ │ │ ├── ic_device_garage_door.xml
│ │ │ ├── ic_device_internal_blinds.xml
│ │ │ ├── ic_device_light.xml
│ │ │ ├── ic_device_lock.xml
│ │ │ ├── ic_device_matter_controller.xml
│ │ │ ├── ic_device_motion_sensor.xml
│ │ │ ├── ic_device_off.xml
│ │ │ ├── ic_device_offline.xml
│ │ │ ├── ic_device_on.xml
│ │ │ ├── ic_device_outlet.xml
│ │ │ ├── ic_device_plug.xml
│ │ │ ├── ic_device_security_panel.xml
│ │ │ ├── ic_device_socket.xml
│ │ │ ├── ic_device_speaker.xml
│ │ │ ├── ic_device_switch.xml
│ │ │ ├── ic_device_temp_sensor.xml
│ │ │ ├── ic_device_thermostat.xml
│ │ │ ├── ic_device_thread_br.xml
│ │ │ ├── ic_device_tv.xml
│ │ │ ├── ic_device_washer.xml
│ │ │ ├── ic_down_arrow.xml
│ │ │ ├── ic_downloading.gif
│ │ │ ├── ic_error.xml
│ │ │ ├── ic_esp_splash.png
│ │ │ ├── ic_github.xml
│ │ │ ├── ic_google.xml
│ │ │ ├── ic_gva.png
│ │ │ ├── ic_info.xml
│ │ │ ├── ic_info_new.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── ic_lock.xml
│ │ │ ├── ic_lock_wifi.xml
│ │ │ ├── ic_menu_add.xml
│ │ │ ├── ic_more.xml
│ │ │ ├── ic_next_date.xml
│ │ │ ├── ic_no_camera_permission.xml
│ │ │ ├── ic_no_devices.xml
│ │ │ ├── ic_no_location_permission.xml
│ │ │ ├── ic_node_details.xml
│ │ │ ├── ic_node_info.xml
│ │ │ ├── ic_notification.xml
│ │ │ ├── ic_notify_accept.xml
│ │ │ ├── ic_notify_decline.xml
│ │ │ ├── ic_output_disable.xml
│ │ │ ├── ic_output_off.xml
│ │ │ ├── ic_output_on.xml
│ │ │ ├── ic_plus.xml
│ │ │ ├── ic_pop.xml
│ │ │ ├── ic_prev.xml
│ │ │ ├── ic_prev_date.xml
│ │ │ ├── ic_provisioning.xml
│ │ │ ├── ic_refresh.xml
│ │ │ ├── ic_remove_circle.xml
│ │ │ ├── ic_remove_device.xml
│ │ │ ├── ic_remove_user.xml
│ │ │ ├── ic_right_arrow.xml
│ │ │ ├── ic_saturation_high.xml
│ │ │ ├── ic_saturation_low.xml
│ │ │ ├── ic_scan_qr_code.xml
│ │ │ ├── ic_side_arrow.xml
│ │ │ ├── ic_status_offline.xml
│ │ │ ├── ic_status_online.xml
│ │ │ ├── ic_streaming_video.xml
│ │ │ ├── ic_switch_off.xml
│ │ │ ├── ic_switch_on.xml
│ │ │ ├── ic_tab_automations.xml
│ │ │ ├── ic_tab_devices.xml
│ │ │ ├── ic_tab_scenes.xml
│ │ │ ├── ic_tab_schedules.xml
│ │ │ ├── ic_tab_setting.xml
│ │ │ ├── ic_ts_chart.xml
│ │ │ ├── ic_update.xml
│ │ │ ├── ic_update_failed.xml
│ │ │ ├── ic_user.xml
│ │ │ ├── ic_user_profile.xml
│ │ │ ├── ic_we_chat.xml
│ │ │ ├── ic_wifi.xml
│ │ │ ├── ic_wifi_1.xml
│ │ │ ├── ic_wifi_2.xml
│ │ │ ├── ic_wifi_3.xml
│ │ │ ├── ic_wifi_full.xml
│ │ │ ├── ic_wifi_select.xml
│ │ │ └── qr_code_corner.xml
│ │ │ ├── layout
│ │ │ ├── activity_about.xml
│ │ │ ├── activity_account.xml
│ │ │ ├── activity_account_settings.xml
│ │ │ ├── activity_actions.xml
│ │ │ ├── activity_add_device.xml
│ │ │ ├── activity_alexa_app_linking.xml
│ │ │ ├── activity_automation_detail.xml
│ │ │ ├── activity_bleprovision_landing.xml
│ │ │ ├── activity_change_password.xml
│ │ │ ├── activity_claiming.xml
│ │ │ ├── activity_cmd_resp.xml
│ │ │ ├── activity_consent.xml
│ │ │ ├── activity_controller_login.xml
│ │ │ ├── activity_delete_user.xml
│ │ │ ├── activity_esp_device.xml
│ │ │ ├── activity_esp_main.xml
│ │ │ ├── activity_event_devices.xml
│ │ │ ├── activity_forgot_password.xml
│ │ │ ├── activity_fw_update.xml
│ │ │ ├── activity_group_detail.xml
│ │ │ ├── activity_group_info.xml
│ │ │ ├── activity_group_node_selection.xml
│ │ │ ├── activity_group_share_requests.xml
│ │ │ ├── activity_groups.xml
│ │ │ ├── activity_groups_selection.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_node_details.xml
│ │ │ ├── activity_notifications.xml
│ │ │ ├── activity_pop.xml
│ │ │ ├── activity_provision.xml
│ │ │ ├── activity_provision_landing.xml
│ │ │ ├── activity_scene_detail.xml
│ │ │ ├── activity_schedule_detail.xml
│ │ │ ├── activity_sign_up_confirm.xml
│ │ │ ├── activity_splash.xml
│ │ │ ├── activity_tbr.xml
│ │ │ ├── activity_thread_config.xml
│ │ │ ├── activity_time_series.xml
│ │ │ ├── activity_voice_services.xml
│ │ │ ├── activity_we_chat_progress.xml
│ │ │ ├── activity_webrtc_config.xml
│ │ │ ├── activity_webrtc_main.xml
│ │ │ ├── activity_wifi_config.xml
│ │ │ ├── activity_wifi_scan_list.xml
│ │ │ ├── app_actionbar.xml
│ │ │ ├── btn_add_device.xml
│ │ │ ├── btn_delete_user.xml
│ │ │ ├── btn_github.xml
│ │ │ ├── btn_google.xml
│ │ │ ├── btn_remove_device.xml
│ │ │ ├── button.xml
│ │ │ ├── content_actions.xml
│ │ │ ├── content_alexa_app_linking.xml
│ │ │ ├── content_automation_detail.xml
│ │ │ ├── content_bleprovision_landing.xml
│ │ │ ├── content_claiming.xml
│ │ │ ├── content_esp_device.xml
│ │ │ ├── content_fw_update.xml
│ │ │ ├── content_node_device_list.xml
│ │ │ ├── content_scene_detail.xml
│ │ │ ├── content_schedule_detail.xml
│ │ │ ├── content_wifi_config.xml
│ │ │ ├── current_user_details.xml
│ │ │ ├── dialog_attribute.xml
│ │ │ ├── dialog_base_url.xml
│ │ │ ├── dialog_group_share_email.xml
│ │ │ ├── dialog_param_boolean.xml
│ │ │ ├── dialog_param_int.xml
│ │ │ ├── dialog_param_slider.xml
│ │ │ ├── dialog_param_string.xml
│ │ │ ├── dialog_prefix.xml
│ │ │ ├── dialog_user_email.xml
│ │ │ ├── dialog_wifi_network.xml
│ │ │ ├── double_seekbar.xml
│ │ │ ├── esp_tool_bar.xml
│ │ │ ├── fragment_automations.xml
│ │ │ ├── fragment_delete_user_confirm.xml
│ │ │ ├── fragment_delete_user_req.xml
│ │ │ ├── fragment_devices.xml
│ │ │ ├── fragment_forgot_password.xml
│ │ │ ├── fragment_login.xml
│ │ │ ├── fragment_reset_password.xml
│ │ │ ├── fragment_scenes.xml
│ │ │ ├── fragment_schedules.xml
│ │ │ ├── fragment_signup.xml
│ │ │ ├── fragment_user_profile.xml
│ │ │ ├── item_account.xml
│ │ │ ├── item_account_setting.xml
│ │ │ ├── item_action.xml
│ │ │ ├── item_add_user.xml
│ │ │ ├── item_attribute_param.xml
│ │ │ ├── item_automation.xml
│ │ │ ├── item_automation_action.xml
│ │ │ ├── item_ble_scan.xml
│ │ │ ├── item_esp_device.xml
│ │ │ ├── item_event_device.xml
│ │ │ ├── item_group.xml
│ │ │ ├── item_group_device.xml
│ │ │ ├── item_group_node.xml
│ │ │ ├── item_group_request_pending.xml
│ │ │ ├── item_group_request_shared_with.xml
│ │ │ ├── item_group_selection.xml
│ │ │ ├── item_node.xml
│ │ │ ├── item_node_info.xml
│ │ │ ├── item_notification.xml
│ │ │ ├── item_param.xml
│ │ │ ├── item_param_hue.xml
│ │ │ ├── item_param_selection.xml
│ │ │ ├── item_param_switch.xml
│ │ │ ├── item_scene.xml
│ │ │ ├── item_schedule.xml
│ │ │ ├── item_schedule_param.xml
│ │ │ ├── item_shared_user.xml
│ │ │ ├── item_sharing_request.xml
│ │ │ ├── item_system_service.xml
│ │ │ ├── item_user_profile.xml
│ │ │ ├── item_wifi_access_point.xml
│ │ │ ├── layout_group_page.xml
│ │ │ ├── layout_marker.xml
│ │ │ ├── param_selection_dialog_layout.xml
│ │ │ ├── qr_code_frame_layout.xml
│ │ │ └── toolbar.xml
│ │ │ ├── menu
│ │ │ ├── menu_bottom_tabs.xml
│ │ │ ├── menu_group.xml
│ │ │ └── menu_toolbar.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_esp_rainmaker_launcher.png
│ │ │ └── ic_esp_rainmaker_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_esp_rainmaker_launcher.png
│ │ │ └── ic_esp_rainmaker_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_esp_rainmaker_launcher.png
│ │ │ └── ic_esp_rainmaker_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_esp_rainmaker_launcher.png
│ │ │ └── ic_esp_rainmaker_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_esp_rainmaker_launcher.png
│ │ │ └── ic_esp_rainmaker_launcher_round.png
│ │ │ ├── raw
│ │ │ └── rainmaker_ca.crt
│ │ │ ├── values-hdpi
│ │ │ └── dimens.xml
│ │ │ ├── values-xhdpi
│ │ │ └── dimens.xml
│ │ │ ├── values-xxhdpi
│ │ │ └── dimens.xml
│ │ │ ├── values-xxxhdpi
│ │ │ └── dimens.xml
│ │ │ ├── values-zh-rCN
│ │ │ └── strings.xml
│ │ │ ├── values-zh-rSG
│ │ │ └── strings.xml
│ │ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── strings.xml
│ │ │ ├── styles.xml
│ │ │ └── timezone_list.xml
│ │ │ └── xml
│ │ │ ├── network_security_config.xml
│ │ │ └── prefrences.xml
│ └── test
│ │ └── java
│ │ └── com
│ │ └── espressif
│ │ └── espressif
│ │ └── ExampleUnitTest.java
└── third_party
│ └── connectedhomeip
│ ├── LICENSE
│ └── libs
│ ├── AndroidPlatform.jar
│ ├── CHIPClusterID.jar
│ ├── CHIPClusters.jar
│ ├── CHIPController.jar
│ ├── CHIPInteractionModel.jar
│ ├── OnboardingPayload.jar
│ ├── README.md
│ ├── SetupPayloadParser.jar
│ ├── jniLibs
│ ├── README.md
│ ├── arm64-v8a
│ │ ├── libCHIPController.so
│ │ ├── libSetupPayloadParser.so
│ │ └── libc++_shared.so
│ ├── armeabi-v7a
│ │ ├── libCHIPController.so
│ │ ├── libSetupPayloadParser.so
│ │ └── libc++_shared.so
│ ├── x86
│ │ ├── libCHIPController.so
│ │ ├── libSetupPayloadParser.so
│ │ └── libc++_shared.so
│ └── x86_64
│ │ ├── libCHIPController.so
│ │ ├── libSetupPayloadParser.so
│ │ └── libc++_shared.so
│ ├── libMatterJson.jar
│ └── libMatterTlv.jar
├── build.gradle
├── cluster_doc_image1.png
├── cluster_doc_image2.png
├── cluster_doc_image3.png
├── gradle.properties
├── gradle
├── libs.versions.toml
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 |
5 | # Files for the ART/Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 | out/
15 |
16 | # Gradle files
17 | .gradle/
18 | build/
19 |
20 | # Local configuration file (sdk path, etc)
21 | local.properties
22 |
23 | # Proguard folder generated by Eclipse
24 | proguard/
25 |
26 | # Log Files
27 | *.log
28 |
29 | # Android Studio Navigation editor temp files
30 | .navigation/
31 |
32 | # Android Studio captures folder
33 | captures/
34 |
35 | # IntelliJ
36 | *.iml
37 | .idea/workspace.xml
38 | .idea/tasks.xml
39 | .idea/gradle.xml
40 | .idea/assetWizardSettings.xml
41 | .idea/dictionaries
42 | .idea/libraries
43 | .idea/caches
44 |
45 | # Keystore files
46 | # Uncomment the following line if you do not want to check your keystore files in.
47 | #*.jks
48 |
49 | # External native build folder generated in Android Studio 2.2 and later
50 | .externalNativeBuild
51 |
52 | # Freeline
53 | freeline.py
54 | freeline/
55 | freeline_project_description.json
56 |
57 | # fastlane
58 | fastlane/report.xml
59 | fastlane/Preview.html
60 | fastlane/screenshots
61 | fastlane/test_output
62 | fastlane/readme.md
63 |
64 | app/src/main/assets/api_key.txt
65 |
66 | # Built application files
67 | /*/build/
68 |
69 | # Crashlytics configuations
70 | com_crashlytics_export_strings.xml
71 |
72 | # Local configuration file (sdk path, etc)
73 | local.properties
74 |
75 | # Gradle generated files
76 | .gradle/
77 |
78 | # Signing files
79 | .signing/
80 |
81 | # User-specific configurations
82 | .idea/*
83 | *.iml
84 |
85 | # OS-specific files
86 | .DS_Store
87 | .DS_Storegit add
88 | .D
89 | ._*
90 | .Spotlight-V100
91 | .Trashes
92 | ehthumbs.db
93 | Thumbs.db
--------------------------------------------------------------------------------
/.gitlab-ci.yml:
--------------------------------------------------------------------------------
1 | stages:
2 | - build
3 |
4 | build_apk:
5 | stage: build
6 | image: espressif/idf:latest
7 | tags:
8 | - build
9 |
10 | variables:
11 | deployment: "production"
12 |
13 | rules:
14 | - if: '$CI_MERGE_REQUEST_TITLE =~ /^\s*(WIP|Draft)/'
15 | when: never
16 | - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
17 | when: always
18 |
19 | script:
20 | - rm -rf /tmp/esp-rainmaker-jenkins-ci
21 | - git clone https://$CI_GITLAB_USERNAME_APP_FRAMEWORKS:$CI_GITLAB_PASSWORD_APP_FRAMEWORKS@gitlab.espressif.cn:6688/app-frameworks/esp-rainmaker-jenkins-ci.git
22 | - cd esp-rainmaker-jenkins-ci
23 | - pip3 install -r requirements.txt
24 | - python3 key_update.py android-rm-app.params --key branch --value $CI_COMMIT_REF_NAME
25 | - python3 key_update.py android-rm-app.params --key deployment --value $deployment
26 | - python3 -u git_jenkins_ci_gateway_cli.py android-rm-app --gateway_branch test/android-rm-app/$CI_COMMIT_REF_NAME
27 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "847141165224",
4 | "firebase_url": "https://esp-rainmaker.firebaseio.com",
5 | "project_id": "esp-rainmaker",
6 | "storage_bucket": "esp-rainmaker.appspot.com"
7 | },
8 | "client": [
9 | {
10 | "client_info": {
11 | "mobilesdk_app_id": "1:847141165224:android:631c1ad4f87e52e8264a9d",
12 | "android_client_info": {
13 | "package_name": "com.espressif.rainmaker"
14 | }
15 | },
16 | "oauth_client": [
17 | {
18 | "client_id": "847141165224-mfdjg1ju1r4t499gpc6bbb20vu35diaq.apps.googleusercontent.com",
19 | "client_type": 3
20 | }
21 | ],
22 | "api_key": [
23 | {
24 | "current_key": "AIzaSyD03vVsPOFIaUc61aJrTpDg5Pd1Y4lIzgI"
25 | }
26 | ],
27 | "services": {
28 | "appinvite_service": {
29 | "other_platform_oauth_client": [
30 | {
31 | "client_id": "847141165224-mfdjg1ju1r4t499gpc6bbb20vu35diaq.apps.googleusercontent.com",
32 | "client_type": 3
33 | }
34 | ]
35 | }
36 | }
37 | }
38 | ],
39 | "configuration_version": "1"
40 | }
--------------------------------------------------------------------------------
/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
22 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/espressif/espressif/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.espressif;
16 |
17 | import android.content.Context;
18 | import androidx.test.InstrumentationRegistry;
19 | import androidx.test.runner.AndroidJUnit4;
20 |
21 | import org.junit.Test;
22 | import org.junit.runner.RunWith;
23 |
24 | import static org.junit.Assert.*;
25 |
26 | /**
27 | * Instrumented test, which will execute on an Android device.
28 | *
29 | * @see Testing documentation
30 | */
31 | @RunWith(AndroidJUnit4.class)
32 | public class ExampleInstrumentedTest {
33 | @Test
34 | public void useAppContext() throws Exception {
35 | // Context of the app under test.
36 | Context appContext = InstrumentationRegistry.getTargetContext();
37 |
38 | assertEquals("com.espressif.espressif", appContext.getPackageName());
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/AmazonEmberDisplay_Bd.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/assets/fonts/AmazonEmberDisplay_Bd.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/AmazonEmberDisplay_He.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/assets/fonts/AmazonEmberDisplay_He.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/AmazonEmberDisplay_Lt.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/assets/fonts/AmazonEmberDisplay_Lt.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/AmazonEmberDisplay_Md.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/assets/fonts/AmazonEmberDisplay_Md.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/AmazonEmberDisplay_Rg.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/assets/fonts/AmazonEmberDisplay_Rg.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/Bookerly-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/assets/fonts/Bookerly-Bold.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/Bookerly-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/assets/fonts/Bookerly-BoldItalic.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/Bookerly-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/assets/fonts/Bookerly-Italic.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/Bookerly-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/assets/fonts/Bookerly-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/ic_esp_rainmaker_launcher_web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/ic_esp_rainmaker_launcher_web.png
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/AppRegister.java:
--------------------------------------------------------------------------------
1 | package com.espressif;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 |
7 | import com.espressif.rainmaker.BuildConfig;
8 | import com.tencent.mm.opensdk.openapi.IWXAPI;
9 | import com.tencent.mm.opensdk.openapi.WXAPIFactory;
10 |
11 | public class AppRegister extends BroadcastReceiver {
12 |
13 | @Override
14 | public void onReceive(Context context, Intent intent) {
15 | final IWXAPI api = WXAPIFactory.createWXAPI(context, null, false);
16 |
17 | // Register the app to WeChat
18 | api.registerApp(BuildConfig.CHINA_WE_CHAT_APP_ID);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/cloudapi/AlexaTokenAuthenticator.kt:
--------------------------------------------------------------------------------
1 | // Copyright 2025 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.cloudapi
16 |
17 | import android.text.TextUtils
18 | import android.util.Log
19 | import com.espressif.AppConstants
20 | import com.espressif.EspApplication
21 | import okhttp3.Authenticator
22 | import okhttp3.Request
23 | import okhttp3.Response
24 | import okhttp3.Route
25 |
26 | class AlexaTokenAuthenticator(private val appContext: EspApplication) : Authenticator {
27 |
28 | companion object {
29 | const val TAG = "AlexaTokenAuthenticator"
30 | }
31 |
32 | override fun authenticate(route: Route?, response: Response): Request? {
33 |
34 | Log.d(TAG, "=============== Authenticate callback ===============")
35 | Log.d(TAG, "Response code : " + response.code)
36 | val newToken = AlexaApiManager.getInstance(appContext).newToken
37 | val headerValue = "Bearer $newToken"
38 |
39 | if (!TextUtils.isEmpty(newToken)) {
40 | Log.d(TAG, "Retrying with new token")
41 | // Add new header to rejected request and retry it
42 | return response.request.newBuilder()
43 | .header(AppConstants.HEADER_AUTHORIZATION, headerValue)
44 | .build()
45 | } else {
46 | return null
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/cloudapi/ApiResponseListener.kt:
--------------------------------------------------------------------------------
1 | // Copyright 2023 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.cloudapi
16 |
17 | import android.os.Bundle
18 |
19 | /**
20 | * This response listener is used to pass received response from ApiManager to calling class.
21 | */
22 | interface ApiResponseListener {
23 |
24 | fun onSuccess(data: Bundle?)
25 | fun onResponseFailure(exception: Exception)
26 | fun onNetworkFailure(exception: Exception)
27 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/cloudapi/CloudException.java:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.cloudapi;
16 |
17 | /**
18 | * This class represents custom exception. Application will throw this exception when any error received from cloud API.
19 | */
20 | public class CloudException extends RuntimeException {
21 |
22 | public CloudException(String message) {
23 | super(message);
24 | }
25 |
26 | public CloudException(String message, Throwable cause) {
27 | super(message, cause);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/cloudapi/DeviceOperationRequest.java:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.cloudapi;
16 |
17 | import com.espressif.AppConstants;
18 | import com.google.gson.annotations.SerializedName;
19 |
20 | public class DeviceOperationRequest {
21 |
22 | @SerializedName(AppConstants.KEY_NODE_ID)
23 | private String nodeId;
24 |
25 | @SerializedName(AppConstants.KEY_SECRET_KEY)
26 | private String secretKey;
27 |
28 | @SerializedName(AppConstants.KEY_OPERATION)
29 | private String operation;
30 |
31 | public String getNodeId() {
32 | return nodeId;
33 | }
34 |
35 | public void setNodeId(String nodeId) {
36 | this.nodeId = nodeId;
37 | }
38 |
39 | public String getSecretKey() {
40 | return secretKey;
41 | }
42 |
43 | public void setSecretKey(String secretKey) {
44 | this.secretKey = secretKey;
45 | }
46 |
47 | public String getOperation() {
48 | return operation;
49 | }
50 |
51 | public void setOperation(String operation) {
52 | this.operation = operation;
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/db/GroupDao.java:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.db;
16 |
17 | import androidx.room.Dao;
18 | import androidx.room.Delete;
19 | import androidx.room.Insert;
20 | import androidx.room.OnConflictStrategy;
21 | import androidx.room.Query;
22 |
23 | import com.espressif.AppConstants;
24 | import com.espressif.ui.models.Group;
25 |
26 | import java.util.List;
27 |
28 | @Dao
29 | public interface GroupDao {
30 |
31 | @Query("SELECT * FROM " + AppConstants.GROUP_TABLE)
32 | List getGroupsFromStorage();
33 |
34 | /**
35 | * Update group if it exist in database, insert group otherwise.
36 | *
37 | * @param group Group to be inserted / updated.
38 | */
39 | @Insert(onConflict = OnConflictStrategy.REPLACE)
40 | void insertOrUpdate(Group group);
41 |
42 | /**
43 | * Delete the group from database.
44 | *
45 | * @param group Group to be deleted.
46 | */
47 | @Delete
48 | void delete(Group group);
49 |
50 | /**
51 | * Delete all groups from group table.
52 | */
53 | @Query("DELETE FROM " + AppConstants.GROUP_TABLE)
54 | void deleteAll();
55 | }
56 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/db/NodeDao.java:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.db;
16 |
17 | import androidx.room.Dao;
18 | import androidx.room.Delete;
19 | import androidx.room.Insert;
20 | import androidx.room.OnConflictStrategy;
21 | import androidx.room.Query;
22 |
23 | import com.espressif.AppConstants;
24 | import com.espressif.ui.models.EspNode;
25 |
26 | import java.util.List;
27 |
28 | @Dao
29 | public interface NodeDao {
30 |
31 | @Query("SELECT * FROM " + AppConstants.NODE_TABLE)
32 | List getNodesFromStorage();
33 |
34 | /**
35 | * Update node if it exist in database, insert node otherwise.
36 | *
37 | * @param node Node to be inserted / updated.
38 | */
39 | @Insert(onConflict = OnConflictStrategy.REPLACE)
40 | void insertOrUpdate(EspNode node);
41 |
42 | /**
43 | * Delete the node from database.
44 | *
45 | * @param node Node to be deleted.
46 | */
47 | @Delete
48 | void delete(EspNode node);
49 |
50 | /**
51 | * Delete all nodes from node table.
52 | */
53 | @Query("DELETE FROM " + AppConstants.NODE_TABLE)
54 | void deleteAll();
55 | }
56 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/db/NotificationDao.java:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.db;
16 |
17 | import androidx.room.Dao;
18 | import androidx.room.Delete;
19 | import androidx.room.Insert;
20 | import androidx.room.OnConflictStrategy;
21 | import androidx.room.Query;
22 |
23 | import com.espressif.AppConstants;
24 | import com.espressif.ui.models.NotificationEvent;
25 |
26 | import java.util.List;
27 |
28 | @Dao
29 | public interface NotificationDao {
30 |
31 | @Query("SELECT * FROM " + AppConstants.NOTIFICATION_TABLE + " ORDER BY " + AppConstants.KEY_TIMESTAMP + " DESC")
32 | List getNotificationsFromStorage();
33 |
34 | /**
35 | * Update group if it exist in database, insert group otherwise.
36 | *
37 | * @param notification Notification event to be inserted / updated.
38 | */
39 | @Insert(onConflict = OnConflictStrategy.REPLACE)
40 | void insertOrUpdate(NotificationEvent notification);
41 |
42 | /**
43 | * Delete the notification from database.
44 | *
45 | * @param notification Notification event to be deleted.
46 | */
47 | @Delete
48 | void delete(NotificationEvent notification);
49 |
50 | /**
51 | * Delete all notifications from the table.
52 | */
53 | @Query("DELETE FROM " + AppConstants.NOTIFICATION_TABLE)
54 | void deleteAll();
55 | }
56 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/db/StringArrayListConverters.java:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.db;
16 |
17 | import androidx.room.TypeConverter;
18 |
19 | import com.google.gson.Gson;
20 | import com.google.gson.reflect.TypeToken;
21 |
22 | import java.lang.reflect.Type;
23 | import java.util.ArrayList;
24 |
25 | public class StringArrayListConverters {
26 |
27 | @TypeConverter
28 | public static ArrayList fromString(String value) {
29 | Type listType = new TypeToken>() {
30 | }.getType();
31 | return new Gson().fromJson(value, listType);
32 | }
33 |
34 | @TypeConverter
35 | public static String fromArrayList(ArrayList list) {
36 | Gson gson = new Gson();
37 | String json = gson.toJson(list);
38 | return json;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/EventSelectionListener.java:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui;
16 |
17 | import com.espressif.ui.models.Device;
18 | import com.espressif.ui.models.Param;
19 |
20 | public interface EventSelectionListener {
21 |
22 | void onEventSelected(Device device, Param param, String str);
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/adapters/TabsPagerAdapter.kt:
--------------------------------------------------------------------------------
1 | // Copyright 2023 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.adapters
16 |
17 | import android.content.Context
18 | import androidx.annotation.StringRes
19 | import androidx.fragment.app.Fragment
20 | import androidx.fragment.app.FragmentManager
21 | import androidx.fragment.app.FragmentPagerAdapter
22 |
23 | import com.espressif.rainmaker.BuildConfig
24 | import com.espressif.rainmaker.R
25 | import com.espressif.ui.fragments.LoginFragment
26 | import com.espressif.ui.fragments.SignUpFragment
27 |
28 | class TabsPagerAdapter(val context: Context, fm: FragmentManager) : FragmentPagerAdapter(fm) {
29 |
30 | @StringRes
31 | private val TAB_TITLES = intArrayOf(R.string.tab_login, R.string.tab_sign_up)
32 |
33 | override fun getCount(): Int {
34 | // Show 2 pages.
35 |
36 | if (BuildConfig.isChinaRegion) {
37 | return 1
38 | }
39 | return 2
40 | }
41 |
42 | override fun getItem(position: Int): Fragment {
43 | return when (position) {
44 | 0 -> LoginFragment()
45 | 1 -> SignUpFragment()
46 | else -> LoginFragment()
47 | }
48 | }
49 |
50 | override fun getPageTitle(position: Int): CharSequence? {
51 | return context.resources.getString(TAB_TITLES[position])
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/models/ApiResponse.kt:
--------------------------------------------------------------------------------
1 | // Copyright 2025 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.models
16 |
17 | import okhttp3.ResponseBody
18 |
19 | data class ApiResponse(
20 | var nodeId: String? = null,
21 | var responseBody: ResponseBody? = null,
22 | var isSuccessful: Boolean = false,
23 | var throwable: Throwable? = null
24 | )
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/models/BleDevice.kt:
--------------------------------------------------------------------------------
1 | // Copyright 2025 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.models
16 |
17 | import android.bluetooth.BluetoothDevice
18 |
19 | data class BleDevice @JvmOverloads constructor(
20 | var name: String? = null,
21 | var bluetoothDevice: BluetoothDevice? = null
22 | )
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/models/EspOtaUpdate.kt:
--------------------------------------------------------------------------------
1 | // Copyright 2025 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.models
16 |
17 | import android.os.Parcelable
18 | import kotlinx.parcelize.Parcelize
19 |
20 | @Parcelize
21 | data class EspOtaUpdate @JvmOverloads constructor(
22 | var nodeId: String,
23 | var otaAvailable: Boolean = false,
24 | var status: String? = null,
25 | var otaJobID: String? = null,
26 | var otaStatusDescription: String? = null,
27 | var fwVersion: String? = null,
28 | var fileSize: Int = 0,
29 | var additionalInfo: String? = null,
30 | var timestamp: Long = 0L
31 | ) : Parcelable
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/models/GroupSharingRequest.kt:
--------------------------------------------------------------------------------
1 | // Copyright 2025 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.models
16 |
17 | import android.os.Parcelable
18 | import kotlinx.parcelize.Parcelize
19 |
20 | @Parcelize
21 | data class GroupSharingRequest(
22 | var reqId: String,
23 | var reqStatus: String? = null,
24 | var userName: ArrayList? = null,
25 | var primaryUserName: ArrayList? = null,
26 | var reqTime: Long = 0L,
27 | var group_ids: ArrayList? = null,
28 | var group_names: ArrayList? = null,
29 | var metadata: String? = null
30 | ) : Parcelable
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/models/ParamUpdateRequest.java:
--------------------------------------------------------------------------------
1 | // Copyright 2023 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.models;
16 |
17 | import com.espressif.cloudapi.ApiResponseListener;
18 | import com.google.gson.JsonObject;
19 |
20 | public class ParamUpdateRequest {
21 |
22 | public JsonObject body;
23 | public ApiResponseListener listener;
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/models/SharingRequest.kt:
--------------------------------------------------------------------------------
1 | // Copyright 2025 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.models
16 |
17 | import android.os.Parcelable
18 | import kotlinx.parcelize.Parcelize
19 |
20 | @Parcelize
21 | data class SharingRequest @JvmOverloads constructor(
22 | var reqId: String,
23 | var userName: String? = null,
24 | var reqStatus: String? = null,
25 | var primaryUserName: String? = null,
26 | var reqTime: Long = 0,
27 | var nodeIds: ArrayList? = null,
28 | var metadata: String? = null
29 | ) : Parcelable
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/models/TsData.kt:
--------------------------------------------------------------------------------
1 | // Copyright 2025 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.models
16 |
17 | import android.os.Parcelable
18 | import kotlinx.parcelize.Parcelize
19 |
20 | @Parcelize
21 | data class TsData(
22 | val timeStamp: Long,
23 | val value: Double?
24 | ) : Parcelable
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/models/UpdateEvent.kt:
--------------------------------------------------------------------------------
1 | // Copyright 2025 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.models
16 |
17 | import android.os.Bundle
18 | import com.espressif.AppConstants.Companion.UpdateEventType
19 |
20 | data class UpdateEvent @JvmOverloads constructor(
21 | val eventType: UpdateEventType,
22 | var data: Bundle? = null
23 | )
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/widgets/AvsEmberBoldText.java:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.widgets;
16 |
17 | import android.content.Context;
18 | import android.graphics.Typeface;
19 | import android.util.AttributeSet;
20 |
21 | public class AvsEmberBoldText extends androidx.appcompat.widget.AppCompatTextView {
22 |
23 | public AvsEmberBoldText(Context context, AttributeSet attrs) {
24 | super(context, attrs);
25 | this.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/AmazonEmberDisplay_Bd.ttf"));
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/widgets/AvsEmberRegularText.java:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.widgets;
16 |
17 | import android.content.Context;
18 | import android.graphics.Typeface;
19 | import android.util.AttributeSet;
20 |
21 | public class AvsEmberRegularText extends androidx.appcompat.widget.AppCompatTextView {
22 |
23 | public AvsEmberRegularText(Context context, AttributeSet attrs) {
24 | super(context, attrs);
25 | this.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/AmazonEmberDisplay_Rg.ttf"));
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/ui/widgets/BookerlyRegularText.java:
--------------------------------------------------------------------------------
1 | // Copyright 2021 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.ui.widgets;
16 |
17 | import android.content.Context;
18 | import android.graphics.Typeface;
19 | import android.util.AttributeSet;
20 |
21 | public class BookerlyRegularText extends androidx.appcompat.widget.AppCompatTextView {
22 |
23 | public BookerlyRegularText(Context context, AttributeSet attrs) {
24 | super(context, attrs);
25 | this.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/Bookerly-Regular.ttf"));
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/webrtc/AwsV4SignerConstants.java:
--------------------------------------------------------------------------------
1 | package com.espressif.webrtc;
2 |
3 | public final class AwsV4SignerConstants {
4 | static final String ALGORITHM_AWS4_HMAC_SHA_256 = "AWS4-HMAC-SHA256";
5 | static final String AWS4_REQUEST_TYPE = "aws4_request";
6 | static final String SERVICE = "kinesisvideo";
7 | static final String X_AMZ_ALGORITHM = "X-Amz-Algorithm";
8 | static final String X_AMZ_CREDENTIAL = "X-Amz-Credential";
9 | static final String X_AMZ_DATE = "X-Amz-Date";
10 | static final String X_AMZ_EXPIRES = "X-Amz-Expires";
11 | static final String X_AMZ_SECURITY_TOKEN = "X-Amz-Security-Token";
12 | static final String X_AMZ_SIGNATURE = "X-Amz-Signature";
13 | static final String X_AMZ_SIGNED_HEADERS = "X-Amz-SignedHeaders";
14 | static final String NEW_LINE_DELIMITER = "\n";
15 | static final String DATE_PATTERN = "yyyyMMdd";
16 | static final String TIME_PATTERN = "yyyyMMdd'T'HHmmss'Z'";
17 | static final String METHOD = "GET";
18 | static final String SIGNED_HEADERS = "host";
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/webrtc/Constants.java:
--------------------------------------------------------------------------------
1 | package com.espressif.webrtc;
2 |
3 | public class Constants {
4 | /**
5 | * SDK identifier
6 | */
7 | public static final String APP_NAME = "aws-kvs-webrtc-android-client";
8 | /**
9 | * SDK version identifier
10 | */
11 | public static final String VERSION = "1.0.0";
12 |
13 | /**
14 | * Query parameter for Channel ARN. Used for calling Kinesis Video Websocket APIs.
15 | */
16 | public static final String CHANNEL_ARN_QUERY_PARAM = "X-Amz-ChannelARN";
17 |
18 | /**
19 | * Query parameter for Client Id. Only used for viewers. Used for calling Kinesis Video Websocket APIs.
20 | */
21 | public static final String CLIENT_ID_QUERY_PARAM = "X-Amz-ClientId";
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/webrtc/IoTCredentialsProvider.java:
--------------------------------------------------------------------------------
1 | package com.espressif.webrtc;
2 |
3 | import com.amazonaws.auth.AWSCredentials;
4 | import com.amazonaws.auth.AWSCredentialsProvider;
5 | import com.amazonaws.auth.BasicSessionCredentials;
6 |
7 | public class IoTCredentialsProvider implements AWSCredentialsProvider {
8 | private AWSCredentials credentials;
9 |
10 | public IoTCredentialsProvider(String accessKeyId, String secretKey, String sessionToken) {
11 | this.credentials = new BasicSessionCredentials(accessKeyId, secretKey, sessionToken);
12 | }
13 |
14 | @Override
15 | public AWSCredentials getCredentials() {
16 | return credentials;
17 | }
18 |
19 | @Override
20 | public void refresh() {
21 | // Not implemented for this simple case
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/webrtc/KinesisVideoSdpObserver.java:
--------------------------------------------------------------------------------
1 | package com.espressif.webrtc;
2 |
3 | import android.util.Log;
4 |
5 | import org.webrtc.SdpObserver;
6 | import org.webrtc.SessionDescription;
7 |
8 | public class KinesisVideoSdpObserver implements SdpObserver {
9 |
10 | protected static final String TAG = KinesisVideoSdpObserver.class.getSimpleName();
11 |
12 | @Override
13 | public void onCreateSuccess(final SessionDescription sessionDescription) {
14 |
15 | Log.d(TAG, "onCreateSuccess(): SDP=" + sessionDescription.description);
16 | }
17 |
18 | @Override
19 | public void onSetSuccess() {
20 |
21 | Log.d(TAG, "onSetSuccess(): SDP");
22 | }
23 |
24 | @Override
25 | public void onCreateFailure(String error) {
26 |
27 | Log.e(TAG, "onCreateFailure(): Error=" + error);
28 | }
29 |
30 | @Override
31 | public void onSetFailure(String error) {
32 |
33 | Log.e(TAG, "onSetFailure(): Error=" + error);
34 |
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/espressif/webrtc/Signaling.java:
--------------------------------------------------------------------------------
1 | package com.espressif.webrtc;
2 |
3 |
4 | public interface Signaling {
5 |
6 | void onSdpOffer(Event event);
7 |
8 | void onSdpAnswer(Event event);
9 |
10 | void onIceCandidate(Event event);
11 |
12 | void onError(Event event);
13 |
14 | void onException(Exception e);
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/libs/tickseekbar-37b1d67f64.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/libs/tickseekbar-37b1d67f64.aar
--------------------------------------------------------------------------------
/app/src/main/proto/constants.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | package rm_local_ctrl;
3 |
4 | enum Status {
5 | Success = 0;
6 | InvalidSecScheme = 1;
7 | InvalidProto = 2;
8 | TooManySessions = 3;
9 | InvalidArgument = 4;
10 | InternalError = 5;
11 | CryptoError = 6;
12 | InvalidSession = 7;
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/proto/devices.proto:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | syntax = "proto3";
16 |
17 | import "google/protobuf/timestamp.proto";
18 |
19 | option java_package = "com.google.homesampleapp";
20 | option java_multiple_files = true;
21 |
22 | // Info about a Matter device that is persisted in a Proto DataStore.
23 | message Device {
24 | // Timestamp when the device was commissioned.
25 | google.protobuf.Timestamp date_commissioned = 1;
26 |
27 | // VID
28 | string vendorId = 2;
29 |
30 | // PID
31 | string productId = 3;
32 |
33 | // Device type.
34 | enum DeviceType {
35 | TYPE_UNSPECIFIED = 0;
36 | TYPE_UNKNOWN = 1;
37 | TYPE_LIGHT = 2;
38 | TYPE_OUTLET = 3;
39 | }
40 | DeviceType deviceType = 4;
41 |
42 | // Device ID within the app's fabric.
43 | int64 device_id = 5;
44 |
45 | // Device name.
46 | string name = 6;
47 |
48 | // Room where device is located.
49 | string room = 7;
50 |
51 | // The name of the model for the device.
52 | string productName = 8;
53 |
54 | // The name of the vendor for the device.
55 | string vendorName = 9;
56 | }
57 |
58 | message Devices {
59 | int64 last_device_id = 1;
60 | repeated Device devices = 2;
61 | }
--------------------------------------------------------------------------------
/app/src/main/proto/devices_state.proto:
--------------------------------------------------------------------------------
1 | // Copyright 2022 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | syntax = "proto3";
16 |
17 | import "google/protobuf/timestamp.proto";
18 |
19 | option java_package = "com.google.homesampleapp";
20 | option java_multiple_files = true;
21 |
22 | // Info about the dynamic state of a Matter device that is persisted in a Proto DataStore.
23 | message DeviceState {
24 | // Timestamp when the state was captured.
25 | google.protobuf.Timestamp date_captured = 1;
26 |
27 | // Device ID within the app's fabric.
28 | int64 device_id = 2;
29 |
30 | // Whether the device is offline (false) or online (true)
31 | bool online = 3;
32 |
33 | // Whether the device is off (false) or on (true). Value should be disregarded
34 | // if device is offline.
35 | bool on = 4;
36 | }
37 |
38 | message DevicesState {
39 | repeated DeviceState devices_state = 2;
40 | }
--------------------------------------------------------------------------------
/app/src/main/proto/esp_local_ctrl.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | package rm_local_ctrl;
3 |
4 | import "constants.proto";
5 |
6 | message CmdGetPropertyCount {
7 | }
8 |
9 | message RespGetPropertyCount {
10 | Status status = 1;
11 | uint32 count = 2;
12 | }
13 |
14 | message PropertyInfo {
15 | Status status = 1;
16 | string name = 2;
17 | uint32 type = 3;
18 | uint32 flags = 4;
19 | bytes value = 5;
20 | }
21 |
22 | message CmdGetPropertyValues {
23 | repeated uint32 indices = 1;
24 | }
25 |
26 | message RespGetPropertyValues {
27 | Status status = 1;
28 | repeated PropertyInfo props = 2;
29 | }
30 |
31 | message PropertyValue {
32 | uint32 index = 1;
33 | bytes value = 2;
34 | }
35 |
36 | message CmdSetPropertyValues {
37 | repeated PropertyValue props = 1;
38 | }
39 |
40 | message RespSetPropertyValues {
41 | Status status = 1;
42 | }
43 |
44 | enum LocalCtrlMsgType {
45 | TypeCmdGetPropertyCount = 0;
46 | TypeRespGetPropertyCount = 1;
47 | TypeCmdGetPropertyValues = 4;
48 | TypeRespGetPropertyValues = 5;
49 | TypeCmdSetPropertyValues = 6;
50 | TypeRespSetPropertyValues = 7;
51 | }
52 |
53 | message LocalCtrlMessage {
54 | LocalCtrlMsgType msg = 1;
55 | oneof payload {
56 | CmdGetPropertyCount cmd_get_prop_count = 10;
57 | RespGetPropertyCount resp_get_prop_count = 11;
58 | CmdGetPropertyValues cmd_get_prop_vals = 12;
59 | RespGetPropertyValues resp_get_prop_vals = 13;
60 | CmdSetPropertyValues cmd_set_prop_vals = 14;
61 | RespSetPropertyValues resp_set_prop_vals = 15;
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/app/src/main/proto/esp_rmaker_chal_resp.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 |
3 | package rmaker_misc;
4 |
5 | enum RMakerMiscStatus {
6 | Success = 0;
7 | Fail = 1;
8 | InvalidParam = 2;
9 | }
10 |
11 | message CmdCRPayload {
12 | bytes payload = 1;
13 | }
14 |
15 | message RespCRPayload {
16 | bytes payload = 1;
17 | string node_id = 2;
18 | }
19 |
20 | message CmdGetNodeIDPayload {
21 | /* Empty payload */
22 | }
23 |
24 | message RespGetNodeIDPayload {
25 | string node_id = 1;
26 | }
27 |
28 | enum RMakerMiscMsgType {
29 | TypeCmdChallengeResponse = 0;
30 | TypeRespChallengeResponse = 1;
31 | TypeCmdGetNodeID = 2;
32 | TypeRespGetNodeID = 3;
33 | }
34 |
35 | message RMakerMiscPayload {
36 | RMakerMiscMsgType msg = 1;
37 | RMakerMiscStatus status = 2;
38 | oneof payload {
39 | CmdCRPayload cmdChallengeResponsePayload = 10;
40 | RespCRPayload respChallengeResponsePayload = 11;
41 | CmdGetNodeIDPayload cmdGetNodeIDPayload = 12;
42 | RespGetNodeIDPayload respGetNodeIDPayload = 13;
43 | }
44 | }
--------------------------------------------------------------------------------
/app/src/main/proto/esp_rmaker_claim.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 |
3 | package rmaker_claim;
4 |
5 | enum RMakerClaimStatus {
6 | Success = 0;
7 | Fail = 1;
8 | InvalidParam = 2;
9 | InvalidState = 3;
10 | NoMemory = 4;
11 | }
12 |
13 | message PayloadBuf {
14 | uint32 Offset = 1;
15 | bytes Payload = 2;
16 | uint32 TotalLen = 3;
17 | }
18 |
19 | message RespPayload {
20 | RMakerClaimStatus Status = 1;
21 | PayloadBuf Buf = 2;
22 | }
23 |
24 | enum RMakerClaimMsgType {
25 | TypeCmdClaimStart = 0;
26 | TypeRespClaimStart = 1;
27 | TypeCmdClaimInit = 2;
28 | TypeRespClaimInit = 3;
29 | TypeCmdClaimVerify = 4;
30 | TypeRespClaimVerify = 5;
31 | TypeCmdClaimAbort = 6;
32 | TypeRespClaimAbort = 7;
33 | }
34 |
35 | message RMakerClaimPayload {
36 | RMakerClaimMsgType msg = 1;
37 | oneof payload {
38 | PayloadBuf cmdPayload = 10;
39 | RespPayload respPayload = 11;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/proto/esp_rmaker_user_mapping.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 |
3 | package rainmaker;
4 |
5 | enum RMakerConfigStatus {
6 | Success = 0;
7 | InvalidParam = 1;
8 | InvalidState = 2;
9 | }
10 |
11 | message CmdSetUserMapping {
12 | string UserID = 1;
13 | string SecretKey = 2;
14 | }
15 | message RespSetUserMapping {
16 | RMakerConfigStatus Status = 1;
17 | string NodeId = 2;
18 | }
19 |
20 | enum RMakerConfigMsgType {
21 | TypeCmdSetUserMapping = 0;
22 | TypeRespSetUserMapping = 1;
23 | }
24 |
25 | message RMakerConfigPayload {
26 | RMakerConfigMsgType msg = 1;
27 | oneof payload {
28 | CmdSetUserMapping cmd_set_user_mapping = 10;
29 | RespSetUserMapping resp_set_user_mapping = 11;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/res/color/logout_text_color_state.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-hdpi/ic_info.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_notify_rainmaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-hdpi/ic_notify_rainmaker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_right_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-hdpi/ic_right_arrow.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_title_rainmaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-hdpi/ic_title_rainmaker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-mdpi/ic_info.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_notify_rainmaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-mdpi/ic_notify_rainmaker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_right_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-mdpi/ic_right_arrow.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_title_rainmaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-mdpi/ic_title_rainmaker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xhdpi/ic_info.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_notify_rainmaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xhdpi/ic_notify_rainmaker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_right_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xhdpi/ic_right_arrow.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_title_rainmaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xhdpi/ic_title_rainmaker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xxhdpi/ic_info.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_notify_rainmaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xxhdpi/ic_notify_rainmaker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_right_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xxhdpi/ic_right_arrow.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_title_rainmaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xxhdpi/ic_title_rainmaker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_esp_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xxxhdpi/ic_esp_splash.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xxxhdpi/ic_info.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_notify_rainmaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xxxhdpi/ic_notify_rainmaker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_right_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xxxhdpi/ic_right_arrow.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_title_rainmaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable-xxxhdpi/ic_title_rainmaker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_activate.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_badge.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_dropdown.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
9 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_edit_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_group_tab.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_group_tab_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_home_screen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable/bg_home_screen.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_marker.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_transparent_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bluetooth_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable/bluetooth_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable/checked.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_account_circle_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable/ic_account_circle_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_alert.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_alexa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable/ic_alexa.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_alexa_horizontal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable/ic_alexa_horizontal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_alexa_vertical.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable/ic_alexa_vertical.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_arrow_left.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_brightness_high.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
13 |
16 |
19 |
22 |
25 |
28 |
31 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_brightness_low.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
13 |
16 |
19 |
22 |
25 |
28 |
31 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_cct_high.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_cct_low.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_checkbox.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_checkbox_off.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_checkbox_on.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_checkbox_unselected.xml:
--------------------------------------------------------------------------------
1 |
6 |
12 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_copy.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_device.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
15 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_device_off.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_device_offline.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_device_on.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_device_switch.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
15 |
18 |
21 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_device_temp_sensor.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
15 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_down_arrow.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_downloading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable/ic_downloading.gif
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_error.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_esp_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable/ic_esp_splash.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_github.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_google.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_gva.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/drawable/ic_gva.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_info.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
18 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_info_new.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
18 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_lock.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_lock_wifi.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_menu_add.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_more.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_next_date.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_no_location_permission.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_node_info.xml:
--------------------------------------------------------------------------------
1 |
6 |
14 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notification.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notify_accept.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notify_decline.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_output_disable.xml:
--------------------------------------------------------------------------------
1 |
6 |
12 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_output_off.xml:
--------------------------------------------------------------------------------
1 |
6 |
12 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_output_on.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_plus.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_prev.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_prev_date.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_refresh.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_remove_circle.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_remove_device.xml:
--------------------------------------------------------------------------------
1 |
6 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_remove_user.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_right_arrow.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_saturation_high.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_saturation_low.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_side_arrow.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_status_offline.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_status_online.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_streaming_video.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tab_automations.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tab_devices.xml:
--------------------------------------------------------------------------------
1 |
6 |
14 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tab_scenes.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tab_schedules.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tab_setting.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_ts_chart.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_update.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_update_failed.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_user.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
18 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_user_profile.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_wifi.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
11 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_wifi_1.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_wifi_2.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_wifi_3.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
15 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_wifi_full.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/qr_code_corner.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_account.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
19 |
20 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_account_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
18 |
19 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_actions.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
15 |
16 |
21 |
22 |
28 |
29 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_alexa_app_linking.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
13 |
16 |
17 |
22 |
23 |
29 |
30 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_automation_detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
15 |
16 |
21 |
22 |
28 |
29 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_bleprovision_landing.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_claiming.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
13 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_delete_user.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_esp_device.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
15 |
16 |
21 |
22 |
28 |
29 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_esp_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
15 |
16 |
21 |
22 |
23 |
24 |
29 |
30 |
31 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_event_devices.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
16 |
17 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_forgot_password.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_fw_update.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_group_node_selection.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
14 |
15 |
20 |
21 |
27 |
28 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_scene_detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
25 |
26 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_schedule_detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
25 |
26 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_splash.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
13 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_wifi_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/app_actionbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
17 |
18 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/btn_add_device.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
22 |
23 |
32 |
33 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/btn_delete_user.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
22 |
23 |
32 |
33 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/button.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
17 |
18 |
27 |
28 |
34 |
35 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/content_actions.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
18 |
19 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/current_user_details.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
22 |
23 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_attribute.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
21 |
22 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_base_url.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_prefix.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_delete_user_req.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
27 |
28 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_account_setting.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
22 |
23 |
30 |
31 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_add_user.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
26 |
27 |
35 |
36 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_ble_scan.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
17 |
18 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_event_device.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
17 |
18 |
26 |
27 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_group_request_shared_with.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
12 |
13 |
25 |
26 |
34 |
35 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_param_hue.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_param_selection.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
9 |
10 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_param_switch.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_system_service.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
25 |
26 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_user_profile.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
19 |
20 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_wifi_access_point.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
12 |
13 |
24 |
25 |
32 |
33 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_marker.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/param_selection_dialog_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
18 |
19 |
28 |
29 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
19 |
20 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_bottom_tabs.xml:
--------------------------------------------------------------------------------
1 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_group.xml:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_esp_rainmaker_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/mipmap-hdpi/ic_esp_rainmaker_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_esp_rainmaker_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/mipmap-hdpi/ic_esp_rainmaker_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_esp_rainmaker_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/mipmap-mdpi/ic_esp_rainmaker_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_esp_rainmaker_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/mipmap-mdpi/ic_esp_rainmaker_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_esp_rainmaker_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/mipmap-xhdpi/ic_esp_rainmaker_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_esp_rainmaker_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/mipmap-xhdpi/ic_esp_rainmaker_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_esp_rainmaker_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/mipmap-xxhdpi/ic_esp_rainmaker_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_esp_rainmaker_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/mipmap-xxhdpi/ic_esp_rainmaker_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_esp_rainmaker_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/mipmap-xxxhdpi/ic_esp_rainmaker_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_esp_rainmaker_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/src/main/res/mipmap-xxxhdpi/ic_esp_rainmaker_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/raw/rainmaker_ca.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
3 | ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
4 | b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
5 | MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
6 | b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
7 | ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
8 | 9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
9 | IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
10 | VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
11 | 93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
12 | jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
13 | AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
14 | A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
15 | U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
16 | N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
17 | o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
18 | 5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
19 | rqXRfboQnoZsG4q5WTP468SQvvG5
20 | -----END CERTIFICATE-----
--------------------------------------------------------------------------------
/app/src/main/res/values-hdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 15.6dp
3 | 8.4dp
4 | 9.6dp
5 | 12dp
6 | 60dp
7 | 3.6dp
8 | 4.8dp
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xhdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 23.4dp
3 | 12.6dp
4 | 14.4dp
5 | 18dp
6 | 90dp
7 | 5.4dp
8 | 7.2dp
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xxhdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 31.2dp
3 | 16.8dp
4 | 19.2dp
5 | 24dp
6 | 120dp
7 | 7.2dp
8 | 9.6dp
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xxxhdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 39dp
3 | 21dp
4 | 24dp
5 | 30dp
6 | 150dp
7 | 9dp
8 | 12dp
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #8864e4
4 | #1a1a1a
5 | #8181a8
6 | #0033CC
7 | #FF9900
8 | #CA1627
9 |
10 | #CBCBCB
11 | #303232
12 | #4EA9DC
13 | #AC1600
14 | #329AD6
15 | #4CAF50
16 | #CA1627
17 | #FF3B30
18 |
19 |
20 |
21 | #f2f1fc
22 | #1a1a1a
23 | #f6f6fb
24 | #ff5207
25 | #8181a8
26 | #ffeee6
27 | #555555
28 | #BBBBBB
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 1dp
4 | 1dp
5 |
6 | 13dp
7 | 10dp
8 | 7dp
9 | 8dp
10 | 50dp
11 | 3dp
12 | 4dp
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
18 |
19 |
23 |
24 |
28 |
29 |
30 |
31 |
32 |
33 |
36 |
37 |
40 |
41 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | api.rainmaker.espressif.com
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/prefrences.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/test/java/com/espressif/espressif/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Espressif Systems (Shanghai) PTE LTD
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package com.espressif.espressif;
16 |
17 | import org.junit.Test;
18 |
19 | import static org.junit.Assert.*;
20 |
21 | /**
22 | * Example local unit test, which will execute on the development machine (host).
23 | *
24 | * @see Testing documentation
25 | */
26 | public class ExampleUnitTest {
27 | @Test
28 | public void addition_isCorrect() throws Exception {
29 | assertEquals(4, 2 + 2);
30 | }
31 | }
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/AndroidPlatform.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/AndroidPlatform.jar
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/CHIPClusterID.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/CHIPClusterID.jar
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/CHIPClusters.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/CHIPClusters.jar
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/CHIPController.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/CHIPController.jar
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/CHIPInteractionModel.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/CHIPInteractionModel.jar
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/OnboardingPayload.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/OnboardingPayload.jar
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/README.md:
--------------------------------------------------------------------------------
1 | This directory will contain .so files required by CHIPTool demo app for Android.
2 | The .so files must be organized into folders by the name of the corresponding
3 | Android architecture for which they are built, eg. arm64-v8a, x86, x86_64, etc.
4 |
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/SetupPayloadParser.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/SetupPayloadParser.jar
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/README.md:
--------------------------------------------------------------------------------
1 | This directory will contain .so files required by CHIPTool demo app for Android.
2 | The .so files must be organized into folders by the name of the corresponding
3 | Android architecture for which they are built, eg. arm64-v8a, x86, x86_64, etc.
4 |
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/arm64-v8a/libCHIPController.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/arm64-v8a/libCHIPController.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/arm64-v8a/libSetupPayloadParser.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/arm64-v8a/libSetupPayloadParser.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/arm64-v8a/libc++_shared.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/arm64-v8a/libc++_shared.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/armeabi-v7a/libCHIPController.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/armeabi-v7a/libCHIPController.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/armeabi-v7a/libSetupPayloadParser.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/armeabi-v7a/libSetupPayloadParser.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/armeabi-v7a/libc++_shared.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/armeabi-v7a/libc++_shared.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/x86/libCHIPController.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/x86/libCHIPController.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/x86/libSetupPayloadParser.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/x86/libSetupPayloadParser.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/x86/libc++_shared.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/x86/libc++_shared.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/x86_64/libCHIPController.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/x86_64/libCHIPController.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/x86_64/libSetupPayloadParser.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/x86_64/libSetupPayloadParser.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/jniLibs/x86_64/libc++_shared.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/jniLibs/x86_64/libc++_shared.so
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/libMatterJson.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/libMatterJson.jar
--------------------------------------------------------------------------------
/app/third_party/connectedhomeip/libs/libMatterTlv.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/app/third_party/connectedhomeip/libs/libMatterTlv.jar
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 |
5 | def localProperties = new Properties()
6 | localProperties.load(new FileInputStream(rootProject.file("local.properties")))
7 |
8 | repositories {
9 | google()
10 | mavenCentral()
11 | jcenter()
12 | }
13 | dependencies {
14 |
15 | classpath libs.gradle
16 | classpath libs.kotlin.gradle.plugin
17 | classpath libs.protobuf.gradle.plugin
18 | classpath libs.google.services // Google Services plugin
19 | classpath libs.hilt.android.gradle.plugin
20 |
21 | // Check if the "isChinaRegion" property exists and what its value is
22 | if (localProperties.getProperty("isChinaRegion", "false") != "true") {
23 | classpath libs.firebase.crashlytics.gradle
24 | }
25 | }
26 | }
27 |
28 | allprojects {
29 | repositories {
30 | google()
31 | mavenCentral()
32 | jcenter()
33 | maven { url 'https://jitpack.io' }
34 | maven { url "https://maven.google.com" }
35 | flatDir {
36 | dirs 'src/main/libs'
37 | }
38 | }
39 | }
40 |
41 | task clean(type: Delete) {
42 | delete rootProject.buildDir
43 | }
44 |
--------------------------------------------------------------------------------
/cluster_doc_image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/cluster_doc_image1.png
--------------------------------------------------------------------------------
/cluster_doc_image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/cluster_doc_image2.png
--------------------------------------------------------------------------------
/cluster_doc_image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/cluster_doc_image3.png
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | android.enableJetifier=true
13 | android.useAndroidX=true
14 | org.gradle.jvmargs=-Xmx1536m
15 |
16 | # When configured, Gradle will run in incubating parallel mode.
17 | # This option should only be used with decoupled projects. More details, visit
18 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
19 | # org.gradle.parallel=true
20 | android.nonFinalResIds=false
21 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/espressif/esp-rainmaker-android/ab74c83f20856a6cfa4f9f813d83582007c0fa7b/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed May 04 16:40:59 IST 2025
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
7 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------