Android開源:LQRAudioRecord - 高仿微信語音庫

bheb0660 7年前發布 | 10K 次閱讀 安卓開發 Android開發 移動開發

LQRAudioRecord

本庫集成錄音與播音功能,使用簡單方便,讓IM集成語音不再是難題。

一、簡述 該庫可進行語音錄制及播放,方便IM項目集成語音功能。

  1. 錄音可獲取分貝,并默認回傳10秒倒計時。
  2. 播放時貼耳自動轉為聽筒播放,離耳時轉公放。

以下是Demo效果:

二、引用初始化 ###1、依賴

compile 'com.lqr.audio:library:1.0.0'

權限

<!-- 錄音 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--播音-->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

三、集成

1、常規設置 ####1)設置最大時長:

//默認時長60秒
AudioRecordManager.getInstance(this).setMaxVoiceDuration(120);

2)設置語音位置:

//該庫內不對文件夾是否存在進行判斷,所以請在你的項目中自行判斷
mAudioDir = new File(Environment.getExternalStorageDirectory(), "LQR_AUDIO");
if (!mAudioDir.exists()) {
    mAudioDir.mkdirs();
}

AudioRecordManager.getInstance(this).setAudioSavePath(mAudioDir.getAbsolutePath());</code></pre>

2、錄音

錄音使用的是 AudioRecordManager 類。

1)基本方法:

//開始錄音
AudioRecordManager.getInstance(MainActivity.this).startRecord();

//將要取消錄音(參與微信手指上滑) AudioRecordManager.getInstance(MainActivity.this).willCancelRecord();

//繼續錄音(參與微信手指上滑后加下滑回到原位) AudioRecordManager.getInstance(MainActivity.this).continueRecord();

//停止錄音 AudioRecordManager.getInstance(MainActivity.this).stopRecord();

//銷毀錄音 AudioRecordManager.getInstance(MainActivity.this).destroyRecord();</code></pre>

2)錄音監聽: 該庫提供IAudioRecordListener接口,方便用戶對錄音中不同事件進行處理,具體使用請參考DEMO代碼(代碼較多,請根據自己的項目修改),接口描述:

public interface IAudioRecordListener {

/**
 * 初始化提示視圖
 */
void initTipView();

/**
 * 設置倒計時提示視圖
 *
 * @param counter 10秒倒計時
 */
void setTimeoutTipView(int counter);

/**
 * 設置正在錄制提示視圖
 */
void setRecordingTipView();

/**
 * 設置語音長度太短提示視圖
 */
void setAudioShortTipView();

/**
 * 設置取消提示視圖
 */
void setCancelTipView();

/**
 * 銷毀提示視圖
 */
void destroyTipView();

/**
 * 開始錄制
 * 如果是做IM的話,這里可以發送一個消息,如:對方正在講話
 */
void onStartRecord();

/**
 * 錄制結束
 *
 * @param audioPath 語音文件路徑
 * @param duration  語音文件時長
 */
void onFinish(Uri audioPath, int duration);

/**
 * 分貝改變
 *
 * @param db 分貝
 */
void onAudioDBChanged(int db);

}</code></pre>

3、播音

播音使用的是 AudioPlayManager 類。

1)開始播放:

AudioPlayManager.getInstance().startPlay(MainActivity.this, audioUri, new IAudioPlayListener() {
    @Override
    public void onStart(Uri var1) {
        //開播(一般是開始語音消息動畫)
    }

@Override
public void onStop(Uri var1) {
    //停播(一般是停止語音消息動畫)
}

@Override
public void onComplete(Uri var1) {
    //播完(一般是停止語音消息動畫)
}

});</code></pre>

2)結束播放:

AudioPlayManager.getInstance().stopPlay();

 

項目主頁:http://www.baiduhome.net/lib/view/home/1491891707877

 

 本文由用戶 bheb0660 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!