android多媒体音乐播放器(mediaPlayer)的三种类别的播放方法

一、简单的音乐播放器事例有
1、播放应用内的音频文件
2、播放SD卡的音频文件
3、播放网络的音频文件
下列的效果如图所示:android多媒体音乐播放器(mediaPlayer)的三种类别的播放方法_第1张图片

下列是xml的布局文件



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.android_playmusic.MainActivity">
    <SeekBar
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:id="@+id/sb_main_SeekBar"
        />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_media_play"
        android:onClick="playmusic"
        />
LinearLayout>

接下来是activity的文件

package com.example.android_playmusic;

import android.media.MediaPlayer;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.SeekBar;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private SeekBar sb_main_seekBar;
    private MediaPlayer mediaPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sb_main_seekBar = (SeekBar) findViewById(R.id.sb_main_SeekBar);

        //给进度条设置滑动监听
        sb_main_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            int  progress=seekBar.getProgress();
                //在当前位置播放
                mediaPlayer.seekTo(progress);


            }
        });

    }

    public void playmusic(View view){
         final ImageButton imageButton= (ImageButton) view;
        if(mediaPlayer==null){
            //01.播放内存中的音频
            //mediaPlayer = MediaPlayer.create(this, R.raw.f);

            //播放内存卡中文件
            mediaPlayer=new MediaPlayer();
            try {
                //mediaPlayer.setDataSource(this, Uri.parse("file://kgmusic/download/Ashley-22.mp3"));
           //播放网络音频
                mediaPlayer.setDataSource(this, Uri.parse("http://193.168.4.135/internet.mp3"));
                //准备
              // mediaPlayer.prepare();
                mediaPlayer.prepareAsync();


            } catch (IOException e) {
                e.printStackTrace();
            }

     //设置准备完成的监听
            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) {
                    mediaPlayer.start();
                    imageButton.setImageResource(android.R.drawable.ic_media_pause);
                    //获取音乐的总时长
                    int duration=mediaPlayer.getDuration();
                    //将进度条设置最大值为:音乐的总时长
                    sb_main_seekBar.setMax(duration);
                    //启动线程
                    new MyThread().start();
                }
            });

        }else if (mediaPlayer.isPlaying()){
            mediaPlayer.pause();
            imageButton.setImageResource(android.R.drawable.ic_media_play);
        }else {
            mediaPlayer.start();
            imageButton.setImageResource(android.R.drawable.ic_media_pause);
        }
    }

    //启动线程的一个方法
    class MyThread extends Thread {
        @Override
        public void run() {
            super.run();
            while (sb_main_seekBar.getProgress() <= sb_main_seekBar.getMax()) {
                //获取音乐当前播放的位置
                int position = mediaPlayer.getCurrentPosition();
                sb_main_seekBar.setProgress(position);
            }
        }
    }

}

最后的清单文件要两个权限

uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.INTERNET" />

你可能感兴趣的:(android多媒体音乐播放器(mediaPlayer)的三种类别的播放方法)