安卓学习03

title: 安卓学习03
date: 2020-02-03 20:28:30
tags:

今日学习了mediaplayer的简单封装使用以及引导页。

<!--more -->

1、mediaplayer的封装

package com.example.framework.manager;
?
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
?
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
?
import com.example.framework.utils.LogUtils;
?
import java.io.IOException;
?
public class MediaPlayerManager {
?
    //播放
    public static final int MEDIA_STATUS_PLAY = 0;
    //暂停
    public static final int MEDIA_STATUS_PAUSE = 1;
    //停止
    public static final int MEDIA_STATUS_STOP = 2;
    //当前状态
    public static int MEDIA_STATUS = MEDIA_STATUS_STOP;
?
    public static final int H_PROGRESS = 1000;
?
    private MediaPlayer mediaPlayer;
    private OnMusicProgressListener musicProgressListener;
    private Handler handler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage( Message msg) {
            switch (msg.what){
                case H_PROGRESS:
                    if (musicProgressListener != null){
                        int currentPosition = getCurrentPosition();
                        int p = (int) (((float)currentPosition)/((float)getDuration()) * 100);
                        musicProgressListener.OnProgress(currentPosition,p);
                        handler.sendEmptyMessageDelayed(H_PROGRESS,1000);
                    }
                    break;
            }
            return false;
        }
    });
?
    public MediaPlayerManager() {
        mediaPlayer = new MediaPlayer();
    }
?
    @RequiresApi(api = Build.VERSION_CODES.N)
    public void startPlay(AssetFileDescriptor path){
        try {
            mediaPlayer.reset();
            mediaPlayer.setDataSource(path);
            mediaPlayer.prepare();
            mediaPlayer.start();
            MEDIA_STATUS = MEDIA_STATUS_PLAY;
            handler.sendEmptyMessage(H_PROGRESS);
        } catch (IOException e) {
            LogUtils.e(e.toString());
            e.printStackTrace();
        }
    }
?
    //暂停播放
    public void pausePlay(){
        if (mediaPlayer.isPlaying()){
            mediaPlayer.pause();
            MEDIA_STATUS = MEDIA_STATUS_PAUSE;
            handler.removeMessages(H_PROGRESS);
        }
    }
?
    //继续播放
    public void continuePlay(){
        mediaPlayer.start();
        MEDIA_STATUS = MEDIA_STATUS_PLAY;
        handler.sendEmptyMessage(H_PROGRESS);
    }
?
    //停止播放
    public void stopPlay(){
        mediaPlayer.stop();
        MEDIA_STATUS = MEDIA_STATUS_STOP;
        handler.removeMessages(H_PROGRESS);
    }
?
    //获取当前位置
    public int getCurrentPosition(){
        return mediaPlayer.getCurrentPosition();
    }
?
    //获取音乐的总时间
    public int getDuration(){
        return mediaPlayer.getDuration();
    }
?
    //是否循环
    public void setLooping(boolean isLooping){
        mediaPlayer.setLooping(isLooping);
    }
?
    //跳转位置
    public void seekTo(int mesc){
        mediaPlayer.seekTo(mesc);
    }
?
    //播放结束
    public void setOnCompletionListener(MediaPlayer.OnCompletionListener listener){
        mediaPlayer.setOnCompletionListener(listener);
    }
?
    //播放错误
    public void setOnErrorListener(MediaPlayer.OnErrorListener listener){
        mediaPlayer.setOnErrorListener(listener);
    }
?
    //播放进度
    public void setOnProgressListener(OnMusicProgressListener listener){
        musicProgressListener = listener;
    }
?
    public interface OnMusicProgressListener{
        void OnProgress(int progress,int pos);
    }
}

 

上一篇:Centos 7 vsftpd ldap 配置


下一篇:linux shell命令之列表