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();
}
}
}
简单的Android音乐播放,解决incall类型不能通过音量按键控制声音大小的问题
最新推荐文章于 2024-03-26 15:46:42 发布