如何直接从res/raw文件夹播放音频文件?

bha*_*ath 30 android media-player r.java-file

我在res/raw文件夹中有多个音频文件.我显示ListView包含音频文件名称.我想在用户选择时播放相应的音频文件ListView.我已经习惯了setDataSource(path),但是在播放时显示错误.如何直接从该文件夹播放音频文件?或者还有其他方法吗?

ila*_*o j 55

在onItemClickListener中添加此代码.

listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View view, int position,long id) {                 
                TextView txtView=(TextView)view.findViewById(R.id.txt_view);
                String fname=txtView.getText().toString().toLowerCase();

                                int resID=getResources().getIdentifier(fname, "raw", getPackageName());

                              MediaPlayer mediaPlayer=MediaPlayer.create(this,resID);
                    mediaPlayer.start();
            }
        });
Run Code Online (Sandbox Code Playgroud)

  • 在使用这样的时候我得到了`ResourceNotFound`异常.我使用过`getResources().getIdentifier(audioname,"res/raw",getPackageName());`. (2认同)
  • 你能说明你在listview中显示文字的方式吗?例如.如果原始文件夹包含sound.mp3之类的文件,则应将文件名仅显示为"声音",不显示文件扩展名. (2认同)
  • 完善.:)我也通过了那个mp3扩展程序.这就是问题. (2认同)

Nik*_*tel 30

试试这个来自raw ::

MediaPlayer mPlayer2;
mPlayer2= MediaPlayer.create(this, R.raw.bg_music_wav);
        mPlayer2.start();
Run Code Online (Sandbox Code Playgroud)

清单文件中的权限::

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
Run Code Online (Sandbox Code Playgroud)

更新::

public void onItemClick(AdapterView<?> arg0, View view, int position,long id) {     
  MediaPlayer mPlayer2;
if(position==1)
{
    mPlayer2= MediaPlayer.create(this, R.raw.song1);
            mPlayer2.start();
}else it() .....
}
Run Code Online (Sandbox Code Playgroud)

  • 无需添加任何权限 (2认同)

Ric*_*cha 5

mVideoView = (VideoView) findViewById(R.id.Video_FrontPage);
uri = Uri.parse("android.resource://com.urPackageName/" + R.raw.welcom_video);
mVideoView.setVideoURI(uri);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.start();
Run Code Online (Sandbox Code Playgroud)

希望这对您有帮助。