Domanda

Nel metodo MediaPlayer.create un id in un file Raw può essere utilizzato, ma come utilizzare questo metodo in setDataSource?

È stato utile?

Soluzione

È possibile caricare l'audio raw in un flusso di input e caricarla in un MediaPlayer come si farebbe con un flusso normale:

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

e poi seguire un tutorial di streaming come pocketjourney

Ma questo è troppo complicato, come si può chiamare

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

Altri suggerimenti

Fare riferimento alla fonte android.media.MediaPlayer

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

È possibile aggiungere try-catch al blocco.

parafrasando @ risposta di Kartik qui ottenere URI di .mp3 memorizzato nella res / cartella prima in Android

Se si desidera ottenere qualsiasi risorsa URI poi ci sono due modi:

  1. Utilizzo di risorse del nome
  

Sintassi: android.resource: // [pacchetto] / [res digitare] / [res nome]

     

Esempio:   Uri.parse ( "android.resource: //com.my.package/drawable/icon");

  1. Utilizzo delle Risorse Id
  

Sintassi: android.resource: // [pacchetto] / [RESOURCE_ID]

     

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

Questi sono stati gli esempi per ottenere l'URI di un file immagine memorizzato nella cartella drawable. Allo stesso modo è possibile ottenere URI di res cartella / crudo.

  

IMO il secondo modo sarebbe preferito come rinominare l'etc risorsa può   essere facilmente riscritta.

Imposta la sorgente di dati in questo modo:

CONSTANTS.RES_PREFIX = "android.resource://com.my.package/"
mp.setDataSource(getApplicationContext(),
              Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top