В моем приложении с пользовательским интерфейсом есть громкость для воспроизведения звукового файла при нажатии пользователем.Это фрагмент, который содержит объем.Я добавил класс SoundManager для выполнения следующих функций: создание, загрузка и воспроизведение Soundpool Object
SoundManager.java
public class SoundManager {
private SoundManager soundManager;
SoundPool soundPool;
int CLICK_SOUND;
public SoundManager(){
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
soundPool = (new SoundPool.Builder()).setMaxStreams(1).build();
}else{
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 5);
}
}
public void loadSound(Context context, int resID){
CLICK_SOUND = soundPool.load(context, resID, 1);
// CLICK_SOUND1 = soundPool.load(context, R.raw.vegetable, 1);
// load other sound if you like
}
public void playClickSound(){
soundPool.play(CLICK_SOUND, 1.0F, 1.0F, 0, 0, 1.0F);
}
}
Затем в Fragment.java.внутри @override onCreateView
я использовал getActivity().getApplicationContext()
, чтобы получить контекст этого фрагмента.
, если я поставил soundManager.loadSound(context,resID)
ниже getActivity().getApplicationContext()
. Конечно, звук воспроизводился, когда пользователь нажимал кнопку громкости.Однако когда я вставил soundManager.loadSound(context,resID)
в функцию OnClick()
, Звук не воспроизводился.как я могу это исправить
Fragment.java
> .....inside onCreatView(...)
context=getActivity().getApplicationContext();
final SoundManager soundManager=new SoundManager();
//soundManager.loadSound(context,resID);// Okay, Sound is run...
btnVolume.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String action="handlerSoundVolume";
//LoadSound in here is not active...????
soundManager.loadSound(context,resID);
soundManager.playClickSound();
mainRoundMode4.itemClicked(action,"");
}
});