Как воспроизвести аудиофайлы прямо из папки res/raw?
У меня есть несколько аудио файлов в res/raw
папка. Я показываю ListView
который содержит имя аудиофайла. Я хочу воспроизвести соответствующий аудиофайл, когда пользователь выберет ListView
, я использовал setDataSource(path)
, но он показывает ошибку во время игры. Как воспроизводить аудио файлы прямо из этой папки? Или есть другой способ?
8 ответов
Добавить этот код в 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
}
});
}
var mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1)
mediaPlayer.start() // no need to call prepare(); create() does that for you
Поместите свой аудиофайл в папку res/raw и вызовите его из метода создания MediaPlayer.
MediaPlayer.create(this, R.raw.audio_file_name).start();
Например:
MediaPlayer.create(this, R.raw.sample).start();
Чтобы воспроизвести звук из необработанной папки, вызовите этот метод. В моем случае имя моего файла было 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()
}
}
}
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();
}
});
добавьте этот код в onItemClickListener, и еще одна информация: вы не можете воспроизводить какой-либо файл, кроме mp3, и файл mp3 должен иметь исходное расширение как файл.