如何在 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) 中的流连接之前放置音频的主要内容,如果未能解决你的问题,请参考以下文章

如何在ubuntu卸载android studio

如何在mac上安装android studio

如何手动升级android studio?

Android studio的preview界面一直在加载,该如何解决?

Android studio 如何启动

如何在android studio中建立一个html文件