Можно ли воспроизводить класс SoundPool в onCreateView()?
Я работаю над приложением, в котором при запуске нового фрагмента должно начаться воспроизведение звука. Поэтому я использую Soundpool для воспроизведения звука в onCreateView, но не работает. в чем может быть проблема? Soundpool не работает в OnCreateView?
это мой код
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.next_ex, container, false);
createSoundPool();
loadSounds();
volumeSounds();
mSoundPool.play(sdID_clock,volume/2,volume/2,0,0,1);
return rootView;
}
protected void createSoundPool(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mAttributesBuilder = new AudioAttributes.Builder();
mAttributesBuilder.setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION);
mAttributesBuilder.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION);
mAttributes = mAttributesBuilder.build();
mSoundPoolBuilder = new SoundPool.Builder();
mSoundPoolBuilder.setAudioAttributes(mAttributes);
mSoundPool = mSoundPoolBuilder.build();
} else {
mSoundPool = new SoundPool(10, AudioManager.MODE_IN_COMMUNICATION,0);
mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
loaded = true;
}
});
}
}
protected void loadSounds(){
sdID_clock = mSoundPool.load(getContext(), R.raw.clock,1);
}
protected void volumeSounds(){
getActivity().setVolumeControlStream(AudioManager.STREAM_MUSIC);
audioManager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
curVolume = (float)audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
maxVolume = (float)audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
volume = curVolume / maxVolume;
}
1 ответ
Да, ты можешь. Вызовите эти методы из асинхронного потока.
createSoundPool();
loadSounds();
volumeSounds();
Затем переопределите setOnLoadCompleteListener, чтобы убедиться, что звуковые пулы загружаются перед их воспроизведением.