Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Загрузить SoundPool в потоке во время запуска приложения

Автор вопроса: Thiago CezzarОтветов: 1

это мой первый вопрос здесь. Я искал весь путь, много пробовал, но не мог получить то, что я хочу сделать. Вот проблема: у меня есть приложение, которое использует SoundPool для воспроизведения звуков, вот и все. Но их много (> 50) и требуется время, чтобы загрузить один за другим. посмотри;

@Override public View onCreateView (расширитель LayoutInflater, контейнер ViewGroup, Bundle saveInstanceState) { View view = inflater.inflate (R.layout.fragment_fragment_hue, container, false); DBSupport.setContext(getActivity()); список = DBSupport.getListaHue();

    sp = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);

    final ArrayList<CharSequence> lista_string = new ArrayList<CharSequence>();

    for (int i = 0; i < lista.size(); i++) {

        Hue e = null;
        e = lista.get(i);
        e.setValor(sp.load(getActivity(), getResId(e.getNome_hue(), ListaHues.class), 1));
        lista_string.add(lista.get(i).getDescricao());
    }

И я хочу создать поток или асинхронную загрузку, пока я прокручиваю ListView

Любой совет?

PS: я новичок, так что извините, если код смущает.

Спасибо!!

androidmultithreadingasynchronousloadsoundpool

Ответы

Ответ 1 · Doug Stevenson

Здесь вам нужно загрузить все звуки, которые вы хотели бы воспроизвести в своей активности, когда она запускается в onCreate(). Прежде чем вызывать load() для любого звука, вы также должны установить один прослушиватель с помощью setOnLoadCompleteListener(), который определяет, когда все звуки загружены. Только после того, как звуки будут завершены, вы можете попытаться воспроизвести их.

Если вам нужно, чтобы все звуки были полностью загружены до того, как пользователь взаимодействует с вашим пользовательским интерфейсом, вы можете предоставить какой-то индикатор ожидания, пока все звуки не будут сделаны. По завершении покажите свой пользовательский интерфейс. Затем просто проигрывать звук, когда это необходимо, и он должен начать воспроизводиться мгновенно.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы