簡體   English   中英

"如何直接從 res\/raw 文件夾播放音頻文件?"

[英]How to play the audio files directly from res/raw folder?

我在res\/raw<\/code>文件夾中有多個音頻文件。 我展示了包含音頻文件名的ListView<\/code> 。 當用戶選擇進入ListView<\/code>時,我想播放相應的音頻文件。 我使用了setDataSource(path)<\/code> ,但在播放時顯示錯誤。 如何直接從該文件夾播放音頻文件? 或者有沒有其他方法?

"

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

試試這個從原始播放 ::

MediaPlayer mPlayer2;
mPlayer2= MediaPlayer.create(this, R.raw.bg_music_wav);
        mPlayer2.start();

清單文件中的權限::

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

更新::

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

希望這可以幫助你。

 lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {

          // selected item 
          String product = ((TextView) view).getText().toString();

          int [] resID= {R.raw.sound1,R.raw.sound2,R.raw.sound3};
        MediaPlayer mediaPlayer=MediaPlayer.create(this,resID[position]);

          mediaPlayer.start();
          // sending data to new activity


      }
    });
}

要從原始文件夾播放音頻,請調用此方法。 在我的情況下,我的文件名是notificaion.mp3

AudioPlayer().playAudio(mContext, "notificaion")

這是 AudioPlayer 類:

class AudioPlayer {
private var mMediaPlayer: MediaPlayer = MediaPlayer()

private fun stopAudio() {
   try {
       mMediaPlayer.release()
   }catch (ex: Exception){
       ex.printStackTrace()
   }

}

fun playAudio(mContext: Context, fileName: String) {
    try {
        stopAudio()
        mMediaPlayer = MediaPlayer.create(mContext, mContext.resources.getIdentifier(fileName, "raw", mContext.packageName))
        mMediaPlayer.setOnCompletionListener {  stopAudio() }
        mMediaPlayer.start()
    }catch (ex: Exception){
        ex.printStackTrace()
    }

    }
}

將您的音頻文件放在 res/raw 文件夾中,並從 MediaPlayer 的 create 方法中調用它。

MediaPlayer.create(this, R.raw.audio_file_name).start();

例如:

MediaPlayer.create(this, R.raw.sample).start();
var mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1)
mediaPlayer.start() // no need to call prepare(); create() does that for you
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();
            }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM