如何在 Android Studio (Kotlin) 中的流连接之前放置音频
Posted
技术标签:
【中文标题】如何在 Android Studio (Kotlin) 中的流连接之前放置音频【英文标题】:How to put an audio before a stream connection in Android Studio (Kotlin) 【发布时间】:2021-04-13 19:33:32 【问题描述】:我是编程新手,我正在为广播制作一个基本应用程序,当您按下按钮时会发出介绍音频,然后会出现第二个音频,直到建立在线广播的网络连接。
当我单击时,我设法使介绍音频声音完成,然后在在线收音机播放之前产生静音,但我不知道如何在收音机播放之前放置第二个检测充电状态的音频。这是我的代码:
fun MediaPlayerRadio()
mediaPlayer = MediaPlayer.create(
this@MainActivity,
Uri.parse("https://radiolink.com")
)
mediaPlayer?.start()
........................................................................
fun MediaPlayerIntroSound()
mediaPlayer = MediaPlayer.create(this, R.raw.SoundIntro)
mediaPlayer?.start()
........................................................................
fun click_Button_Radio()
btn.setOnClickListener()
if (btn.isSelected)
btn.isSelected = false
mediaPlayer?.stop()
else
btn.isSelected = !btn.isSelected
MediaPlayerIntroSound()
mediaPlayer!!.setOnCompletionListener(object : MediaPlayer.OnCompletionListener
override fun onCompletion(mp: MediaPlayer?)
MediaPlayerRadio()
)
我希望你能支持我。
【问题讨论】:
【参考方案1】:为此,您必须使用 2 个媒体播放器,一个用于介绍声音,另一个用于实际声音。
当实际声音媒体播放器准备就绪时,您可以在介绍性声音媒体播放器上播放不同的音频。
要在其他播放器准备好后停止介绍音频播放器,您可以使用视图模型。
//Play Media player
mediaPlayer = MediaPlayer.create(this@MainActivity, R.raw.first_audio)
mediaPlayer.start()
// Add completion listener, so that we can change the audio
// once the first one is finished
mediaPlayer.setOnCompletionListener
mediaPlayer.release()
mediaPlayer = MediaPlayer.create(this@MainActivity, R.raw.second_audio)
mediaPlayer.start()
// We are observing a MutableLiveData of Boolean type,
// once it is true we will stop the intro media player
// and start the radio player
viewModel.isPlayerReady.observe(this) isReady ->
if(isReady)
mediaPlayer.stop()
// Start radio media player
// This is how I am changing the value of MutableLiveData
demoBtn.setOnClickListener
viewModel.isPlayerReady.value = true
我已经测试了上述方法,它可以正常工作。
将视图模型链接到活动的步骤:
添加依赖:implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
在其中创建一个视图模型类和一个布尔类型的可变实时变量。
class MainViewModel: ViewModel()
val isPlayerReady = MutableLiveData<Boolean>()
将视图模型与活动链接。
class MainActivity : AppCompatActivity()
private lateinit var viewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
....
【讨论】:
您好朋友,我已经按照您的指示做了,一切都很好,除了 viewModel 部分,它告诉我它有一个 Unresolved 引用,您知道如何解决那个部分吗?跨度> 你添加视图模型的依赖了吗? @YulianLoyola 使用视图模型集成检查新更新以上是关于如何在 Android Studio (Kotlin) 中的流连接之前放置音频的主要内容,如果未能解决你的问题,请参考以下文章