Android - Comment obtenir de l'Uri de fichier raw?
Je suis en train d'essayer d'obtenir le Uri
à partir d'un fichier raw que j'ai inclus dans le projet dans le raw
dossier.
Mais je suis un FileNotFoundException
, n'importe quoi.
Le fichier est un .wav
fichier, également essayé avec un .mp4
, aussi ne fonctionne pas.
Jouant à la fois les fichiers avec MediaPlayer
fonctionne.
La Uri
retourne: mark.dijkema.android.eindopdracht/2130968576
Mon Code:
package mark.dijkema.android.eindopdracht;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.net.Uri;
import android.os.Bundle;
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PlayWaveFile();
}
private void PlayWaveFile()
{
//define the buffer size for audio track
int minBufferSize = AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
int bufferSize = 512;
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STREAM);
Uri url = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.usa_for_africa_we_are_the_world);
File file = new File(url.toString());
int count = 0;
byte[] data = new byte[bufferSize];
try {
FileInputStream fileInputStream = new FileInputStream(file);
DataInputStream dataInputStream = new DataInputStream(fileInputStream);
audioTrack.play();
while((count = dataInputStream.read(data, 0, bufferSize)) > -1)
{
audioTrack.write(data, 0, count);
}
audioTrack.stop();
audioTrack.release();
dataInputStream.close();
fileInputStream.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
L'Erreur:
java.io.FileNotFoundException: /mark.dijkema.android.eindopdracht/2130968576: open failed: ENOENT (No such file or directory)
OriginalL'auteur DijkeMark | 2013-05-28
Vous devez vous connecter pour publier un commentaire.
Essayer cette approche, l'utilisation
getResources().openRawResource(ResourceID)
que votre inputStream.Quelque part le long de cette :
getResources().openRawResource(ResourceID)
retourne un InputStreamEDIT : Supprimer ces code si vous utilisez la méthode ci dessus
Espère que cette aide, Bonne Chance! ^^
Heureux d'entendre ça, bonne chance pour la compensation de bruit et se le fourre ^^
OriginalL'auteur reidzeibel
Vous pouvez ouvrir votre InputStream de la Ressource brute comme ceci:
OriginalL'auteur Andreas Hage
Voici quelques méthodes qui pourraient aider quelqu'un:
Il suffit d'appeler la méthode comme ceci:
OriginalL'auteur