图书馆Armen101 / 音频记录视图:块/条不再出现



我正在使用库https://github.com/Armen101/AudioRecordView以可视化语音录制。这在一段时间内运行良好,但当我重新组织布局时,AudioRecordView停止显示块。视图仍然可见(当我将背景设置为红色时,我看到红色视图(,amlitude仍然正确计算(在0和28000之间(,并且当我调用update方法时,视图不为null。我也只有1个AudioRecordView,所以我不能更新错误的。

以下是AudioRecordView:的xml

<com.visualizer.amplitude.AudioRecordView
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:id="@+id/audioRecordView"
android:layout_marginEnd="38dp"
android:layout_marginStart="60dp"
android:background="@color/colorRed"
android:layout_width="match_parent"
android:layout_height="70dp"
app:chunkAlignTo="center"
app:chunkColor="#FFFFFF"
app:chunkMaxHeight="48dp"
app:chunkMinHeight="20dp"
app:chunkRoundedCorners="true"
app:chunkSoftTransition="false"
app:chunkSpace="1dp"
app:chunkWidth="2dp"
app:direction="leftToRight" />

这是update调用:

timer.schedule(object : TimerTask() {
override fun run() {
val currentMaxAmplitude = mediaRecorder?.maxAmplitude ?: 0
audioRecordView!!.update(currentMaxAmplitude) 
}
}, 0, 100)

再次:当计时器运行时,振幅计算正确,AudioRecordView不为零。

视图jsut不再绘制块。

解决方案是显式调用runOnUiThread

timer.schedule(object : TimerTask() {
override fun run() {
val currentMaxAmplitude = mediaRecorder?.maxAmplitude ?: 0
activity.runOnUiThread {
audioRecordView?.update(currentMaxAmplitude / 2)
}
}
}, 0, 100)

不知道为什么它以前工作,我总是假设库确保它在update方法中的UI线程上更新。也许我用了新版图书馆?!我现在在'com.github.Armen101:AudioRecordView:1.0.5',。。。

最新更新