Android开源:LQRAudioRecord - 高仿微信语音库
bheb0660
7年前
<h2>LQRAudioRecord</h2> <p>本库集成录音与播音功能,使用简单方便,让IM集成语音不再是难题。</p> <h2>一、简述 该库可进行语音录制及播放,方便IM项目集成语音功能。</h2> <ol> <li>录音可获取分贝,并默认回传10秒倒计时。</li> <li>播放时贴耳自动转为听筒播放,离耳时转公放。</li> </ol> <p>以下是Demo效果:</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/55f60c121f88be6d8cff6a1289d11262.gif"></p> <h2>二、引用初始化 ###1、依赖</h2> <pre> <code class="language-java">compile 'com.lqr.audio:library:1.0.0'</code></pre> <h3>权限</h3> <pre> <code class="language-java"><!-- 录音 --> <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"/></code></pre> <h2>三、集成</h2> <h3>1、常规设置 ####1)设置最大时长:</h3> <pre> <code class="language-java">//默认时长60秒 AudioRecordManager.getInstance(this).setMaxVoiceDuration(120);</code></pre> <p>2)设置语音位置:</p> <pre> <code class="language-java">//该库内不对文件夹是否存在进行判断,所以请在你的项目中自行判断 mAudioDir = new File(Environment.getExternalStorageDirectory(), "LQR_AUDIO"); if (!mAudioDir.exists()) { mAudioDir.mkdirs(); } AudioRecordManager.getInstance(this).setAudioSavePath(mAudioDir.getAbsolutePath());</code></pre> <h3>2、录音</h3> <p>录音使用的是 AudioRecordManager 类。</p> <p>1)基本方法:</p> <pre> <code class="language-java">//开始录音 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> <p>2)录音监听: 该库提供IAudioRecordListener接口,方便用户对录音中不同事件进行处理,具体使用请参考DEMO代码(代码较多,请根据自己的项目修改),接口描述:</p> <pre> <code class="language-java">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> <h3>3、播音</h3> <p>播音使用的是 AudioPlayManager 类。</p> <p>1)开始播放:</p> <pre> <code class="language-java">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> <p>2)结束播放:</p> <pre> <code class="language-java">AudioPlayManager.getInstance().stopPlay();</code></pre> <p> </p> <p>项目主页:<a href="http://www.open-open.com/lib/view/home/1491891707877">http://www.open-open.com/lib/view/home/1491891707877</a></p> <p> </p>