界面如下
布局文件如下
<?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:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.thinkpad.music.MainActivity"> <Button android:id="@+id/PLAY" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="PLAY" /> <Button android:id="@+id/PAUSE" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="PAUSE" /> <Button android:id="@+id/STOP" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="STOP" /> <ProgressBar android:id="@+id/pro" android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" /> </LinearLayout>
package com.example.thinkpad.music; import android.Manifest; import android.content.pm.PackageManager; import android.media.MediaPlayer; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.provider.MediaStore; import android.support.v4.app.ActivityCompat; import android.support.v4.app.NotificationCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.Toast; import java.io.File; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private MediaPlayer mediaPlayer=new MediaPlayer(); private ProgressBar progressBar; private double percent; private int count=0; private Thread thread; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button play=(Button) findViewById(R.id.PLAY); Button pause=(Button) findViewById(R.id.PAUSE); Button stop=(Button) findViewById(R.id.STOP); play.setOnClickListener(this); pause.setOnClickListener(this); stop.setOnClickListener(this); progressBar=(ProgressBar)findViewById(R.id.pro); if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(MainActivity.this,new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE },1); }else{ initMediaPlayer();//初始化MediaPlayer // mediaPlayer.start(); } } private void initMediaPlayer(){ try{ File file=new File(Environment.getExternalStorageDirectory(),"music.mp3"); mediaPlayer.setDataSource(file.getPath());//指定音频文件路径 int time=-mediaPlayer.getDuration(); Toast.makeText(this,"time"+time,Toast.LENGTH_LONG).show(); progressBar.setMax(time/1000000); File file1=new File(Environment.getExternalStorageDirectory(),"music.mp3"); mediaPlayer.setDataSource(file1.getPath());//指定音频文件路径 mediaPlayer.prepare();//让MediaPlayer进入准备状态 }catch(Exception e){ e.printStackTrace(); } } @Override public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){ switch (requestCode){ case 1: if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){ initMediaPlayer(); }else{ Toast.makeText(this,"拒绝权限将无法使用程序",Toast.LENGTH_SHORT).show(); finish(); } break; default: } } @Override public void onClick(View v){ switch (v.getId()){ case R.id.PLAY: if (!mediaPlayer.isPlaying()){ mediaPlayer.start();//开始播放 thread = new Thread(mRunnable); thread.start(); } break; case R.id.PAUSE: if(mediaPlayer.isPlaying()){ mediaPlayer.pause();//暂停播放 } break; case R.id.STOP: if(mediaPlayer.isPlaying()){ mediaPlayer.reset();//停止播放 initMediaPlayer(); } break; default: break; } } @Override protected void onDestroy(){ super.onDestroy(); if(mediaPlayer!=null){ mediaPlayer.stop(); mediaPlayer.release(); } } private Runnable mRunnable = new Runnable() {//在此线程下使进度条增加。 public void run() { while(true) { try { Thread.sleep(1000); mHandler.sendMessage(mHandler.obtainMessage()); } catch (InterruptedException e) { } } } }; private Handler mHandler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); // Log.d("test","3wdwdwdwdddddddddddddddddddddddddddddddddddddddd"); int progress=progressBar.getProgress(); progress+=1; progressBar.setProgress(progress); } }; }