[小白裝逼]Android 語音錄製及播放的處理---AudioH
阿新 • • 發佈:2019-01-22
AudioH
Android 語音錄製及播放的處理,基於MediaPlayer(播放) 和MediaRecorder (錄製)
實現功能
1.實現Android語音錄製的功能(目前封裝只支援AMR格式);
2.實現Android語音播放功能(聽筒和揚聲器播放);
3.實現語音播放中,網路語音的快取;
4.提供獲取快取大小和清理快取的方法;
使用方法
1.匯入依賴
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.lewis-v:AudioH:1.0.0'
}
2.錄音
RecoderBuilder builder = new DefaultRecoderBuilder()
.setMAX_LENGTH(60*1000)//最大錄音60秒
.setMIN_LENGTH(500)//最小錄音0.5秒
.setSAMPLEING_RATE(200)//錄音監聽回撥間隔,200ms回撥一次
.setSaveFolderPath(Environment.getExternalStorageDirectory()+"/record/");
AudioRecoderManager.getInstance()//獲取單例
.setAudioRecoderData(builder.create())//設定自定義配置,已有預設的配置,可不用配置
.setAudioRecoderListener(new AudioRecoderListener() {//設定監聽
@Override
public void onStart() {//開始播放
}
@Override
public void onStop(AudioRecoderData audioRecoderData) {//停止/結束播放
Log.e(TAG,audioRecoderData.getFilePath());
}
@Override
public void onFail(Exception e, String msg) {//錄音時出現的錯誤
e.printStackTrace();
}
@Override
public void onCancel() {//錄音取消
}
@Override
public void onSoundSize(int level) {//錄音時聲音大小的回撥,分貝
Log.e(TAG,"level:"+level);
}
});
AudioRecoderManager.getInstance().start(this);//開始錄音
AudioRecoderManager.getInstance().stop(this);//結束錄音
3.播放
AudioPlayManager.getInstance().init(this)//初始化播放
.setPlayListener(new AudioPlayListener() {//設定播放監聽
@Override
public void onPlay(String audioPath) {//開始播放
}
@Override
public void onProgress(int progress, int maxSize) {//播放進度(未實現)
}
@Override
public void onPause() {//播放暫停(未實現)
}
@Override
public void onStop() {//停止播放
}
@Override
public void onFail(Exception e, String msg) {//播放時出錯
}
});
AudioPlayManager.getInstance().play("http://39.108.236.30:47423/audio/UP699813445282012.amr"
,this, AudioPlayMode.MEGAPHONE);//播放音訊,放心這段音訊是我朋友的聲音。。嘻嘻
4.快取獲取及清理
快取清理的方法未做執行緒處理,是同步進行的方法,需要開發者自己開子執行緒呼叫
Log.e(TAG, String.valueOf(AudioPlayManager.getInstance().getCacheSize(this)));//獲取快取大小
Log.e(TAG, String.valueOf(AudioPlayManager.getInstance().clearCache(this)));//清除快取,並返回清除的大小