Android, воспроизводящий звук в саундпуле
Я загрузил некоторый код, который вместо воспроизведения звука в моем местном классе вызывает другой класс для воспроизведения звука, единственная проблема, с которой я сталкиваюсь, это то, что я не могу использовать клавиши регулировки громкости на телефоне для регулировки громкости, пока мой старый код в моем местном классе позволили мне сделать это.
По-старому, у локального класса был такой код:
AudioManager mgr = (AudioManager) GameScreen_bugfix.this.getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent / streamVolumeMax;
soundPool.play(soundPoolMap.get(sound), volume, volume, 1, 0,1f);
Новый код выглядит так:
public static void playSound(int index,float speed)
{
float streamVolume;
try {
streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
streamVolume = streamVolume / mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 1, 0, speed);
} catch (Exception e) {
e.printStackTrace();
//Log.v("THE ERROR", mSoundPoolMap+" "+index);
}
}
поэтому я попытался изменить это так:
AudioManager mgr = (AudioManager) SoundManager.getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr
.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = mgr
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent / streamVolumeMax;
Но этот getSystemService выделяется красным, и когда я нахожу курсор мыши, он говорит:
Метод getSystemService(String) не определен для типа SoundManager
Что делать? Спасибо!
2 ответа
Если вы хотите воспроизвести звук на определенном Системой уровне звука, измените это:
mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 1, 0, speed);
к этому:
mSoundPool.play(mSoundPoolMap.get(index), 1, 1, 1, 0, speed);
Уровень громкости, на который вы переходите play
ограничен между 0 и 1. Он представляет собой процент от системной громкости для воспроизведения звука. Таким образом, значение.5 будет играть на 50% уровня громкости системы.
На самом деле, если вам нужно, чтобы аппаратные клавиши регулировки громкости настраивали поток мультимедиа вместо потока мелодий звонка, вы можете запросить это с помощью http://developer.android.com/reference/android/app/Activity.html. #setVolumeControlStream(INT):
@Override
public void onStart() {
super.onStart();
setVolumeControlStream(AudioManager.STREAM_MUSIC);
}