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.