嗨,我在使用Android Media Player播放媒体时遇到问题。该应用已加载,我可以单击该按钮,但该应用没有任何操作,它应该开始播放预定义的音频片段... 这是播放器服务
class MusicService : Service(), MediaPlayer.OnPreparedListener {
private var pause:Boolean = false
val player = MediaPlayer()
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()}/SD card/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))
player.prepare();
mp?.start()
player.prepareAsync()
}
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
val action = intent.action
player.start()
return START_STICKY
}
}
这是具有播放按钮的片段...
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)
MusicService().MusicServiceBinder()
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProviders.of(this).get(PlayerViewModel::class.java)
// TODO: Use the ViewModel
Btn_playPause.setOnClickListener {
MusicService().player.start()
}
}
}
和完整性的主类...
class MainActivity : AppCompatActivity() {
//overide
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Intent(this, MusicService::class.java).also { intent ->
startService(intent)
}
val db = SongDatabase.getDatabase(application)
val serviceConn = object: ServiceConnection {
override fun onServiceConnected(name: ComponentName?, binder: IBinder?) {
var service = ((binder as MusicService.MusicServiceBinder).getService())
}
override fun onServiceDisconnected(name: ComponentName?) {
}
}
/* var onClick = View.OnClickListener(){view ->
var mainActivity : activity_main= activity as
mainActivity.player_fragment()
}*/
}
}
我可能正在做一些愚蠢的事情,但我自己看不到! 任何帮助将不胜感激!