Demora para carregar arquivos ogg ? RESOLVIDO

Boa tarde a todos, tenho aqui na pasta RAW 200 arquivos no formato OGG que emite sons, e estou carregando na minha activity no oncreate, só que para carregar todos estes 200 arquivos demora um pouco para abrir a tela, ficando congelado até carregar tudo.

Faço algo assim

// aqui incluimos os sons private void sons() { sm = SoundManager.getInstance(this); sm.addSound(R.raw.a0001); // index 0 sm.addSound(R.raw.a0003); // index 1 sm.addSound(R.raw.a0004); // index 2 ... ... sm.addSound(R.raw.a0200); // index 199 }

Alguma dica, como posso melhorar a performance para abrir a tela sem demorar?

Obrigado.

Você não pode carrega-los async?

A tela abriria mas você tem que gerenciar para tocar apenas após o carregamento.

[quote=Marky.Vasconcelos]Você não pode carrega-los async?

A tela abriria mas você tem que gerenciar para tocar apenas após o carregamento.[/quote]Boa tarde, tem algum lugar a onde possa ter um exemplo de como fazer desta forma? Pois não conheço como seira.

Obrigado.

[quote=adriano_servitec][quote=Marky.Vasconcelos]Você não pode carrega-los async?

A tela abriria mas você tem que gerenciar para tocar apenas após o carregamento.[/quote]Boa tarde, tem algum lugar a onde possa ter um exemplo de como fazer desta forma? Pois não conheço como seira.

Obrigado.[/quote]

Na documentação:

https://developer.android.com/reference/android/os/AsyncTask.html

Obrigado a todos, deu certo aqui.

Vendo aqui, realmente abriu, mais como foi dito aqui, e não percebi, realmente não deu completamente certo.

Tenho causas tipo

Pelo que estou vendo este erro é porque não foi carregado todos. Ai é um problema

Não da para eu carregar tudo isso aqui no onCreate

// aqui incluimos os sons private void sons() { sm = SoundManager.getInstance(this); sm.addSound(R.raw.a0001); // index 0 sm.addSound(R.raw.a0003); // index 1 sm.addSound(R.raw.a0004); // index 2 ... ... sm.addSound(R.raw.a0200); // index 199 }

Então faço a pergunta: tem como trazer apenas o que preciso?

O índice estou trazendo do banco de dados, ou seja faço um select e trago o ID, por isso sei qual som deve tocar. Mais não sei como fazer isso para carregar somente o que precisar. Tem alguma forma?

Obrigado.

Vendo aqui, realmente abriu, mais como foi dito aqui, e não percebi, realmente não deu completamente certo.

Tenho causas tipo

Pelo que estou vendo este erro é porque não foi carregado todos. Ai é um problema

Não da para eu carregar tudo isso aqui no onCreate

// aqui incluimos os sons private void sons() { sm = SoundManager.getInstance(this); sm.addSound(R.raw.a0001); // index 0 sm.addSound(R.raw.a0003); // index 1 sm.addSound(R.raw.a0004); // index 2 ... ... sm.addSound(R.raw.a0200); // index 199 }

Então faço a pergunta: tem como trazer apenas o que preciso?

O índice estou trazendo do banco de dados, ou seja faço um select e trago o ID, por isso sei qual som deve tocar. Mais não sei como fazer isso para carregar somente o que precisar. Tem alguma forma?

Obrigado.[/quote]

Acho que isso pode me ajudar.

[quote=adriano_servitec]Acho que isso pode me ajudar.

E ajudou, olhando o exemplo da dica ai, fiz meu método assim

[code]private void somAudio(String somCapturado) {
player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
AssetFileDescriptor afd = getAssets().openFd(somCapturado + “.ogg”);

        player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),
                afd.getLength());

        player.prepare();
        if (player != null) {
            player.start();
        }

    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

[/code]

Muito obrigado.