1、音乐播放器的界面文件:一个可以输入播放音乐文件路径的文本框,和四个按钮:
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
android:textSize="20sp" />
android:id="@+id/et_path"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
android:layout_width="fill_parent"
>
android:gravity="center_horizontal"//指定组件水平居中显示
android:orientation="horizontal" >
android:id="@+id/play"
android:layout_width="0dip" //设置按钮为宽度为0
android:layout_height="wrap_content"
android:layout_weight="1"//设置按钮比重为1
android:text="播放" />
android:id="@+id/pause"
android:layout_width="0dip"
android:layout_height="wrap_content"
>
android:text="暂停" />
android:id="@+id/replay"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
>
android:id="@+id/stop"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="停止" />
2、播放器的播放、重播、暂停、停止操作。
①、播放:
//创建MediaPlayer对象
MediaPlayer>
//设置播放类型
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置播放文件的路径
mPlayer.setDataSource(path);
// 注意:非常重要
mPlayer.prepare(); // 调用底层c代码 完成>
}
});
//开始播放:
mPlayer.start();
②、暂停:
//mPlayer.isPlaying()判断是否在播放
if (mPlayer !=>
>
}
/创建MediaPlayer对象
MediaPlayer>
//设置播放类型
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置播放文件的路径
mPlayer.setDataSource(path);
// 注意:非常重要
mPlayer.prepare(); // 调用底层c代码 完成>
}
});
//开始播放:
mPlayer.start();
④、停止:
if (mPlayer !=>
}
1、先解析 歌词文件 .lrc文件。
①、歌词文件的样式为:
[00:01.93]小村之恋
[00:24.36]弯弯的小河青青的山冈
[00:31.53]依偎着小村庄
[00:35.82]蓝蓝的天空阵阵的花香
②、解析.lrc文件,一行行读取歌词,解析出时间和歌词, 把时间作为key,对应的歌词作为value,放到map集合中。
Map>
String>
>
>
String>
SimpleDateFormat>
Date>
System.out.println(>
Map.put(date,value );
2、在播放时显示歌词的具体操作:
public>
>
//用于修改歌词的handler
>
@Override
>
//将时间作为key 在map中取出歌词显示:
}
};
@Override
>
>
>
>
>
>
>
>
>
>
>
>
}
>
>
>
}
>
>
}
play(path);
break;
}
}
private void play(String path) {
try {
>
>
}
});
mPlayer.start();
>
// >
//把音频文件加载到声音池里面;返回id
//方法的参数1:上下文
参数2:指定声音资源文件
参数3:
int>
}
//点击开火的按钮:
public void fire(View view){
//播放声音池中声音:play()方法
方法参数1:声音的id
参数2:左声道大小,
参数3:右声道声音大小,
参数4:指定优先级,0为最低。
参数5:指定声音的播放模式,取值:0表示只播放一次,-1:永久循环播放。
参数6:指定声音播放的速率。
soundpool.play(soundid,1.0f, 1.0f, 0, 0, 1.0f);
}
③、play()方法的调用是异步的。