Skip to content

Commit 59a8f42

Browse files
fix: audio chooser update
1 parent 70b5145 commit 59a8f42

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

example/example/src/main/java/space/livedigital/example/MainActivity.kt

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ internal class MainActivity : AppCompatActivity() {
7474

7575
private var chooseAudioDeviceAlertDialog: AlertDialog? = null
7676

77+
// Need to save reference of delegate (because in sdk delegate is Weak Reference)
78+
private val availableRoutesChangedDelegate = createAvailableRoutesChangedDelegate()
79+
7780
override fun onCreate(savedInstanceState: Bundle?) {
7881
super.onCreate(savedInstanceState)
7982

@@ -92,6 +95,23 @@ internal class MainActivity : AppCompatActivity() {
9295
}
9396
}
9497

98+
private fun createAvailableRoutesChangedDelegate(): AudioRouter.AvailableRoutesChangedDelegate =
99+
object : AudioRouter.AvailableRoutesChangedDelegate {
100+
override fun availableRoutesChanged(availableRoutes: List<AudioRoute>) {
101+
chooseAudioDeviceAlertDialog?.listView?.let { alertDialogListView ->
102+
val availableAudioDeviceNames = availableRoutes.map { it.kind.name }
103+
val selectedAudioDeviceIndex = availableRoutes.indexOfFirst { it.isCurrent }
104+
105+
(alertDialogListView.adapter as? ArrayAdapter<String>)?.apply {
106+
clear()
107+
addAll(availableAudioDeviceNames)
108+
notifyDataSetChanged()
109+
}
110+
alertDialogListView.setItemChecked(selectedAudioDeviceIndex, true)
111+
}
112+
}
113+
}
114+
95115
private fun initPeerList() {
96116
adapter = RemotePeerAdapter(layoutInflater)
97117
binding?.remotePeerList?.layoutManager =
@@ -301,21 +321,8 @@ internal class MainActivity : AppCompatActivity() {
301321
}
302322

303323
liveDigitalEngine?.audioRouter?.setAvailableRoutesChangedDelegate(
304-
object : AudioRouter.AvailableRoutesChangedDelegate {
305-
override fun availableRoutesChanged(availableRoutes: List<AudioRoute>) {
306-
chooseAudioDeviceAlertDialog?.listView?.let { alertDialogListView ->
307-
val availableAudioDeviceNames = availableRoutes.map { it.kind.name }
308-
val selectedAudioDeviceIndex = availableRoutes.indexOfFirst { it.isCurrent }
309-
310-
(alertDialogListView.adapter as? ArrayAdapter<String>)?.apply {
311-
clear()
312-
addAll(availableAudioDeviceNames)
313-
notifyDataSetChanged()
314-
}
315-
alertDialogListView.setItemChecked(selectedAudioDeviceIndex, true)
316-
}
317-
}
318-
})
324+
availableRoutesChangedDelegate
325+
)
319326
}
320327

321328
private fun connectToChannel(

0 commit comments

Comments
 (0)