如何从RAW文件夹,而不是SDCARD加载MP3文件
问题描述:
你好我正在看这个教程on the web:但它有一些错误,并没有看到工作正确。如何从RAW文件夹,而不是SDCARD加载MP3文件
我只是想知道,如何从SDCARD的RAW文件夹中加载我的MP3文件,如下面的代码所示。感谢
public class SongsManager {
// SDCard Path
final String MEDIA_PATH = new String("/sdcard/");
private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
// Constructor
public SongsManager(){
}
/**
* Function to read all mp3 files from sdcard
* and store the details in ArrayList
* */
public ArrayList<HashMap<String, String>> getPlayList(){
File home = new File(MEDIA_PATH);
if (home.listFiles(new FileExtensionFilter()).length > 0) {
for (File file : home.listFiles(new FileExtensionFilter())) {
HashMap<String, String> song = new HashMap<String, String>();
song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4)));
song.put("songPath", file.getPath());
// Adding each song to SongList
songsList.add(song);
}
}
// return songs list array
return songsList;
}
/**
* Class to filter files which are having .mp3 extension
* */
class FileExtensionFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".mp3") || name.endsWith(".MP3"));
}
}
}
答
使用raw
资源与媒体播放类ID,像MediaPlayer
。因此,例如,如果您有res/raw/resources_are_not_files.mp3
,则可以使用R.raw.resources_are_not_files
来引用该MP3的方法,如create()
on MediaPlayer
。
答
将在原料文件夹中的MP3文件,并用这种方式
MediaPlayer mplayer;
mplayer= MediaPlayer.create(this, R.raw.yoursound);// create & refer the id
mplayer.start();//will play the file
对于更详细检查此链接http://www.tutorialspoint.com/android/android_mediaplayer.htm
答
正如你所要求的
>如何加载我原始文件夹中的MP3文件已插入SDCARD
个答案是:
MediaPlayer mplayer;
mplayer= MediaPlayer.create(this, R.raw.soundfile);// it is the file that you save in ur raw folder
mplayer.start();
如果你想完整的例子
你可以试试这个代码:
package com.hrupin.mp3player;
import com.hrupin.mp3player.R;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.SeekBar;
public class Mp3player extends Activity {
private Button buttonPlayStop;
private MediaPlayer mediaPlayer;
private SeekBar seekBar;
private final Handler handler = new Handler();
// Here i override onCreate method.
//
// setContentView() method set the layout that you will see then
// the application will starts
//
// initViews() method i create to init views components.
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
initViews();
}
// This method set the setOnClickListener and method for it (buttonClick())
private void initViews() {
buttonPlayStop = (Button) findViewById(R.id.ButtonPlayStop);
buttonPlayStop.setOnClickListener(new OnClickListener() {@Override public void onClick(View v) {buttonClick();}});
mediaPlayer = MediaPlayer.create(this, R.raw.testsong_20_sec);
seekBar = (SeekBar) findViewById(R.id.SeekBar01);
seekBar.setMax(mediaPlayer.getDuration());
seekBar.setOnTouchListener(new OnTouchListener() {@Override public boolean onTouch(View v, MotionEvent event) {
seekChange(v);
return false; }
});
}
public void startPlayProgressUpdater() {
seekBar.setProgress(mediaPlayer.getCurrentPosition());
if (mediaPlayer.isPlaying()) {
Runnable notification = new Runnable() {
public void run() {
startPlayProgressUpdater();
}
};
handler.postDelayed(notification,1000);
}else{
mediaPlayer.pause();
buttonPlayStop.setText(getString(R.string.play_str));
seekBar.setProgress(0);
}
}
// This is event handler thumb moving event
private void seekChange(View v){
if(mediaPlayer.isPlaying()){
SeekBar sb = (SeekBar)v;
mediaPlayer.seekTo(sb.getProgress());
}
}
// This is event handler for buttonClick event
private void buttonClick(){
if (buttonPlayStop.getText() == getString(R.string.play_str)) {
buttonPlayStop.setText(getString(R.string.pause_str));
try{
mediaPlayer.start();
startPlayProgressUpdater();
}catch (IllegalStateException e) {
mediaPlayer.pause();
}
}else {
buttonPlayStop.setText(getString(R.string.play_str));
mediaPlayer.pause();
}
}
希望这有助于... :)
一个疑问..如果我们加载原始文件夹中的.mp3文件,它将反映在.apk大小中。 – SaravanaRaja 2014-10-01 16:55:55
@ S3a2r0a8v9a6n9a:是的,打包在APK中的MP3文件将增加APK的大小。由于MP3已经是压缩格式,所以APK的大小将会增加大约MP3文件本身的大小。因此,这种技术主要适用于短暂的声音效果等,而不是音乐小时。 – CommonsWare 2014-10-01 16:58:15
感谢您的明确解释:) – SaravanaRaja 2014-10-01 17:02:31