Отладка камеры

На этой странице описаны инструменты отладки в сервисе камеры, которые позволяют просматривать изменения в запросах на съемку и значениях результатов, отправляемых на уровень HAL камеры и получаемых от него. Сервис камеры включает команды watch и dumpsys. Команда watch доступна на устройствах с Android 13 и более поздних версий. Она позволяет контролировать, когда теги отслеживаются и к ним предоставляется доступ, просматривать дампы отслеживания тегов в реальном времени из открытых клиентов и просматривать дампы из закрытых клиентов, сохраненные в кеше. Команда dumpsys позволяет получить доступ к отладочной информации, но не предоставляет дампы мониторинга тегов от закрытых клиентов.

команда для часов

В этом разделе описано, как использовать команду watch, и приведены примеры.

Как начать отслеживать теги

Чтобы начать отслеживать теги, используйте:

adb shell cmd media.camera watch start -m <tags> [-c <clients>]

Пример:

adb shell cmd media.camera watch start \
-m android.control.effectMode,android.control.aeMode \
-c com.google.android.GoogleCamera,com.android.chrome

Аргументы:

  • tags: список тегов, разделенных запятыми, которые нужно отслеживать. Также принимается сокращение 3a, где 3a относится к набору всех тегов android.control.*, связанных с AF, AE и AWB (полный список тегов см. в TagMonitor.cpp).
  • clients – необязательный аргумент. Разделенный запятыми список названий пакетов клиентов, для которых отслеживаются теги. Если аргумент client не передан или в списке клиентов есть all, отслеживаются все клиенты.

Эта команда запускает мониторинг тегов в открытых клиентах и во всех клиентах, которые будут открыты впоследствии (до вызова stop). После вызова start сервис камеры кеширует дампы отслеживания тегов от клиентов, когда они закрываются.

Если не вызвать start, сервис камеры не будет отслеживать теги для каких-либо клиентов и не будет кешировать дампы отслеживания тегов. Если в параметре clients передано значение all, служба камеры отслеживает теги и сохраняет дампы мониторинга от всех клиентов.

Как получить информацию о мониторинге тегов дампа

Чтобы получить информацию об отслеживании тегов, используйте следующую команду:

adb shell cmd media.camera watch dump

Эта команда выводит информацию о мониторинге тегов в стандартный выходной поток, а затем завершает работу. Она выводит кешированные дампы мониторинга тегов от клиентов, которые были закрыты после start (или за последние clear), и последний дамп мониторинга тегов от открытых клиентов.

Пример выходных данных:

$ adb shell cmd media.camera watch dump
Client: com.android.chrome (active)
1:com.android.chrome  f0:532642803202286ns:             REQ:android.control.aeMode: [ON] output stream ids:  0
1:com.android.chrome  f0:532642803202286ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  0
..
Client: com.google.android.GoogleCamera (cached)
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.aeMode: [ON] output stream ids:  0  3  1  2
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  2  1  3  0
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.awbMode: [AUTO] output stream ids:  0  3  1  2
...

Как просматривать информацию о тегах в режиме реального времени

Чтобы посмотреть информацию о мониторинге тегов в реальном времени, используйте:

adb shell cmd media.camera watch live [-n refresh_interval_ms]

Пример:

adb shell cmd media.camera watch live -n 250

Аргументы:

  • refresh_interval_ms – необязательный аргумент. Интервал в миллисекундах, через который нужно обновлять информацию. Если значение не указано, по умолчанию используется 1000.

Эта команда выводит информацию об отслеживании тегов в режиме реального времени. Чтобы выйти, нажмите Ввод.

Пример выходных данных:

$ adb shell cmd media.camera watch live
Press return to exit...

0:com.google.android.GoogleCamera  f0:533016991302201ns:             REQ:android.control.aeMode: [ON] output stream ids:  1  3  0  2
0:com.google.android.GoogleCamera  f0:533016991302201ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  2  0  3  1
...
0:com.google.android.GoogleCamera  f0:533017066793915ns:                            RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns: 3                          RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns: 2                          RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns:                            RES:android.control.afState: [PASSIVE_SCAN]

Очистить кеш дампов

Чтобы удалить все дампы мониторинга тегов, используйте следующую команду:

adb shell cmd media.camera watch clear

Эта команда не останавливает мониторинг тегов.

Как прекратить отслеживание тегов

Чтобы остановить мониторинг тегов во всех клиентах и очистить все буферы, используемые для кеширования дампов мониторинга тегов, используйте следующую команду:

adb shell cmd media.camera watch stop

Команда dumpsys

Команда dumpsys предоставляет множество сведений для отладки от сервиса камеры. Следующая команда позволяет получить полный дамп отладки из сервиса камеры:

adb shell dumpsys media.camera

Команда dumpsys также позволяет получать дампы мониторинга тегов из открытых клиентов. Однако dumpsys не предоставляет дампы мониторинга тегов от закрытых клиентов. Ниже приведены примеры использования dumpsys для отслеживания тегов.

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

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
  • Чтобы посмотреть информацию о тегах в режиме реального времени, используйте команду watch в Linux:

    watch -n 1 -c 'adb shell dumpsys media.camera -m 3a | grep -A50 Monitored'