MediaPlayer
1.读取Raw音频文件
release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。
reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。
setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。
MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。否则会报错
mediaPlayer = MediaPlayer.create(MyApplication.getContext(), R.raw.beep);
mediaPlayer.start();
mediaPlayer.setVolume(1.0f, 1.0f);
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
isRing = false;
}
});
2.读取Asserts音频文件
private void openAssetMusics() {
//打开Asset目录
assetManager = getAssets();
mediaPlayer = new MediaPlayer();
try {
AssetFileDescriptor assetFileDescriptor = assetManager.openFd("beep.mp3");
mediaPlayer.reset();
//设置媒体播放器的数据资源
mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(), assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
Log.d("GsonUtils", "IOException" + e.toString());
}
}
Ringtone
本人在2.3.7手机上用MediaPlayer有时候就不能播放了,只好用Ringtone了,原因还在分析中
Uri notification = Uri.parse("android.resource://"+ MyApplication.getContext().getPackageName()+"/"+R.raw.beep);
ring = RingtoneManager.getRingtone(MyApplication.getContext(), notification);
playing = ring.isPlaying();
ring.play();