Android 多媒体(读取网络中的音乐文件)

既然我们是要播放网络音乐,那就要先检测网络环境搭建好了没有。

步骤是:

1、找到Tomcat的位置中bin目录中的startup.bat,之后在网址上输入地址:localhost:7788,(我的是7788,官方默认是8080,出现网页不对的可以试一下8080)

Android 多媒体(读取网络中的音乐文件)

2、找到Tomcat的位置中的webapps-》ROOT,在ROOT中放入音频
3、打开cmd,打出ipconfig,得到图下的IP地址,然后再把localhost换成你自己的IP地址后面再加上你放的音频的名字,例如我的是http://193.168.5.5:7788/s1.mp3,有些网页是直接出现下载,我的是直接播放,两种结果的都是成功,如果不成功,那就是环境没有搭建好,自己可以再去多多检查一下。

Android 多媒体(读取网络中的音乐文件)

接下来就是代码部分了,xml布局文件和前面一篇的是一模一样的,所以在这里我就不多写了,就直接上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.         final 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.                     //放入路径  
  58.                     mediaPlayer.setDataSource(this, Uri.parse("http://193.168.5.5:7788/s1.mp3"));  
  59.                     //异步准备(播放内存卡的时候需要准备)  
  60.                     mediaPlayer.prepareAsync();  
  61.                 } catch (IOException e) {  
  62.                     e.printStackTrace();  
  63.                 }  
  64.                 //设置准备的监听  
  65.                 mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {  
  66.                     @Override  
  67.                     public void onPrepared(MediaPlayer mp) {  
  68.                         mediaPlayer.start();  
  69.                         ib.setImageResource(android.R.drawable.ic_media_pause);  
  70.                         //获得音乐的播放时间  
  71.                         int time=mediaPlayer.getDuration();  
  72.                         //设置最大值为音乐播放的时间  
  73.                         sb_main_play.setMax(time);  
  74.                         new MyThread().start();  
  75.                     }  
  76.                 });  
  77.   
  78.   
  79.             }  
  80.   
  81.         }else if(mediaPlayer.isPlaying()){//如果正在播放  
  82.             //暂停  
  83.             mediaPlayer.pause();  
  84.             //开始图标  
  85.             ib.setImageResource(android.R.drawable.ic_media_play);  
  86.         }else {  
  87.             //开始播放  
  88.             mediaPlayer.start();  
  89.             //暂停图标  
  90.             ib.setImageResource(android.R.drawable.ic_media_pause);  
  91.   
  92.         }  
  93.     }  
  94.   
  95.     class MyThread extends Thread{  
  96.         @Override  
  97.         public void run() {  
  98.             super.run();  
  99.             while(sb_main_play.getProgress()<sb_main_play.getMax()){  
  100.                 //获得音乐当前的播放位置  
  101.                 int currentPosition=mediaPlayer.getCurrentPosition();  
  102.                 sb_main_play.setProgress(currentPosition);  
  103.             }  
  104.         }  
  105.     }  
  106. }