1.9.9.8
This commit is contained in:
@@ -0,0 +1,267 @@
|
||||
# Руководство по тестированию Audio Focus
|
||||
|
||||
## Подготовка к тестированию
|
||||
|
||||
### Включение логирования
|
||||
Для отслеживания работы Audio Focus используйте команду:
|
||||
```bash
|
||||
adb logcat -s PlayerService:I
|
||||
```
|
||||
|
||||
Или для более подробного логирования:
|
||||
```bash
|
||||
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 temporarily` → `Audio 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
|
||||
```bash
|
||||
adb shell dumpsys audio | grep -A 20 "Audio Focus"
|
||||
```
|
||||
|
||||
Убедитесь, что SoundWaveRadio не держит Audio Focus когда не воспроизводится.
|
||||
|
||||
### Проверка работающих сервисов
|
||||
```bash
|
||||
adb shell dumpsys activity services | grep PlayerService
|
||||
```
|
||||
|
||||
Убедитесь, что PlayerService останавливается когда не нужен.
|
||||
|
||||
### Проверка памяти
|
||||
```bash
|
||||
adb shell dumpsys meminfo com.yaros.RadioUrl
|
||||
```
|
||||
|
||||
Следите за ростом памяти при длительной работе.
|
||||
|
||||
---
|
||||
|
||||
## Известные проблемы и их решения
|
||||
|
||||
### Проблема: Радио не возобновляется после звонка
|
||||
**Решение:** Проверьте, что `resumeOnFocusGain` правильно устанавливается в `true` при `AUDIOFOCUS_LOSS_TRANSIENT`
|
||||
|
||||
### Проблема: Сервис не останавливается
|
||||
**Решение:** Проверьте логи, убедитесь что Audio Focus освобождается во всех необходимых местах
|
||||
|
||||
### Проблема: Одновременное воспроизведение с другими приложениями
|
||||
**Решение:** Убедитесь, что `setAudioAttributes(..., false)` установлен правильно, и Audio Focus обрабатывается вручную
|
||||
|
||||
---
|
||||
|
||||
## Автоматизированное тестирование
|
||||
|
||||
Для автоматизации можно использовать следующие команды:
|
||||
|
||||
### Симуляция звонка
|
||||
```bash
|
||||
adb shell am start -a android.intent.action.CALL -d tel:1234567890
|
||||
```
|
||||
|
||||
### Симуляция уведомления
|
||||
```bash
|
||||
adb shell cmd notification post -S bigtext -t 'Test' 'Tag' 'Test notification'
|
||||
```
|
||||
|
||||
### Проверка состояния сервиса
|
||||
```bash
|
||||
adb shell dumpsys activity services com.yaros.RadioUrl/.PlayerService
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Чек-лист для релиза
|
||||
|
||||
- [ ] Все тесты пройдены на Android 8.0+
|
||||
- [ ] Протестировано на Samsung устройстве
|
||||
- [ ] Протестировано на чистом Android (Pixel/эмулятор)
|
||||
- [ ] Нет утечек Audio Focus
|
||||
- [ ] Сервис корректно останавливается
|
||||
- [ ] Нет одновременного воспроизведения
|
||||
- [ ] Работает с наушниками Bluetooth
|
||||
- [ ] Работает с проводными наушниками
|
||||
- [ ] Корректная работа при низком заряде батареи
|
||||
- [ ] Корректная работа в режиме энергосбережения
|
||||
Reference in New Issue
Block a user