android?MMI(多媒体)接口--音乐播放器
(主要是Activity类加上绘图代码? button和textview等省略public class mainActivity extends Activity {
?// 要播放音乐需要建立一个媒体播放的对象
?private MediaPlayer mediaPlayer;
?private EditText textFilename;
?private Button buttonPause;
?
?//电话接听完以后又开始播放了 所以要重写onRersume方法
?
//这里面重写生命周期的三个方法
[email protected]
?protected void onPause() {
??if(mediaPlayer.isPlaying()){
???mediaPlayer.stop();
???buttonPause.setText(R.string.resume);
??}
??super.onPause();
?}
[email protected]
?protected void onResume() {
??if(!mediaPlayer.isLooping()){
???mediaPlayer.start();
???buttonPause.setText(R.string.pause);
??}
??super.onResume();
?}
?
//在activtiy关闭的时候进行资源释放
[email protected]
?protected void onDestroy() {
??if(mediaPlayer.isPlaying()){
???mediaPlayer.stop();
??}
??mediaPlayer.release();
??super.onDestroy();
?}
?
[email protected]
?public void onCreate(Bundle savedInstanceState) {
??super.onCreate(savedInstanceState);
??setContentView(R.layout.main);
??// 注意 多个按钮的情况下采用公共的对象来处理电击事件
??Button buttonPlay = (Button) findViewById(R.id.play);
??Button buttonPause = (Button) findViewById(R.id.pause);
??Button buttonStrop = (Button) findViewById(R.id.stop);
??buttonPause.setOnClickListener(new onClick());
??buttonPlay.setOnClickListener(new onClick());
??buttonStrop.setOnClickListener(new onClick());
??// 得到文本(MP3)的来源
??textFilename = (EditText) findViewById(R.id.filename);
??// 完成对media对象的初始化
??mediaPlayer = new MediaPlayer();
?}
?// 这个地方需要注意了 onClick实现View.OnClickListener
?private class onClick implements View.OnClickListener {
[email protected]
??public void onClick(View v) {
???try {
????switch (v.getId()) {
????case R.id.play: // 来自播放按钮
?????// 重设里面的参数让它还原
?????mediaPlayer.reset();
?????// 设置数据来源
?????mediaPlayer.setDataSource("/sdcard/" + textFilename);
?????//需要先缓冲一下
?????mediaPlayer.prepare();
?????mediaPlayer.start();
?????break;
????case R.id.pause: // /来自暂停按钮
?????if(mediaPlayer.isPlaying()){
??????mediaPlayer.pause();
??????buttonPause.setText(R.string.resume);
?????}else{
??????mediaPlayer.start();
??????buttonPause.setText(R.string.pause);
?????}
?????break;
????case R.id.stop: // 来自停止按钮
?????????????????? if(mediaPlayer.isPlaying()){
??????????????? ??? mediaPlayer.stop();
??????????????? ?
?????????????????? }
?????break;
????}
???} catch (Exception e) {
????e.printStackTrace();
???}
??}
?}
}
?
?
?
总结 需要注意的地方
用try{
????? switch(){
Case:
//省略
Break;
}
}catch(Exception e){
e.printStackTrace():
}
?
重点注意一点 按钮上的文字是可以变化的
配置中 android:text @String/button;
android:id @id+/button;
//改变显示的字体代码
pauseButton.setText(R.id.button);
??????
?
如果这个播放器在播放的时候来了一个电话 那么需要提供生命周期方法
Onpause()来实现的
?
?
因为这里要方法sd卡 所以把sd卡的访问权限加进去
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>