音乐播放器简易
前台:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_marginTop="10dp" android:layout_height="wrap_content"> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:id="@+id/tv1" android:layout_weight="1" android:text="00:00"></TextView> <SeekBar android:layout_weight="9" android:layout_width="0dp" android:layout_height="match_parent" android:id="@+id/sb"></SeekBar> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:id="@+id/tv2" android:layout_weight="1" android:text="00:00"></TextView> </LinearLayout> <Button android:layout_width="match_parent" android:layout_height="100dp" android:text="开始" android:onClick="start"></Button> <Button android:layout_width="match_parent" android:layout_height="100dp" android:text="暂停" android:onClick="zanting"></Button> <Button android:layout_width="match_parent" android:layout_height="100dp" android:text="继续" android:onClick="jixu"></Button> </LinearLayout>
后台:
package com.bw.bofangqi; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.SeekBar; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity { private MediaPlayer player; private TextView tv1; private SeekBar sb; private TextView tv2; private SimpleDateFormat adf = new SimpleDateFormat("mm:ss"); private Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv1 = findViewById(R.id.tv1); sb = findViewById(R.id.sb); tv2 = findViewById(R.id.tv2); //监听进度条拖动事件 sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //如果是用户拖动则修改player的进度 if (fromUser){ //改变player的进度 player.seekTo(progress); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); //初始化播放器 player = new MediaPlayer(); } //播放新的歌曲 public void start(View view) { try { //重置播放器 player.reset(); //设置播放的音乐地址(可以使本地,也可以是网络) player.setDataSource("http://39.106.204.190:7777/mp3/36270426.mp3"); //异步加载音乐 player.prepareAsync(); //音乐加载号以后,回调下面的方法 player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { //获取总时长,设置进度条最大值 int duration = player.getDuration(); sb.setMax(duration); //格式化总时长 String zongshichang = adf.format(duration); tv2.setText(zongshichang); //加载好后,播放音乐 player.start(); //定义一个定时器 new Timer().schedule(new TimerTask() { @Override public void run() { handler.post(new Runnable() { @Override public void run() { int currentPosition = player.getCurrentPosition();//获取播放器当前位置 sb.setProgress(currentPosition); String dangqian = adf.format(currentPosition); tv1.setText(dangqian); } }); } },0,100); } }); } catch (IOException e) { throw new RuntimeException(e); } } public void zanting(View view) { //暂停 player.pause(); } public void jixu(View view) { //继续播放 player.start(); } }
效果: