Demora para carregar arquivos ogg ? RESOLVIDO

7 respostas
A

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.

7 Respostas

M

Você não pode carrega-los async?

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

A

Marky.Vasconcelos:
Você não pode carrega-los async?

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

Boa tarde, tem algum lugar a onde possa ter um exemplo de como fazer desta forma? Pois não conheço como seira.

Obrigado.

A

adriano_servitec:
Marky.Vasconcelos:
Você não pode carrega-los async?

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

Boa tarde, tem algum lugar a onde possa ter um exemplo de como fazer desta forma? Pois não conheço como seira.

Obrigado.

Na documentação:

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

A

Obrigado a todos, deu certo aqui.

A

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.

A

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.

Acho que isso pode me ajudar.

A
adriano_servitec:
Acho que isso pode me ajudar. http://stackoverflow.com/questions/3289038/play-audio-file-from-the-assets-directory

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

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();
        }
    }

Muito obrigado.

Criado 28 de agosto de 2013
Ultima resposta 31 de ago. de 2013
Respostas 7
Participantes 3