adb shell settings get global airplane_mode_on
adb shell settings get system system_locales
adb shell dumpsys telephony.registry
adb shell "dumpsys content | grep ^Account | grep @ | grep com.google"
adb shell getprop gsm.network.type adb shell getprop gsm.operator.alpha
adb shell settings get system screen_off_timeout
adb shell settings get global wifi_on
За исключением команд dumpsys, ответы представляют собой однострочные значения, и каждый из них занимает 200 мс для выполнения readline().
"dumpsys telephony .registry" возвращает около 5000 строк и занимает 500 мс.
"dumpsys content | grep ^Account .." возвращает три или четыре строки и занимает 300 мсек.
У меня нет проблем с задержками, но в это время процессор сервера серьезно страдает. Отправка этих команд высоты увеличила нагрузку на процессор на 30%. Приложению необходимо одновременно контролировать различные устройства, и оно вызывает 100% пиковую нагрузку на ЦП при подключении всего лишь двух устройств.
Java-приложение не является проблемой, поскольку я воспроизвожу Влияние на процессор при отправке команд ADB из командной строки DOS.
Вещи, которые я пробовал, но никакой пользы не наблюдалось:
- Отправка команд отдельно
- Отправить одну строку из нескольких команд :
adb shell command1 && adb shell command2 && adb shell command3 .." - Установите задержки между командами (10, 100, 200, 500 мс)
- Используйте соединение ADB через Wi-Fi вместо USB
Сравнение различных моделей и производителей устройств Android (Samsung, Google, ..) - Установлены новейшие инструменты платформы Android SDK:
Android Debug Bridge version 1.0.41
Version 35.0.2-12147458
Installed as C:\Windows\SysWOW64\platform-tools\adb.exe
Running on Windows 10.0.19045
Изменить:
Комментарий Роберта и ответ Мартина Цейтлера предлагают включить все команды в один сеанс ADB. Я пробовал так:
tResult = adb_shell_method("command1 && echo WWW && command2 && echo WWW && ..");
resultArray = tResult.split("WWW");
Подобный сбор команд высоты занимает ~320 мс и загружает процессор менее чем на 5%.
Теперь я понимаю, что каждая «оболочка adb» исполнение сложнее, чем я думал. Поэтому было бы лучше создать один сеанс adb с устройством и использовать его, пока оно подключено.
Сбор данных из UE с помощью такого метода, как
String executeADBCommand(String command, ADBSession);
Подробнее здесь: https://stackoverflow.com/questions/793 ... er-windows
Мобильная версия