界面布局,水平方向四个按钮平均分布,使用权重,定义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
代码语言:javascript复制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();
}
}
}
代码语言:javascript复制<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>