简单的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(); } } }