使用字符串值java android获取资源文件到MediaPlayer?

问题描述 投票:0回答:1

当我单击图标时,我正在回收器视图中播放音频,这是我的代码:

//Recyclerview onClickListener      holder.icon_audio.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View view) {
String filename=    String.valueOf(model.getWordA());           Toast.makeText(view.getContext(), filename, Toast.LENGTH_SHORT).show();
    
MediaPlayer mediaPlayer = MediaPlayer.create(view.getContext(), R.raw.file);
mediaPlayer.start();                //mediaPlayer.release();
}});

一切都很好,只需要使用我从模型获得的变量播放音频..

如何用

R.raw.file

中的文件替换文件名字符串
java android string resources media-player
1个回答
0
投票

请确保文件操作发生在 IO 线程上,因为它可能会消耗大量时间。

如果对你有帮助就点个赞吧。

InputStream is = null;
FileOutputStream out = null;
Context context = view.getContext();
try {
    File tempFile = new File(context.getFilesDir(), "your_File_name");
    if (tempFile.exists()){
        tempFile.delete();
    }
    is = context.getResources().openRawResource(R.raw.file);
    out = new FileOutputStream(tempFile);
    copy(is, out);

    MediaPlayer mediaPlayer = MediaPlayer.create(this, Uri.fromFile(tempFile));
    mediaPlayer.start();
} catch (Exception e) {
    //Log
} finally {
    if (is != null) {
        try {
            is.close();
        } catch (Exception e) {
            //Log
        }
    }
    if (out != null) {
        try {
            is.close();
        } catch (Exception e) {
            //Log
        }
    }
}

private void copy(final InputStream in, final OutputStream out)
    throws IOException {
    final byte[] b = new byte[8192];
    for (int r; (r = in.read(b)) != -1; ) {
        out.write(b, 0, r);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.