У меня похожая проблема.В моем приложении я должен играть тихо в начале (амплитуда синусоидальной волны равна 0), а затем, через 2 секунды, я играю синусоидальную волну с амплитудой = 10000.
Однако иногда, даже я начинаю играть в AudioTrack (статическийрежим, поток - МУЗЫКА), я ничего не слышу, и только после ручного изменения громкости я начинаю слышать свои звуки.Перед воспроизведением каких-либо звуков (даже тихих) я программно устанавливаю громкость потока на максимум и контролирую громкость на выходе по амплитуде сигнала.
Вы выяснили причину этого?
Обновление:
Углубляясь в проблему, я обнаружил странную вещь, в то время как устройство находится в этом странном состоянии, мои вызовы AudioManager.setStreamVolume не работают.Я проверил это:
int max = mAudioManager.getStreamMaxVolume(SoundConfig.outputStreamType); // max = 15
int v = mAudioManager.getStreamVolume(SoundConfig.outputStreamType); // v = 0
mAudioManager.setStreamVolume(SoundConfig.outputStreamType, max, 0);
v = mAudioManager.getStreamVolume(SoundConfig.outputStreamType); // v = 0
После этого я начал анализировать вывод logcat, и обнаружил, что: - в странном состоянии настройка громкости и запуск воспроизведения выглядят так:
12-19 12:45:37.120: D/AudioService(192): getStreamVolume(12)
12-19 12:45:40.970: D/AudioSystem(192): getParameters() ERROR : can't get parameters
12-19 12:45:40.970: D/AudioService(192): getStreamVolume(12)
12-19 12:45:45.680: D/AudioService(192): getStreamVolume(12)
12-19 12:45:50.120: I/AudioPolicyManager(110): startOutput() output 1, stream 3, session 6
12-19 12:45:50.120: I/AudioPolicyManager(110): getDeviceForStrategy() strategy 0, device 4
12-19 12:45:50.120: I/AudioPolicyManager(110): getDeviceForStrategy() strategy 0, device 4
12-19 12:45:50.120: I/AudioFlinger(110): start output streamType (0, 3) for 1
12-19 12:45:50.120: D/AudioHardware(110): AudioStreamOutALSA::setParameters() start_output_streamtype=3
12-19 15:25:02.521: D/AudioHardware(110): AudioHardware pcm playback is exiting standby.
Но в нормальном состоянии (после нажатия кнопок громкости вверх и вниз) это выглядит так:
12-19 15:25:02.481: D/AudioSystem(193): getParameters() ERROR : can't get parameters
12-19 15:25:02.481: D/AudioService(193): getStreamVolume(12)
12-19 15:25:02.481: I/AudioService(193): AudioFocus abandonAudioFocus() from android.media.AudioManager#413cbf68com.kinsa.manager.CAndroidManager#414087a0
12-19 15:25:02.491: I/AudioService(193): AudioFocus requestAudioFocus() from android.media.AudioManager#413cbf68com.kinsa.manager.CAndroidManager#414087a0
12-19 15:25:02.491: D/AudioSystem(193): getParameters() ERROR : can't get parameters
12-19 15:25:02.491: D/AudioHardware(110): AudioStreamOutALSA::setParameters() music_volume_index=1
12-19 15:25:02.491: D/AudioService(193): getStreamVolume(12)
12-19 15:25:02.491: D/AudioService(193): getStreamVolume(12)
12-19 15:25:02.491: D/AudioService(193): getStreamVolume(12)
12-19 15:25:02.491: D/AudioSystem(193): getParameters() ERROR : can't get parameters
12-19 15:25:02.501: D/AudioService(193): getStreamVolume(12)
12-19 15:25:02.501: D/AudioService(193): getStreamVolume(12)
12-19 15:25:02.501: D/AudioService(193): getStreamVolume(12)
12-19 15:25:02.501: D/AudioHardware(110): AudioStreamOutALSA::setParameters() music_volume_index=15
12-19 15:25:02.521: I/AudioPolicyManager(110): startOutput() output 1, stream 3, session 3
12-19 15:25:02.521: I/AudioPolicyManager(110): getDeviceForStrategy() strategy 0, device 4
12-19 15:25:02.521: I/AudioPolicyManager(110): getDeviceForStrategy() strategy 0, device 4
12-19 15:25:02.521: I/AudioFlinger(110): start output streamType (0, 3) for 1
12-19 15:25:02.521: D/AudioHardware(110): AudioStreamOutALSA::setParameters() start_output_streamtype=3
12-19 15:25:02.521: D/AudioHardware(110): AudioHardware pcm playback is exiting standby.
Во втором случае я вижу, как аппаратное обеспечение устанавливает громкость на максимум, а затем выходит из режима ожидания, но это не так.это случилось в первом случае.Но почему?Тот же код, единственное отличие - его выполнение после нажатия кнопок громкости во втором случае.