刚接触音乐这一块,遇到了一些问题,很简单的问题,希望能帮助和我有一样问题的人。播放音乐有几种,容易出现问题的有几中!以及播放原始资源文件,重点说有问题的地方。对于播放应用的资源文件。用到的是MediaPlayer.create的方法。
错误代码实例:
private MediaPlayer mediaPlayer;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
play = (ImageButton) findViewById(R.id.start);
stop = (ImageButton) findViewById(R.id.stop);
pause = (ImageButton) findViewById(R.id.pause);
mediaPlayer = new MediaPlayer();
<span style="color:#ff6666;"> mediaPlayer.create(this,R.raw.m);</span>
// try {
// mediaPlayer.prepare();
// } catch (IOException e) {
// e.printStackTrace();
// }
mediaPlayer.start();;
}
上面的代码好像的没有错误的,但是红色字体的位置,对象引用错误,很关键,对于刚学的同学很容易犯这种
error;
正确的方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
play = (ImageButton) findViewById(R.id.start);
stop = (ImageButton) findViewById(R.id.stop);
pause = (ImageButton) findViewById(R.id.pause);
mediaPlayer = new MediaPlayer();
mediaPlayer = MediaPlayer.create(this,R.raw.m);
// try {
// mediaPlayer.prepare();
// } catch (IOException e) {
// e.printStackTrace();
// }
mediaPlayer.start();;
}
这就是简单的调用资源中的文件,对于原始资源文件,要说下什么事原始的资源文件。Android中没有提供专门支持的文件 叫原始资源文件。android原始资源一般放在/res/raw目录和/assets/目录下;在assets目录下的文件通过AssetMananger来管理。知道之后可能会好理解的多!
代码实现:
am = getAssets();
try {
afd = am.openFd("m.mp3");
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.start();;
上面的就是实现原始资源的播放方法,那么m.mp3在哪呢,在/assets/下不是/res/assets。上面也可能出现几个
问题,那就是要单独的创建出对象,举个例子,要在上面写出,AssetManager am;这样。
然后就是播放外部储存器以及网络的音乐,这些和第一个create的差不多,外部的也就是我们多说的内存卡了,
对于网络的,知道地址就好了。