Files
2026-02-05 13:47:39 +03:00

10 KiB
Raw Permalink Blame History

Руководство по тестированию Audio Focus

Подготовка к тестированию

Включение логирования

Для отслеживания работы Audio Focus используйте команду:

adb logcat -s PlayerService:I

Или для более подробного логирования:

adb logcat | grep -E "PlayerService|AudioManager"

Тестовые сценарии

1. Тест взаимодействия с другими медиа-приложениями

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

Шаги:

  1. Запустите приложение SoundWaveRadio
  2. Выберите и запустите любую радиостанцию
  3. Убедитесь, что радио воспроизводится
  4. Откройте YouTube/Spotify/любое другое медиа-приложение
  5. Запустите воспроизведение видео/музыки

Ожидаемый результат:

  • Радио должно остановиться
  • Уведомление радио должно исчезнуть
  • Сервис PlayerService должен остановиться
  • В логах должно быть: Audio focus lost permanently и Stopping service gracefully
  • Радио НЕ должно включиться автоматически после остановки другого медиа

Проверка в логах:

PlayerService: Audio focus changed: -1
PlayerService: Audio focus lost permanently
PlayerService: Audio focus abandoned on stop
PlayerService: Stopping service gracefully

2. Тест временных прерываний (звонки)

Цель: Убедиться, что радио возобновляется после звонка

Шаги:

  1. Запустите радио
  2. Позвоните на телефон или используйте эмулятор звонка
  3. Примите звонок
  4. Завершите звонок

Ожидаемый результат:

  • Во время звонка радио должно остановиться
  • После завершения звонка радио должно автоматически возобновиться
  • В логах: Audio focus lost temporarilyAudio focus gained

Проверка в логах:

PlayerService: Audio focus changed: -2
PlayerService: Audio focus lost temporarily
[после звонка]
PlayerService: Audio focus changed: 1
PlayerService: Audio focus gained

3. Тест Ducking (уведомления со звуком)

Цель: Проверить уменьшение громкости при коротких звуках

Шаги:

  1. Запустите радио
  2. Получите уведомление со звуком (например, от мессенджера)

Ожидаемый результат:

  • Громкость радио должна уменьшиться до 20%
  • После окончания звука уведомления громкость должна восстановиться до 100%
  • Радио не должно останавливаться

Проверка в логах:

PlayerService: Audio focus changed: -3
PlayerService: Audio focus lost, can duck
[после уведомления]
PlayerService: Audio focus changed: 1
PlayerService: Audio focus gained

4. Тест закрытия приложения

Цель: Проверить, что сервис правильно останавливается

Шаги:

  1. Запустите радио
  2. Закройте приложение через Recent Apps (свайп вверх)

Ожидаемый результат:

  • Если радио воспроизводится: сервис должен продолжить работу
  • Если радио на паузе: сервис должен остановиться

Проверка в логах (при воспроизведении):

PlayerService: Task removed, isPlaying: true
PlayerService: Keeping service alive - still playing

Проверка в логах (на паузе):

PlayerService: Task removed, isPlaying: false
PlayerService: Stopping service - not playing
PlayerService: Audio focus abandoned on stop

5. Тест паузы через уведомление

Цель: Проверить освобождение Audio Focus при паузе

Шаги:

  1. Запустите радио
  2. Нажмите кнопку паузы в уведомлении

Ожидаемый результат:

  • Радио должно остановиться
  • Audio Focus должен быть освобожден
  • Уведомление должно остаться, но сервис выйдет из foreground режима

Проверка в логах:

PlayerService: Audio focus abandoned on pause
PlayerService: onIsPlayingChanged: false
PlayerService: Audio focus abandoned - playback stopped

6. Тест отключения наушников

Цель: Проверить автоматическую остановку при отключении наушников

Шаги:

  1. Подключите наушники
  2. Запустите радио
  3. Отключите наушники

Ожидаемый результат:

  • Радио должно немедленно остановиться
  • Это обрабатывается через setHandleAudioBecomingNoisy(true) в ExoPlayer

7. Тест на Samsung устройствах

Цель: Проверить интеграцию с системой Samsung

Особенности Samsung:

  • Samsung имеет собственную реализацию Audio Focus
  • Может быть более строгая политика управления фоновыми сервисами

Шаги:

  1. Выполните все тесты выше на Samsung устройстве
  2. Проверьте работу с Samsung Music
  3. Проверьте работу с Bixby

Дополнительная проверка:

  • Откройте настройки звука Samsung
  • Проверьте, что радио отображается в списке активных медиа-приложений
  • Проверьте управление через медиа-панель в шторке уведомлений

8. Тест множественных переключений

Цель: Проверить стабильность при частых переключениях

Шаги:

  1. Запустите радио
  2. Быстро переключайтесь между радио и другими медиа-приложениями
  3. Повторите 5-10 раз

Ожидаемый результат:

  • Не должно быть утечек памяти
  • Не должно быть зависаний
  • Audio Focus должен правильно переключаться
  • Не должно быть одновременного воспроизведения

Проверка утечек ресурсов

Проверка Audio Focus

adb shell dumpsys audio | grep -A 20 "Audio Focus"

Убедитесь, что SoundWaveRadio не держит Audio Focus когда не воспроизводится.

Проверка работающих сервисов

adb shell dumpsys activity services | grep PlayerService

Убедитесь, что PlayerService останавливается когда не нужен.

Проверка памяти

adb shell dumpsys meminfo com.yaros.RadioUrl

Следите за ростом памяти при длительной работе.


Известные проблемы и их решения

Проблема: Радио не возобновляется после звонка

Решение: Проверьте, что resumeOnFocusGain правильно устанавливается в true при AUDIOFOCUS_LOSS_TRANSIENT

Проблема: Сервис не останавливается

Решение: Проверьте логи, убедитесь что Audio Focus освобождается во всех необходимых местах

Проблема: Одновременное воспроизведение с другими приложениями

Решение: Убедитесь, что setAudioAttributes(..., false) установлен правильно, и Audio Focus обрабатывается вручную


Автоматизированное тестирование

Для автоматизации можно использовать следующие команды:

Симуляция звонка

adb shell am start -a android.intent.action.CALL -d tel:1234567890

Симуляция уведомления

adb shell cmd notification post -S bigtext -t 'Test' 'Tag' 'Test notification'

Проверка состояния сервиса

adb shell dumpsys activity services com.yaros.RadioUrl/.PlayerService

Чек-лист для релиза

  • Все тесты пройдены на Android 8.0+
  • Протестировано на Samsung устройстве
  • Протестировано на чистом Android (Pixel/эмулятор)
  • Нет утечек Audio Focus
  • Сервис корректно останавливается
  • Нет одновременного воспроизведения
  • Работает с наушниками Bluetooth
  • Работает с проводными наушниками
  • Корректная работа при низком заряде батареи
  • Корректная работа в режиме энергосбережения