Android-如何从原始文件获取Uri?

我正在尝试Uri从文件raw夹中包含在项目中的原始文件获取。但是FileNotFoundException无论如何,我都会得到一个。

该文件是一个.wav文件,也尝试过使用.mp4,也不起作用。使用MediaPlayerDOES 播放两个文件都可以。

Uri回报:mark.dijkema.android.eindopdracht/2130968576

我的代码:

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

}

}

}

错误:

java.io.FileNotFoundException: /mark.dijkema.android.eindopdracht/2130968576: open failed: ENOENT (No such file or directory)

回答:

尝试这种方法,getResources().openRawResource(ResourceID)用作您的inputStream。沿着这个地方:

//FileInputStream fileInputStream = new FileInputStream(file);

InputStream inputStream = getResources().openRawResource(R.raw.usa_for_africa_we_are_the_world);

DataInputStream dataInputStream = new DataInputStream(inputStream);

audioTrack.play();

getResources().openRawResource(ResourceID) 返回一个InputStream

编辑:如果您使用上述方法,请删除这些代码

Uri url = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.usa_for_africa_we_are_the_world);

File file = new File(url.toString());

希望这有帮助,祝你好运!^^

以上是 Android-如何从原始文件获取Uri? 的全部内容, 来源链接: utcz.com/qa/424818.html

回到顶部