在线咨询
微信咨询
服务热线
服务热线:15639912513
TOP
当前位置:
首页 > 新闻中心> 安卓课堂>android音乐播放器实例

android音乐播放器实例

发布时间:2020-02-23 浏览:3579次

郑州app开发android音乐播放器实例。布局代码是一个imagebutton和seekbar。

下面是java代码

MainActivity.java

package cn.xhhkj.musiccyd;


import androidx.appcompat.app.AppCompatActivity;


import android.content.ComponentName;

import android.content.Intent;

import android.content.ServiceConnection;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.os.Handler;

import android.os.IBinder;

import android.view.View;

import android.widget.ImageButton;

import android.widget.SeekBar;


import java.io.IOException;


public class MainActivity extends AppCompatActivity {

    private static final String TAG = "结果是";

    private static final int UPDATE_PROGRESS = 0;

    public String path = "mnt/sdcard/Music/pingguo.mp3";

    private ImageButton ib_play;

    private SeekBar sb_progress;

    private MusicPlayerService.MyBinder musicController;

    private MyConnection conn;

    private Handler handler = new Handler(){

        public void handleMessage(android.os.Message msg) {

            switch (msg.what) {

                case UPDATE_PROGRESS:

                    updateProgress();

                    break;

            }


        };

    };

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ib_play = findViewById(R.id.musicbutton);

        sb_progress = findViewById(R.id.seekBar);

        sb_progress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override

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

                if(fromUser){

                    musicController.seekTo(progress);

                }

            }


            @Override

            public void onStartTrackingTouch(SeekBar seekBar) {


            }


            @Override

            public void onStopTrackingTouch(SeekBar seekBar) {


            }

        });

        Intent service = new Intent(this,MusicPlayerService.class);

        startService(service);

        conn = new MyConnection();

        bindService(service, conn, BIND_AUTO_CREATE);


    }



    public void play(View view) {

//        MediaPlayer player = new MediaPlayer();

//        try {

//            player.setDataSource(path);

//            player.prepare();

//            player.start();

//        } catch (Exception e) {

//            // TODO Auto-generated catch block

//            e.printStackTrace();

//        }

        musicController.playPause();

        updatePlayIcon();

    }

    class MyConnection implements ServiceConnection{


        @Override

        public void onServiceConnected(ComponentName name, IBinder service) {

            musicController = (MusicPlayerService.MyBinder)  service;

            updatePlayIcon();

            sb_progress.setMax(musicController.getDuration());

            sb_progress.setProgress(musicController.getCurrentPosition());

        }


        @Override

        public void onServiceDisconnected(ComponentName name) {


        }

    }

    private void updatePlayIcon(){

        if(musicController.isPlaying()){

            ib_play.setImageResource(R.drawable.pause);

            handler.sendEmptyMessage(UPDATE_PROGRESS);

        }else{

            ib_play.setImageResource(R.drawable.play);

            handler.removeMessages(UPDATE_PROGRESS);

        }

    }

    @Override

    protected void onStop() {

        super.onStop();

        handler.removeCallbacksAndMessages(null);

    }

    @Override

    protected void onDestroy() {

        super.onDestroy();

        unbindService(conn);

    }

    @Override

    protected void onResume() {

        super.onResume();

        if(musicController!=null){

            handler.sendEmptyMessage(UPDATE_PROGRESS);

        }

    }

    private void updateProgress(){

        int currentPosition = musicController.getCurrentPosition();

        sb_progress.setProgress(currentPosition);

        handler.sendEmptyMessageDelayed(UPDATE_PROGRESS, 500);

    }

    

}

MusicPlayerService.java

package cn.xhhkj.musiccyd;


import android.app.Service;

import android.content.Intent;

import android.media.MediaPlayer;

import android.os.Binder;

import android.os.IBinder;


import androidx.annotation.Nullable;



public class MusicPlayerService extends Service {

    private MediaPlayer player;

    private String path = "mnt/sdcard/Music/pingguo.mp3";

    @Nullable

    @Override

    public IBinder onBind(Intent intent) {

        return new MyBinder();

    }

    public class MyBinder extends Binder {

        public void playPause(){

            if(player.isPlaying()){

                player.pause();

            }else{

                player.start();

            }

        }

        public boolean isPlaying(){

            return player.isPlaying();

        }

        public int getDuration(){

            return player.getDuration();

        }

        public int getCurrentPosition(){

            return player.getCurrentPosition();

        }

        public void seekTo(int msec){

            player.seekTo(msec);

        }

    }

    @Override

    public void onCreate() {

        super.onCreate();

        player = new MediaPlayer();

        try {

            player.setDataSource(path);

            player.prepare();

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}


 


 


TAG
3579
该内容对我有帮助