getContext () в фрагменте, когда я обрабатываю SoundPool (хочу воспроизвести звуковые файлы из базы данных) - PullRequest
0 голосов
/ 21 октября 2018

В моем приложении с пользовательским интерфейсом есть громкость для воспроизведения звукового файла при нажатии пользователем.Это фрагмент, который содержит объем.Я добавил класс 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,"");
            }
        });

1 Ответ

0 голосов
/ 21 октября 2018

Изменить context=getActivity().getApplicationContext() на context = getContext();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...