Adroid 多媒体(读取手机内存卡内的音乐文件)

现在给大家实现的是利用手机内存卡里的音频文件去播放的,至于xml布局文件大家可以去看我上一篇博客的,因为这两篇博客是相关联的。现在就开始吧!

xml配置文件权限:(一定要加上)

[html]  view plain  copy
  1. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">uses-permission>  

activity--java代码:

[java]  view plain  copy
  1. package com.zking.laci.android27_playmusic;  
  2.   
  3. import android.media.AudioManager;  
  4. import android.media.MediaPlayer;  
  5. import android.net.Uri;  
  6. import android.os.Environment;  
  7. import android.support.v7.app.AppCompatActivity;  
  8. import android.os.Bundle;  
  9. import android.util.Log;  
  10. import android.view.View;  
  11. import android.widget.ImageButton;  
  12. import android.widget.SeekBar;  
  13.   
  14. import java.io.IOException;  
  15.   
  16. public class MainActivity extends AppCompatActivity {  
  17.   
  18.     private MediaPlayer mediaPlayer;  
  19.     private SeekBar sb_main_play;  
  20.   
  21.     @Override  
  22.     protected void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.activity_main);  
  25.         sb_main_play = (SeekBar) findViewById(R.id.sb_main_play);  
  26.   
  27.         sb_main_play.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {  
  28.             @Override  
  29.             public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {  
  30.             }  
  31.   
  32.             @Override  
  33.             public void onStartTrackingTouch(SeekBar seekBar) {  
  34.             }  
  35.   
  36.             @Override  
  37.             public void onStopTrackingTouch(SeekBar seekBar) {  
  38.                 //获取当前进度条位置  
  39.                 int currentPosition=seekBar.getProgress();  
  40.                 //跳转到某个位置播放  
  41.                 mediaPlayer.seekTo(currentPosition);  
  42.             }  
  43.         });  
  44.     }  
  45.   
  46.     public void playOrPause(View view){  
  47.         ImageButton ib= (ImageButton) view;  
  48.         if(mediaPlayer==null){//如果没有歌  
  49.             //mediaPlayer = MediaPlayer.create(this, R.raw.a);  
  50.             if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  
  51.                 String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();  
  52.                 mediaPlayer=new MediaPlayer();  
  53.                 //设置 mediaPlayer音频流的类型  
  54.                 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
  55.                 try {  
  56.                     //设置音源  
  57.                     mediaPlayer.setDataSource(this, Uri.parse("file://"+sdPath+"/s1.mp3"));  
  58.                     //准备(播放内存卡的时候需要准备)  
  59.                     mediaPlayer.prepare();  
  60.                 } catch (IOException e) {  
  61.                     e.printStackTrace();  
  62.                 }  
  63.                 mediaPlayer.start();  
  64.                 ib.setImageResource(android.R.drawable.ic_media_pause);  
  65.                 //获得音乐的播放时间  
  66.                 int time=mediaPlayer.getDuration();  
  67.                 //设置最大值为音乐播放的时间  
  68.                 sb_main_play.setMax(time);  
  69.                 new MyThread().start();  
  70.   
  71.             }  
  72.   
  73.         }else if(mediaPlayer.isPlaying()){//如果正在播放  
  74.             //暂停  
  75.             mediaPlayer.pause();  
  76.             //开始图标  
  77.             ib.setImageResource(android.R.drawable.ic_media_play);  
  78.         }else {  
  79.             //开始播放  
  80.             mediaPlayer.start();  
  81.             //暂停图标  
  82.             ib.setImageResource(android.R.drawable.ic_media_pause);  
  83.   
  84.         }  
  85.     }  
  86.   
  87.     class MyThread extends Thread{  
  88.         @Override  
  89.         public void run() {  
  90.             super.run();  
  91.             while(sb_main_play.getProgress()
  92.                 //获得音乐当前的播放位置  
  93.                 int currentPosition=mediaPlayer.getCurrentPosition();  
  94.                 sb_main_play.setProgress(currentPosition);  
  95.             }  
  96.         }  
  97.     }  
  98. }  

你可能感兴趣的:(Adroid 多媒体(读取手机内存卡内的音乐文件))