无法解决如何从一个片段开始()媒体播放的问题

问题描述 投票:0回答:1

对不起,我是个真正的新手,但我有个心理障碍......我在一个服务里有媒体播放器,还有一个带播放按钮的片段,我想控制媒体播放器......这是片段类。

class PlayerFragment : Fragment() {

companion object {
    fun newInstance() = PlayerFragment()
}

private lateinit var viewModel: PlayerViewModel

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    return inflater.inflate(R.layout.player_fragment, container, false)
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    viewModel = ViewModelProviders.of(this).get(PlayerViewModel::class.java)
    // TODO: Use the ViewModel
    Btn_playPause.setOnClickListener { MediaPlayer().start()}
}


}

而这是服务类

class MusicService : Service(), MediaPlayer.OnPreparedListener {
    private var pause:Boolean = false
    inner class MusicServiceBinder : Binder()
    {
    fun getService() : MusicService
    {
        return this@MusicService // the outer 'this'
    }
}
override fun onBind(intent: Intent) : IBinder {

    return MusicServiceBinder()
}
val mediaFile =  File("${Environment.getExternalStorageDirectory().getAbsolutePath()}/Music/Over_The_Horizon.mp3")
override fun onPrepared(mp: MediaPlayer?) {
    TODO("Not yet implemented")
    val player = MediaPlayer()
    player.setAudioStreamType(AudioManager.STREAM_MUSIC)
    player.setDataSource(applicationContext, Uri.fromFile(mediaFile))
    mp?.start()
    player.prepareAsync()

}}

任何帮助非常感谢!

android android-studio android-service android-mediaplayer android-button
1个回答
0
投票

在这里,我可以给你建议一个简单的方法,通过使用本地广播接收器从片段中获得控制。

LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("Play"));//Here is Play as an action.

通过从片段中发送这个动作,并在你的服务中注册 "播放 "动作的intent-filter,你的服务就会收到这个intent并执行相应的动作。

© www.soinside.com 2019 - 2024. All rights reserved.