zoukankan      html  css  js  c++  java
  • 音频播放服务

    最近写了个音频播放的服务,功能包括准备资源、播放、暂停、前进多少秒,后退多少秒

    import android.content.Intent;
    import android.os.Binder;
    import android.os.IBinder;
    
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;
    
    import tv.danmaku.ijk.media.player.IMediaPlayer;
    import tv.danmaku.ijk.media.player.IjkMediaPlayer;
    
    /**
     * Created by Administrator on 2017/6/26.
     */
    public class VoiceService extends BaseService {
    
        private IjkMediaPlayer mediaPlayer;
        private VoicePlayListener voicePlayListener;
        private long totalTime;
        private Timer timer;
        public static final int IDLE = 1;
        public static final int PREPARED = 2;
        public static final int PLAYING = 3;
        public static final int PAUSE = 4;
        public static final int FINISH = 5;
        private SimpleDateFormat dateFormat = new SimpleDateFormat("mm:ss");
    
        public class VoiceBinder extends Binder {
            public VoiceService returnBinder() {
                return VoiceService.this;
            }
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            VoiceBinder binder = new VoiceBinder();
            return binder;
        }
    
        @Override
        public boolean onUnbind(Intent intent) {
            return super.onUnbind(intent);
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            return super.onStartCommand(intent, flags, startId);
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            mediaPlayer = new IjkMediaPlayer();
            totalTime = mediaPlayer.getDuration();
        }
    
        @Override
        public void onDestroy() {
            super.onDestroy();
        }
    
        public void setUrl(String url) {
            try {
                mediaPlayer.setDataSource(url);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public void prepare(final VoicePlayListener voicePlayListener) {
            this.voicePlayListener = voicePlayListener;
            mediaPlayer.prepareAsync();
            mediaPlayer.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(IMediaPlayer iMediaPlayer) {
                    setProgress(PREPARED);
                }
            });
        }
    
        public void play() {
            if (!mediaPlayer.isPlaying()) {
                mediaPlayer.start();
                setProgress(PLAYING);
            } else {
                mediaPlayer.pause();
                setProgress(PAUSE);
            }
        }
    
        public void forward() {
            if (mediaPlayer.getCurrentPosition() + 15000 < totalTime) {
                mediaPlayer.seekTo(mediaPlayer.getCurrentPosition() + 15000);
                setProgress(PLAYING);
            } else {
                mediaPlayer.stop();
                setProgress(FINISH);
            }
        }
    
        public void back() {
            if (mediaPlayer.getCurrentPosition() - 15000 > 0) {
                mediaPlayer.seekTo(mediaPlayer.getCurrentPosition() - 15000);
            } else {
                mediaPlayer.seekTo(0);
            }
            setProgress(PLAYING);
        }
    
        private void setProgress(final int state) {
            if (null != timer) {
                timer.cancel();
            }
            timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    voicePlayListener.onPlay(state, (int) (mediaPlayer.getCurrentPosition() * 100 / mediaPlayer.getDuration()), dateFormat.format(new Date(mediaPlayer.getCurrentPosition())), dateFormat.format(new Date(mediaPlayer.getDuration())));
                }
            }, 0, 1000);
        }
    
        public interface VoicePlayListener {
            void onPlay(int state, int progress, String currentTime, String totalTime);
        }
    }
  • 相关阅读:
    解决springmvc报错,java.lang.IllegalArgumentException:No converter found for return value of type: class .......
    BidiMap MultiMap LazyMap
    双色球2013年统计,从网上爬虫出来的
    捡石子小游戏程序解析
    Linux常用命令--List of commands(附目录切换命令)
    格式化字符串
    有关循环
    使用python 3.x 对pythonchallenge-----8的解答过程
    使用python 3.x 对pythonchallenge-----7的解答过程
    使用python 3.x 对pythonchallenge-----6的解答过程
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/7088619.html
Copyright © 2011-2022 走看看