Created
January 27, 2019 22:31
-
-
Save IMoHaMeDHaMdYI/ff1ca3c78052df973a0c6ef15d809e71 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PlayerActivity : AppCompatActivity() { | |
private lateinit var mMediaBrowserCompat: MediaBrowserCompat | |
private val connectionCallback: MediaBrowserCompat.ConnectionCallback = object : MediaBrowserCompat.ConnectionCallback() { | |
override fun onConnected() { | |
// The browser connected to the session successfully, use the token to create the controller | |
super.onConnected() | |
mMediaBrowserCompat.sessionToken.also { token -> | |
val mediaController = MediaControllerCompat(this@PlayerActivity, token) | |
MediaControllerCompat.setMediaController(this@PlayerActivity, mediaController) | |
} | |
playPauseBuild() | |
Log.d("onConnected", "Controller Connected") | |
} | |
override fun onConnectionFailed() { | |
super.onConnectionFailed() | |
Log.d("onConnectionFailed", "Connection Failed") | |
} | |
} | |
private val mControllerCallback = object : MediaControllerCompat.Callback() { | |
} | |
fun playPauseBuild() { | |
val mediaController = MediaControllerCompat.getMediaController(this@PlayerActivity) | |
btn.setOnClickListener { | |
val state = mediaController.playbackState.state | |
// if it is not playing then what are you waiting for ? PLAY ! | |
if (state == PlaybackStateCompat.STATE_PAUSED || | |
state == PlaybackStateCompat.STATE_STOPPED || | |
state == PlaybackStateCompat.STATE_NONE | |
) { | |
mediaController.transportControls.playFromUri(Uri.parse("asset:///heart_attack.mp3"), null) | |
btn.text = "Pause" | |
} | |
// you are playing ? knock it off ! | |
else if (state == PlaybackStateCompat.STATE_PLAYING || | |
state == PlaybackStateCompat.STATE_BUFFERING || | |
state == PlaybackStateCompat.STATE_CONNECTING | |
) { | |
mediaController.transportControls.pause() | |
btn.text = "Play" | |
} | |
} | |
mediaController.registerCallback(mControllerCallback) | |
} | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContentView(R.layout.activity_player) | |
val componentName = ComponentName(this, MusicService::class.java) | |
// initialize the browser | |
mMediaBrowserCompat = MediaBrowserCompat( | |
this, componentName, //Identifier for the service | |
connectionCallback, | |
null | |
) | |
} | |
override fun onStart() { | |
super.onStart() | |
// connect the controllers again to the session | |
// without this connect() you won't be able to start the service neither control it with the controller | |
mMediaBrowserCompat.connect() | |
} | |
override fun onStop() { | |
super.onStop() | |
// Release the resources | |
val controllerCompat = MediaControllerCompat.getMediaController(this) | |
controllerCompat?.unregisterCallback(mControllerCallback) | |
mMediaBrowserCompat.disconnect() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment