Команды оболочки adb для изменения настроек или выполнения задач на телефоне - PullRequest
18 голосов
/ 05 февраля 2010

Как мне использовать adb для выполнения некоторых автоматических задач на моем телефоне Android? Мне нужно найти команды, которые я могу выполнить из командной строки (в идеале, используя файл .bat), которые будут способны не только открывать приложение или отправлять событие ввода ключа (нажатие кнопки).

Например, я хочу включить или выключить режим полета из командной строки. В настоящее время лучшее, что я могу сделать, - это запустить меню настроек беспроводной сети и сети, а затем с помощью клавиш ввода нажать «Режим полета»:

adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS
adb shell input keyevent 19 & adb shell input keyevent 23

У этого метода довольно много недостатков, в первую очередь то, что экран должен быть включен и разблокирован. Кроме того, задачи, которые я хочу выполнить, гораздо шире, чем этот простой пример. Другие вещи, которые я хотел бы сделать, если это возможно:

1.Играйте mp3 и установите его на повтор. Текущее решение:

adb shell am start -n com.android.music/.MusicBrowserActivity
adb shell input keyevent 84
adb shell input keyevent 56 & adb shell input keyevent 66 & adb shell input keyevent 67 & adb shell input keyevent 19
adb shell input keyevent 23 & adb shell input keyevent 21
adb shell input keyevent 19 & adb shell input keyevent 19 & adb shell input keyevent 19 & adb shell input keyevent 22 & adb shell input keyevent 22 & adb shell input keyevent 23 & adb shell input keyevent 23

2. Воспроизвести видео. (текущее решение: откройте MediaGallery, отправьте ключевые события, аналогичные описанным выше)

3.Измените громкость (текущее решение: отправьте ключевые события на кнопку увеличения громкости)

4.Измените тайм-аут дисплея (текущее решение: открыть настройки звука и дисплея, отправить ключевые события)

Как и прежде, все это требует, чтобы экран был включен и разблокирован. Другим основным недостатком использования keyevents является то, что если пользовательский интерфейс приложения изменяется, keyevents больше не будет выполнять правильную функцию. Если нет более простого способа сделать подобные вещи, есть ли хотя бы способ включить экран (используя adb), когда он выключен? Или чтобы ключевые события все еще работали при выключенном экране?

Я не очень знаком с Java. Тем не менее, я видел код, подобный следующему (источник: http://yenliangl.blogspot.com/2009/12/toggle-airplane-mode.html), чтобы изменить настройку на телефоне:

Settings.System.putInt(Settings.System.AIRPLANE_MODE_ON, 1 /* 1 or 0 */);

Как мне перевести что-то подобное выше в команду оболочки adb? Это возможно или неправильный способ думать об этом?

Я могу предоставить более подробную информацию, если это необходимо. Спасибо!

Ответы [ 4 ]

16 голосов
/ 03 июля 2012

Хотя вопрос старый, он может помочь кому-то еще.

Для воспроизведения видео вы можете попробовать это:

adb shell am start -a android.intent.action.VIEW -d   "file:///mnt/sdcard/DCIM/Camera/test.3gp" -t "video/*" 

^ выдает подсказку всем способным игрокам, которые могут воспроизвести этот файл.

adb shell am start -a android.intent.action.VIEW -d "file:///mnt/sdcard/DCIM/Camera/test.3gp" -t "video/*" -n "com.alensw.PicFolder/.PlayerActivity" 

^ играет в плеере, указанном переключателем -n.

3 голосов
/ 12 октября 2011

Я работаю над тем же набором вопросов. (Я в основном решил проблему контекста прямыми нажатиями кнопок с помощью ключевого события HOME и затем MENU, но - каким-то образом - даже это ненадежно.) В настоящее время я изучаю SL4A (Уровень сценариев для Android), который имеет обещание. Он позволяет Perl, Python, Lua и другим языкам сценариев взаимодействовать с Android API с вашего ПК после запуска сервера SL4A на устройстве - что также можно сделать с ПК. Я считаю " Pro Android Python с SL4A " отличным ресурсом; Я бы сэкономил дни проб и ошибок и охоты в Интернете, если бы начал с этой книги

0 голосов
/ 12 октября 2011

MonkeyRunner также выглядит многообещающе, хотя я еще не выкопал достаточно глубоко, чтобы найти его пределы.

Android ScreenCast позволяет просматривать и контролироватьэкран вашего устройства с вашего компьютера, который также имеет потенциал для автоматизации.Однако у него есть некоторые проблемы с материально-техническим обеспечением для этого приложения.

Кстати, вы можете преодолеть заблокированный домашний экран с помощью ключевого события МЕНЮ и набора отправлений (вместо ключевых событий).

0 голосов
/ 05 февраля 2010

Пример Java, который вы показываете, относится к программе, работающей на самом телефоне. Возможно, вы сможете запрограммировать на телефоне своего рода интерпретатор, который обрабатывает команды adb. Таким образом, вы больше не зависите от ключевых событий. Однако это не мелочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...