Я играю аудио (повествование) в аудиокниге.Аудиофайлы имеют формат .ogg, длительностью от 10 до 15 секунд каждый.
Изменить, чтобы добавить: Я использую Android 2.2, API 8, и у меня есть это в моем манифесте:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
У меня есть setVolumeControlStream (AudioManager.STREAM_MUSIC); в моем методе onCreate ().
Мои звуки воспроизводятся с помощью кода, подобного следующему:
mp = MediaPlayer.create(mContext, resource);
mp.setOnCompletionListener(this);
mp.seekTo(0);
mp.setLooping(looping);
if(isSoundEnabled())
{
mp.setVolume(1, 1);
}
else
{
// I still need sounds to call their onComplete listeners to drive action
mp.setVolume(0,0);
}
nowPlaying = true;
mp.start();
Но, несмотря на больше заверений (33 и считая!), Что просто нужно setVolumeControlStream (AudioManager.STREAM_MUSIC); в onCreate (), мои звуки не меняются в объеме, когда я нажимаю громкостьклавиш на моем устройстве (Motorola Xoom).
Чтобы убедиться, что мои клавиши регулировки громкости выполняли что-то , я переопределил onKeyDown
:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean result = true;
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP)
{
DebugLog.d(TAG, "volume up");
}
else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
{
DebugLog.d(TAG, "volume down");
}
}
и подтвердил через LogCat, чтоЯ нажимаю правильные клавиши регулировки громкости:
07-19 12:16:31.440: DEBUG/BookReader(17830): volume down; thread 1
07-19 12:16:31.710: DEBUG/BookReader(17830): volume down; thread 1
07-19 12:16:31.980: DEBUG/BookReader(17830): volume down; thread 1
07-19 12:16:32.440: DEBUG/BookReader(17830): volume up; thread 1
07-19 12:16:32.820: DEBUG/BookReader(17830): volume up; thread 1
Хотя следующая ссылка о SoundPool
, я должен вычислять объем потока вместо использования mp.setVolume(1, 1);
в моем первом кодеобразец выше?