Android开源:LQRAudioRecord - 高仿微信语音库

bheb0660 4年前
   <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>