简单的Android音乐播放,解决incall类型不能通过音量按键控制声音大小的问题

来源:互联网 发布:淘宝不可以货到付款吗 编辑:程序博客网 时间:2024/05/16 14:08
package bo.chen.player;import java.io.IOException;import android.app.Activity;import android.content.res.AssetFileDescriptor;import android.media.AudioManager;import android.media.MediaPlayer;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class TestPlayerActivity extends Activity {    private Button       mBtn;    private MediaPlayer  mPlayer;        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                mBtn = (Button) findViewById(R.id.btn);        mBtn.setText("播放");        mBtn.setOnClickListener(mBtnClickListener);    }        @Override    protected void onDestroy() {        stopPlayer();        super.onDestroy();    }        final OnClickListener mBtnClickListener = new OnClickListener() {                @Override        public void onClick(View v) {            if (isPlaying()) {                mBtn.setText("播放");                stopPlayer();            } else {                mBtn.setText("暂停");                startPlayer(R.raw.sound_incoming_call);            }        }    };        private void startPlayer(int resId) {        AssetFileDescriptor afd = null;        try {            if (this.mPlayer == null) {                this.mPlayer = new MediaPlayer();            } else {                this.mPlayer.reset();            }            setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);             this.mPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);            afd = getApplicationContext().getResources().openRawResourceFd(resId);            this.mPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());            this.mPlayer.prepare();        } catch (Exception e) {        } finally {            if (afd != null) {                try {                    afd.close();                } catch (IOException e) {                }            }        }        try {            this.mPlayer.setLooping(true);            this.mPlayer.start();        } catch (Exception e) {        }    }        private boolean isPlaying() {        if (mPlayer == null) {            return false;        }        return mPlayer.isPlaying();    }        private void stopPlayer() {        if (mPlayer != null) {            mPlayer.stop();        }    }    }