Pergunta

método Em MediaPlayer.create um id para um arquivo Raw pode ser usado, mas como usar esse método em setDataSource?

Foi útil?

Solução

Você pode carregar o áudio cru em um fluxo de entrada e carregá-lo em um MediaPlayer como se fosse um fluxo normal:

InputStream ins = getResources().openRawResource(R.raw.example);

e siga um tutorial de streaming como pocketjourney

Mas isso é excessivamente complicado, como você pode apenas chamar

mp = MediaPlayer.create(counterstrikesb.this, R.raw.example);

Outras dicas

Consulte a fonte android.media.MediaPlayer

AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid);
if (afd == null) return;
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();

Você pode querer adicionar try-catch para o bloco.

parafraseando @ resposta de Kartik aqui obter URI de arquivo .mp3 armazenado em res pasta / raw no android

Se você deseja obter qualquer recurso URI então existem duas maneiras:

  1. Usar Nome do recurso

Sintaxe: android.resource: // [pacote] / [tipo de res] / [nome res]

Exemplo: URI.parse ( "android.resource: //com.my.package/drawable/icon");

  1. Usando Resource Id

Sintaxe: android.resource: // [pacote] / [RESOURCE_ID]

Exemplo: URI.parse ( "android.resource: //com.my.package/" + R.drawable.icon);

Estes foram os exemplos para obter o URI de qualquer arquivo de imagem armazenados na pasta drawable. Da mesma forma você pode obter URIs de res pasta / raw.

IMO a segunda maneira seria preferível como renomear o recurso etc pode ser facilmente reformulado.

Definir a fonte de dados da seguinte forma:

CONSTANTS.RES_PREFIX = "android.resource://com.my.package/"
mp.setDataSource(getApplicationContext(),
              Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top