界面布局,水平方向四个按钮平均分布,使用权重,定义android:layout_width=”0dp”,定义layout_weight=”1”这个属性全都一致就是平均分布
获取File对象,通过new File()来实现
判断文件是否存在,File对象的exists()方法,File对象的length()必须大于0
获取MediaPlayer对象,通过new出来
开始播放
调用MediaPlayer对象的setAudioStreamType()方法,设置音频流类型,参数:AudioManager.STREAM_MUSIC
调用MediaPlayer对象的setDataSource()方法,设置数据源,参数:String文件路径,也可以是http的
调用MediaPlayer对象的prepare()方法,准备
调用MediaPlayer对象的start()方法,播放
调用播放按钮的setEnable()方法,设置按钮为不可点击,参数:false
当播放完毕后应设置按钮可点击
调用MediaPlayer对象的setOnCompletionListener()方法,设置完成监听器,参数:OnCompletionListener接口,使用匿名内部类实现接口,重写方法onCompletion()方法,在这个方法里面调用播放按钮的setEnable(true)
停止播放
判断MediaPlayer对象不为空,并且MediaPlayer对象isPlaying()为真
调用MediaPlayer对象的stop()方法,停止播放
调用MediaPlayer对象的release()方法,是否
设置MediaPlayer对象为null
重新播放
判断MediaPlayer对象不为空,并且MediaPlayer对象isPlaying()为真
调用MediaPlayer对象seekTo()方法,设置播放进度,参数:0就可以
如果不存在,那么直接调用上面的播放函数
暂停播放
判断MediaPlayer对象不为空,并且MediaPlayer对象isPlaying()为真
调用MediaPlayer对象的pause()方法,暂停播放
调用暂停按钮的setText()方法,设置文字成:继续
在这个点击事件里判断文字是否为”继续”,如果是,就继续播放
调用MediaPlayer对象的start()方法
调用暂停安妮的setText()方法,设置文字成:暂停
MainActivity.java
package com.tsh.tshplayer; import java.io.File; import java.io.IOException; import android.app.Activity; import android.content.SharedPreferences.Editor; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private EditText et_music; private Button bt_play, bt_pause, bt_stop, bt_replay; private MediaPlayer player; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_music = (EditText) findViewById(R.id.et_music); bt_play = (Button) findViewById(R.id.bt_play); bt_pause = (Button) findViewById(R.id.bt_pause); bt_stop = (Button) findViewById(R.id.bt_stop); bt_replay = (Button) findViewById(R.id.bt_replay); bt_play.setOnClickListener(this); bt_pause.setOnClickListener(this); bt_stop.setOnClickListener(this); bt_replay.setOnClickListener(this); } // 点击事件 @Override public void onClick(View v) { switch (v.getId()) { // 播放 case R.id.bt_play: play(); break; // 暂停 case R.id.bt_pause: pause(); break; // 重播 case R.id.bt_replay: replay(); break; // 停止 case R.id.bt_stop: stop(); break; } } //停止播放 private void stop() { if(player!=null&&player.isPlaying()){ player.stop(); bt_play.setEnabled(true); } } //重播音乐 private void replay() { if(player!=null&&player.isPlaying()){ player.seekTo(0); } } //暂停音乐 private void pause() { if(player!=null&&player.isPlaying()){ player.pause(); bt_pause.setText("继续"); }else if(bt_pause.getText().toString().trim().equals("继续")){ player.start(); bt_pause.setText("暂停"); } } // 播放音乐 private void play() { String music = et_music.getText().toString().trim(); File file = new File(music); if (file.exists() && file.length() > 0) { try { player = new MediaPlayer(); player.setAudioStreamType(AudioManager.STREAM_MUSIC); player.setDataSource(music); player.prepare(); player.start(); // 设置按钮 bt_play.setEnabled(false); //音乐完成回调 player.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { bt_play.setEnabled(true); } }); } catch (Exception e) { e.printStackTrace(); Toast.makeText(this, "播放音乐失败", 0).show(); } } else { Toast.makeText(this, "音乐文件不存在", 0).show(); } } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="${relativePackage}.${activityClass}" > <EditText android:id="@+id/et_music" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="音乐路径" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="播放" android:id="@+id/bt_play"/> <Button android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="暂停" android:id="@+id/bt_pause"/> <Button android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="重播" android:id="@+id/bt_replay"/> <Button android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="停止" android:id="@+id/bt_stop"/> LinearLayout> LinearLayout>