Android 的多媒体
录音的使用
初始化
MediaRecorder mr = new MediaRecorder();
mr.setAudioSource(MediaRecorder.AudioSource.MIC); //音频输入源
mr.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB); //设置输出格式
mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB); //设置编码格式
mr.setOutputFile(soundFile.getAbsolutePath());
开始录制
try {
mr.prepare();
mr.start(); //开始录制
} catch (IOException e) {
e.printStackTrace();
}
停止录制
if(mr != null){
mr.stop();
mr.release();
mr = null;
}
初始化
MediaPlayer mp = new MediaPlayer();
//无需再调用setDataSource
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);
//①raw下的资源:
MediaPlayer.create(this, R.raw.test);
//②本地文件路径:
mp.setDataSource("/sdcard/test.mp3");
//③网络URL文件:
mp.setDataSource("http://www.xxx.com/music/test.mp3");
设置文件描述
AssetFileDescriptor fileDescriptor = getAssets().openFd("rain.mp3");
m_mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(), fileDescriptor.getLength());
本地Uri:
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
外部URL:
String url = "http://........"; // your URL here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(url);
mediaPlayer.prepare(); // might take long! (for buffering, etc)
mediaPlayer.start();
SoundPool使用实例
SoundPool使用
初始化
//设置最多可容纳5个音频流,音频的品质为5
SoundPool mSoundPool = new SoundPool(5, AudioManager.STREAM_SYSTEM, 5);
soundID.put(1, mSoundPool.load(this, R.raw.duang, 1));
soundID.put(2 , mSoundPool.load(getAssets().openFd("biaobiao.mp3") , 1)); //需要捕获IO异常
Android 5.0之后
SoundPool.Builder spb = new SoundPool.Builder();
spb.setMaxStreams(10);
spb.setAudioAttributes(null); //转换音频格式
SoundPool sp = spb.build(); //创建SoundPool对象
播放
//声音ID,左声道,右声道,播放声音优先级(数值越大,优先级越大),是否循环(1,0,-1),播放速率(0.5-2.0)
mSoundPool.play(soundID.get(index), 1, 1, 0, 0, 1);
监听是否播放完成
mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
Toast.makeText(MainActivity.this,"加特技准备完毕~",Toast.LENGTH_SHORT).show();
}
});