Что может быть причиной того, что setVolume работает на Google Pixel, но не на Galaxy S9?

Решения здесь:

  1. Используйте None в качестве значения по умолчанию (или nonce object) и включите его, чтобы создать свои значения во время выполнения; или
  2. Используйте параметр lambda в качестве параметра по умолчанию и вызовите его в блоке try, чтобы получить значение по умолчанию (это то, что требуется для лямбда-абстракции).

Второй вариант хорош, потому что пользователи функции могут проходить в вызываемом, который может уже существовать (например, type)

1
задан zta 26 March 2019 в 14:36
поделиться

2 ответа

Возможно, ваш MediaPlayer все еще находится в состоянии Idle после того, как вы позвоните mp.start() в течение нескольких миллисекунд. В Andoid Documentation говорится, что если setVolume вызывается из состояния Idle, ошибки не будут выдаваться, однако никаких изменений в состоянии MediaPlayer не будет.

Если это проблема, возможное исправление будет ждать, пока mp.isPlaying() не вернет true, прежде чем вводить свой оператор switch. Возможно, что аудио драйвер Samsung имеет небольшую задержку, и это является причиной этой проблемы.

Цитата из документации Android:

Существует небольшая, но важная разница между вновь созданным объектом MediaPlayer и объектом MediaPlayer после вызова метода reset (). Это программная ошибка для вызова таких методов, как setVolume (float, float) ... в состоянии ожидания для обоих случаев.

Если любой из этих методов вызывается сразу после создания объекта MediaPlayer, предоставленный пользователем метод обратного вызова OnErrorListener.onError () не будет вызываться внутренним механизмом проигрывателя, и состояние объекта остается неизменным; но если эти методы вызываются сразу после reset (), предоставленный пользователем метод обратного вызова OnErrorListener.onError () будет вызван внутренним механизмом проигрывателя, и объект будет переведен в состояние Error.

0
ответ дан Dylan 26 March 2019 в 14:36
поделиться

Проблема решена!

Исходный код был верным, Galaxy S9 необходимо было обновить до Android 9.0 Pie, чтобы работали функции setVolume().

Следуя совету @ Dylan, я считаю, что это просто ошибка со стороны Samsung, подкрепленная тем фактом, что обновление системы было решением.

0
ответ дан zta 26 March 2019 в 14:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: