音乐播放器
一.插入要播放的音乐文件(这部分作业里并没有要求)
Android模拟器中添加歌曲的详细步骤:
点击Tools->Android->Android Device Monitor后到了以下界面:
里面有个mnt->adcard
右上方那个
选择就可以了
二.目前实现的界面
首页(安装在自己手机的截图)
这个界面的代码和原理都是比较简单的,难点是ListView这部分,最大的那个圆圈和第三个小点利用shape属性实现的
接下来是播放、暂停、终止,上一首、下一首的操作
重点代码:
首先定义数组(我导入了7首歌,方便后面的ListView的翻阅),然后进行获取SDK中的文件,从而获取音乐路径::
private void initMediaPlayer() {
File file = new File(Environment.getExternalStorageDirectory(),musicName[currIndex]);
try {
player.setDataSource(file.getPath());//音频文件路径
player.prepare();//让mediaPlayer进入准备状态
} catch (IOException e) {
e.printStackTrace();
}
}
要获取权限:
Mainifest.xml获取权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
java中的主要代码:
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
// super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch(requestCode){
case 1:
if (grantResults.length > 0 && grantResults [0] == PackageManager.PERMISSION_GRANTED){
initMediaPlayer();
}else {
Toast.makeText(this, "拒绝权限无法使用程序",Toast.LENGTH_SHORT).show();
finish();
}
break;
default:
}
}
播放,暂停、终止、上一首、下一首,先获取相关的ID,设置监听:
public void onClick(View v) {
switch(v.getId())
{
case R.id.favorite:
{
Toast.makeText(MainActivity.this,"已添加到我喜欢",Toast.LENGTH_LONG).show();
}
case R.id.start:
{
if(!player.isPlaying())
{
player.start();
}
break;
}
case R.id.shangyishou:
{
if(currIndex<musicName.length)
{
player.stop();
player.reset();
currIndex++;
initMediaPlayer();
player.start();
}
else
{
Toast.makeText(MainActivity.this,"这已经是第一首歌了",Toast.LENGTH_LONG).show();
}
break;
}
case R.id.xiayishou:
{
if(currIndex>1)
{
player.stop();
player.reset();
currIndex--;
initMediaPlayer();
player.start();
}
else
{
Toast.makeText(MainActivity.this,"这已经是最后一首歌了",Toast.LENGTH_LONG).show();
}
break;
}
case R.id.pause:
{
if(player.isPlaying())
{
player.pause();
}
break;
}
case R.id.stop:
{
if(player.isPlaying())
{player.reset();
initMediaPlayer();
}
}
}
}
这里面最难的是上一首歌下一首的设置,在进行下一首时,先判断数组的元素是否大于数组本身的长度,因为我的歌曲放在数组里,通过数组来获取SDK中的音乐文件,如果数组元素没有大于数组的长度,则可以实现next功能,然后数组元素不断增加,直到数组的元素等于数组的长度,则输出“这是最后一首歌”;在进行上一首的原理也一样,先进行停止,再进行重置,然后初始化,最后start就可以实现上一首和下一首的播放。
下方的还没有实现对应的功能,作业中也没有这部分要求,我想在假期把这部分功能完全实现。
音乐列表的实现:
1.先在activity_main.xml中定义ListView组建
2.新建一个List.xml
3.获取和实现
重点代码:
首先要对ListView设置监听,利用适配器ArrayAdapter来进行设定
ArrayAdapter<String> arrayAdapter=null;
arrayAdapter=new ArrayAdapter<String>(MainActivity.this,R.layout.list,musicName);
final ListView list=(ListView)findViewById(R.id.list1);
list.setAdapter(arrayAdapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
currIndex=pos;
String result=parent.getItemAtPosition(pos).toString();
Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();
player.reset();
initMediaPlayer();
player.start();
}
});
利用Toast.makeText来获取点击了哪首歌
然后将位置赋值给数组的元素,再重置、初始化、播放,这样就可以点击列表实现音乐的播放
点击下方的音乐列表,也可以实现音乐的播放。
代码链接:
https://git.coding.net/mxl123_mxl/music_mxl.git
APK下载:
https://coding.net/u/mxl123_mxl/p/music_mxl/git/blob/master/app-debug.apk
因为没有导入音乐,所以下载到手机后无法实现音乐的播放等操作。
我一共放了7首歌曲。
视频链接:
http://v.youku.com/v_show/id_XMzk5NzY5ODY3Ng==.html?tpa=dW5pb25faWQ9MTAzMjUyXzEwMDAwMV8wMV8wMQ
因为我的电脑不支持自带的模拟器,我所使用的模拟器是第三方的模拟器,屏幕有点大,录屏时有水印,不过基本的功能没有受影响。