最近项目中有发送语音消息的需求,需要实现一个类似微信录制并发送语音的按钮,为了避免重复造轮子已发布到了jcenter,希望可以方便部分有同样需求的朋友或者提供一些参考。
开源地址:VoiceButton
使用效果图:
环境
- androidx
- kotlin
使用方法
1.添加权限
需要在AndroidManifest.xml文件中声明麦克风权限并在Android 6.0及以上版本中动态询问获取权限。
<uses-permission android:name="android.permission.RECORD_AUDIO" />
2.添加依赖
在模块的build.gradle文件中声明如下依赖
implementation 'com.lizhidan.voicebutton:voicebutton:1.0.1'
3.布局文件中定义控件
VoiceButton继承AppCompatButton可使用其所有属性进行自定义效果。
<com.lizhidan.voicebutton.VoiceButton
android:id="@+id/vb_record"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="长按录音" />
4.代码中使用
private lateinit var vbRecord: VoiceButton
...
vbRecord = findViewById(R.id.vb_record)
//自定义录音最大长度,默认60秒
vbRecord.setMaxRecordLength(20 * 1000)
vbRecord.setRecorderListener(object : RecorderListener {
override fun onStart() {
Log.d(TAG, "开始(触发)本次录音,可能会因为录音时间太短取消本次录音")
}
override fun onFinish(
time: Long,
filePath: String?
) {
Log.d(TAG, "完成了本次录音")
recoderAdapter!!.addData(RecorderInfo(time, filePath!!))
}
})
具体可参考项目中的示例