diff --git a/.project b/.project deleted file mode 100644 index 6079e350..00000000 --- a/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - Mesh Util - Project MeshUtil created by Buildship. - - - - - org.eclipse.buildship.core.gradleprojectbuilder - - - - - - org.eclipse.buildship.core.gradleprojectnature - - diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs deleted file mode 100644 index f8483ac0..00000000 --- a/.settings/org.eclipse.buildship.core.prefs +++ /dev/null @@ -1,13 +0,0 @@ -arguments= -auto.sync=false -build.scans.enabled=false -connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) -connection.project.dir= -eclipse.preferences.version=1 -gradle.user.home= -java.home=/usr/lib/jvm/java-8-oracle -jvm.arguments= -offline.mode=false -override.workspace.settings=true -show.console.view=true -show.executions.view=true diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 5e50be3b..00000000 --- a/TODO.md +++ /dev/null @@ -1,58 +0,0 @@ -# Misc todo - -* move analytics out with https://blog.gradle.org/optional-dependencies - -# Android 30 location tasks - -* https://developer.android.com/about/versions/11/privacy/location#background-location - ask for foreground and background location separately -* add "help location checkbox" -* turn off "provideLocation" checkbox if we don't have background permission. If someone tries to turn it on, raise dialog then ask for background permissions -* add help button to location checkbox - -# Documentation tasks - -Mostly for geeksville - -Document the following in application behavior -*change ls_secs is 1 hr normally, which is fine because if there are other nodes in the mesh and they send us a packet we will wake any time during ls_secs and update app state -* use states for meshservice: disconnected -> connected-> devsleep -> disconnected (3 states) -* when device enters LS state radiointerfaceservice publishes "Broadcasting connection=false", meshservice should then enter devicesleepstate for ls_secs + 30s (to allow for some margin) - -* describe user experience: devices always point to each other and show distance, you can send texts between nodes -the channel is encrypted, you can share the the channel key with others by qr code or by sharing a special link - -* take video of the app - -# Post 1.0 - -* show pointer arrow on the outside of the user icons, always pointing towards them -* Use setLargeIcon to show user icons in the notification: file:///home/kevinh/packages/android-sdk-linux/docs/design/patterns/notifications.html -* Our notification about messages should use VISIBLITY_PRIVATE + setPublicVersion per file:///home/kevinh/packages/android-sdk-linux/docs/guide/topics/ui/notifiers/notifications.html -* Use LocationRequest.setSmallestDisplacement to save battery and decrease net activity -* use platform theme (dark or light) -* Do PRIORITY_BALANCED_POWER_ACCURACY for our gps updates when no one in the mesh is nearer than 200 meters -* spend some quality power consumption tuning with https://developer.android.com/studio/profile/energy-profiler and https://developer.android.com/topic/performance/power/battery-historian -* use google signin to get user name (make optional) -* keep past messages in db, one db per channel (currently we just keep an array in saved preferences) -* show user avatars in chat (use the google user info api) -* let users save old channels (i.e. have a menu of channels the user can use) -* if the rxpacket queue on the device overflows (because android hasn't connected in a while) send a special packet to android which means 'X packets have been dropped because you were offline' -drop oldest packets first -* make sw update work over BLE - -# Signal alpha release -Do this "Signal app compatible" release relatively soon after the alpha release of the android app. - -* call onNodeDBChanged after we haven't heard a packet from the mesh in a while - because that's how we decide we have less than 2 nodes in the mesh and should stop listening to the local GPS -* add large packet reassembly? -* optionally turn off crypto in signal - preferably though see if there is a nice way to be a peer of signal/sms and now mesh. -* change signal package ID - if distributing modified binary -* investigate the Signal SMS message flow path, see if I could just make Mesh a third peer to signal & sms? -* make signal work when there is no internet up -* make Signal rx path work -* send Signal message type. It seems to be? " public static final int WHISPER_TYPE = 2; - public static final int PREKEY_TYPE = 3; - public static final int SENDERKEY_TYPE = 4; - public static final int SENDERKEY_DISTRIBUTION_TYPE = 5;" - -# Done - diff --git a/images/amazon-fire-button.png b/images/amazon-fire-button.png deleted file mode 100644 index b581f7ee..00000000 Binary files a/images/amazon-fire-button.png and /dev/null differ diff --git a/images/app-too-old.png b/images/app-too-old.png deleted file mode 100644 index 92f98b77..00000000 Binary files a/images/app-too-old.png and /dev/null differ diff --git a/images/firmware-update.png b/images/firmware-update.png deleted file mode 100644 index 6ab5a7da..00000000 Binary files a/images/firmware-update.png and /dev/null differ diff --git a/images/location-mode.png b/images/location-mode.png deleted file mode 100644 index b222803d..00000000 Binary files a/images/location-mode.png and /dev/null differ diff --git a/images/location-on.png b/images/location-on.png deleted file mode 100644 index 5679bf26..00000000 Binary files a/images/location-on.png and /dev/null differ diff --git a/images/qrcode.svg b/images/qrcode.svg deleted file mode 100644 index 574c0455..00000000 --- a/images/qrcode.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - QR Code - http://www.meshtastic.org/s/YXNkZnF3ZXJhc2RmcXdlcmFzZGZxd2Vy - - - - - diff --git a/images/screenshot-channel.png b/images/screenshot-channel.png deleted file mode 100644 index 63d3f1e2..00000000 Binary files a/images/screenshot-channel.png and /dev/null differ diff --git a/images/screenshot-map.png b/images/screenshot-map.png deleted file mode 100644 index c198e8b3..00000000 Binary files a/images/screenshot-map.png and /dev/null differ diff --git a/images/screenshot-messages.png b/images/screenshot-messages.png deleted file mode 100644 index 78a81dcc..00000000 Binary files a/images/screenshot-messages.png and /dev/null differ diff --git a/images/screenshot-settings.png b/images/screenshot-settings.png deleted file mode 100644 index 1ed4e9df..00000000 Binary files a/images/screenshot-settings.png and /dev/null differ diff --git a/images/screenshot-users.png b/images/screenshot-users.png deleted file mode 100644 index a884644e..00000000 Binary files a/images/screenshot-users.png and /dev/null differ diff --git a/scripts/MainActivity_robo_script.json b/scripts/MainActivity_robo_script.json deleted file mode 100644 index 4b846489..00000000 --- a/scripts/MainActivity_robo_script.json +++ /dev/null @@ -1,742 +0,0 @@ -[ - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629911091, - "replacementText": "", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.tabs.TabLayout$TabView", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 3, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout$SlidingTabIndicator", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/tab_layout", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629915828, - "replacementText": "", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.tabs.TabLayout$TabView", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 2, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout$SlidingTabIndicator", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/tab_layout", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629919413, - "replacementText": "", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.tabs.TabLayout$TabView", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout$SlidingTabIndicator", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/tab_layout", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629922790, - "replacementText": "", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.tabs.TabLayout$TabView", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout$SlidingTabIndicator", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/tab_layout", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_TEXT_CHANGED", - "timestamp": 1586629928465, - "replacementText": "hhi", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.textfield.TextInputEditText", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/messageInputText", - "contentDescription": "", - "text": "" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.textfield.TextInputLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/textInputLayout", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "PRESSED_EDITOR_ACTION", - "timestamp": 1586629935566, - "replacementText": "hhi", - "actionCode": 6, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.textfield.TextInputEditText", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/messageInputText", - "contentDescription": "", - "text": "hhi" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.textfield.TextInputLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/textInputLayout", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629943766, - "replacementText": "", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.tabs.TabLayout$TabView", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout$SlidingTabIndicator", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/tab_layout", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629947847, - "replacementText": "", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.tabs.TabLayout$TabView", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 2, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout$SlidingTabIndicator", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/tab_layout", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629951848, - "replacementText": "", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.tabs.TabLayout$TabView", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 3, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout$SlidingTabIndicator", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/tab_layout", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629957343, - "replacementText": "", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.checkbox.MaterialCheckBox", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 2, - "resourceId": "com.geeksville.mesh:id/editableCheckbox", - "contentDescription": "", - "text": "" - }, - { - "className": "androidx.constraintlayout.widget.ConstraintLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_LONG_CLICKED", - "timestamp": 1586629963511, - "replacementText": "Default", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.textfield.TextInputEditText", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/channelNameEdit", - "contentDescription": "", - "text": "Default" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.textfield.TextInputLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/channelNameView", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_TEXT_CHANGED", - "timestamp": 1586629965913, - "replacementText": "Defaultx", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.textfield.TextInputEditText", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/channelNameEdit", - "contentDescription": "", - "text": "Default" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.textfield.TextInputLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/channelNameView", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629968157, - "replacementText": "Defaultx", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.textfield.TextInputEditText", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/channelNameEdit", - "contentDescription": "", - "text": "Defaultx" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.textfield.TextInputLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/channelNameView", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_TEXT_CHANGED", - "timestamp": 1586629970340, - "replacementText": "Defaultxbb", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.textfield.TextInputEditText", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/channelNameEdit", - "contentDescription": "", - "text": "Defaultx" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.textfield.TextInputLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/channelNameView", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "PRESSED_EDITOR_ACTION", - "timestamp": 1586629974781, - "replacementText": "Defaultxbb", - "actionCode": 6, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.textfield.TextInputEditText", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/channelNameEdit", - "contentDescription": "", - "text": "Defaultxbb" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.textfield.TextInputLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/channelNameView", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629980271, - "replacementText": "", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.checkbox.MaterialCheckBox", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 2, - "resourceId": "com.geeksville.mesh:id/editableCheckbox", - "contentDescription": "", - "text": "" - }, - { - "className": "androidx.constraintlayout.widget.ConstraintLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629985704, - "replacementText": "Cancel", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": true, - "elementDescriptors": [ - { - "className": "com.google.android.material.button.MaterialButton", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "android:id/button3", - "contentDescription": "", - "text": "Cancel" - }, - { - "className": "androidx.appcompat.widget.ButtonBarLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "android.widget.ScrollView", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 3, - "resourceId": "com.geeksville.mesh:id/buttonPanel", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_CLICKED", - "timestamp": 1586629990504, - "replacementText": "", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.tabs.TabLayout$TabView", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 4, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout$SlidingTabIndicator", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.tabs.TabLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/tab_layout", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "VIEW_TEXT_CHANGED", - "timestamp": 1586629997403, - "replacementText": "Bob x", - "actionCode": -1, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.textfield.TextInputEditText", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/usernameEditText", - "contentDescription": "", - "text": "" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.textfield.TextInputLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/textInputLayout2", - "contentDescription": "", - "text": "" - } - ] - }, - { - "eventType": "PRESSED_EDITOR_ACTION", - "timestamp": 1586630009771, - "replacementText": "Bob x", - "actionCode": 6, - "delayTime": 0, - "canScrollTo": false, - "elementDescriptors": [ - { - "className": "com.google.android.material.textfield.TextInputEditText", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "com.geeksville.mesh:id/usernameEditText", - "contentDescription": "", - "text": "Bob x" - }, - { - "className": "android.widget.FrameLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 0, - "resourceId": "", - "contentDescription": "", - "text": "" - }, - { - "className": "com.google.android.material.textfield.TextInputLayout", - "recyclerViewChildPosition": -1, - "adapterViewChildPosition": -1, - "groupViewChildPosition": 1, - "resourceId": "com.geeksville.mesh:id/textInputLayout2", - "contentDescription": "", - "text": "" - } - ] - } -] \ No newline at end of file