栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android MP3音频播放器 仿唱片机播放动画,仿网易云播放动画,旋转动画,MediaPlayer AudioManager

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android MP3音频播放器 仿唱片机播放动画,仿网易云播放动画,旋转动画,MediaPlayer AudioManager

废话不多说上代码

 private AudioManager audioManager;
    private SimpleDateFormat format;
    private SeekBar seekBar;
    private TextView musicLength;
    private TextView musicCur;
    private MediaPlayer mediaPlayer = new MediaPlayer();
    private ImageButton play;
    private ImageButton pause;
    private ImageButton stop;
    private Timer timer;
    private boolean isSeekBarChanging;//互斥变量,防止进度条与定时器冲突。
    private int currentPosition = 0;//当前音乐播放的进度
    private ImageView mDynamicCircle;
    private ObjectAnimator mCircleAnimator;
    private ImageView mDynamicCircle1;

    private ImageView mMp3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_music_start);
        audioManager = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
        findViewById(R.id.iv_goback).setonClickListener(new View.onClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        format = new SimpleDateFormat("mm:ss");
        musicLength = (TextView) findViewById(R.id.music_length);
        musicCur = (TextView) findViewById(R.id.music_cur);
        seekBar = (SeekBar) findViewById(R.id.seekBar);
        seekBar.setonSeekBarChangeListener(new MySeekBar());
        play = (ImageButton) findViewById(R.id.play);
        pause = (ImageButton) findViewById(R.id.pause);
        stop = (ImageButton) findViewById(R.id.stop);
        play.setonClickListener(this);
        pause.setonClickListener(this);
        stop.setonClickListener(this);
        donghua();
        donghua2();
        initMediaPlayer();//初始化mediaplayer

    }

    private void donghua(){
        mDynamicCircle = (ImageView) findViewById(R.id.cdbg);
        mCircleAnimator = ObjectAnimator.ofFloat(mDynamicCircle, "rotation", 0.0f, 360.0f);
        mCircleAnimator.setDuration(6000);
        mCircleAnimator.setInterpolator(new LinearInterpolator());
        mCircleAnimator.setRepeatCount(-1);
        mCircleAnimator.setRepeatMode(ObjectAnimator.RESTART);
    }

    private void donghua2(){
        mDynamicCircle1 = (ImageView) findViewById(R.id.cdbg1);
        mMp3 = (ImageView) findViewById(R.id.cdbg2);
        mMp3.setonClickListener(new View.onClickListener() {
            @Override
            public void onClick(View view) {
                if (!mediaPlayer.isPlaying()) {
                    paly();
                }else {
                    mCircleAnimator.pause();
                    mDynamicCircle1.startAnimation(rotateAnimation1);
                    mediaPlayer.pause();//暂停播放
                    pause.setBackgroundResource(R.drawable.cdbgbut);
                }
            }
        });
 
    }

    private void initMediaPlayer() {
        try {
            mediaPlayer.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/eBook/朴树+-+平凡之路.mp3");//指定音频文件的路径
            mediaPlayer.prepare();//让mediaplayer进入准备状态
            mediaPlayer.setLooping(true);
            mediaPlayer.setonPreparedListener(new MediaPlayer.onPreparedListener() {
                public void onPrepared(MediaPlayer mp) {
                    seekBar.setMax(mediaPlayer.getDuration());
                    musicLength.setText(format.format(mediaPlayer.getDuration())+"");
                    musicCur.setText("00:00");
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode) {
            case 1:
                if (grantResults.length > 0 &&
                        grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    initMediaPlayer();
                } else {
                    Toast.makeText(MusicStartActivity.this,"denied access",Toast.LENGTH_SHORT).show();
                    finish();
                }
                break;
            default:
        }
    }

    private void paly(){

        pause.setBackgroundResource(R.drawable.cdztbut);

        mDynamicCircle1.startAnimation(rotateAnimation);
        mCircleAnimator.start();
        mediaPlayer.start();//开始播放
        mediaPlayer.seekTo(currentPosition);

        //监听播放时回调函数
        timer = new Timer();
        timer.schedule(new TimerTask() {

            Runnable updateUI = new Runnable() {
                @Override
                public void run() {
                    musicCur.setText(format.format(mediaPlayer.getCurrentPosition())+"");
                }
            };
            @Override
            public void run() {
                if(!isSeekBarChanging){
                    seekBar.setProgress(mediaPlayer.getCurrentPosition());
                    runonUiThread(updateUI);
                }
            }
        },0,50);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.play:
//                if (!mediaPlayer.isPlaying()) {
//                    paly();
//                }
                break;
            case R.id.pause:
                if (mediaPlayer.isPlaying()) {
                    mCircleAnimator.pause();
                    mDynamicCircle1.startAnimation(rotateAnimation1);
                    mediaPlayer.pause();//暂停播放
                    pause.setBackgroundResource(R.drawable.cdbgbut);
                }else {
                    paly();
                }
                break;
            case R.id.stop:
//                if (mediaPlayer.isPlaying()) {
//                    mediaPlayer.reset();//停止播放
//                    mCircleAnimator.end();
//                    mDynamicCircle1.startAnimation(rotateAnimation1);
//                    currentPosition = 0;
//                    initMediaPlayer();
//                }
                break;
            default:
                break;
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        isSeekBarChanging = true;
        if (mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer.release();
            mediaPlayer = null;
        }
        if (timer != null){
            timer.cancel();
            timer = null;
        }
    }

    
    public class MySeekBar implements SeekBar.onSeekBarChangeListener {

        public void onProgressChanged(SeekBar seekBar, int progress,
                                      boolean fromUser) {
        }

        
        public void onStartTrackingTouch(SeekBar seekBar) {
            isSeekBarChanging = true;
        }
        
        public void onStopTrackingTouch(SeekBar seekBar) {
            isSeekBarChanging = false;
            currentPosition = seekBar.getProgress();
            mediaPlayer.seekTo(seekBar.getProgress());
        }
    }

布局文件




    

        
            

            

            

            

            
        

    

    

        

        

        

    

    

        

        

        

    

    

        

        

            

            

            

        


    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489499.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号