@@ -82,35 +82,35 @@ class PlayerService : MediaBrowserServiceCompat() {
8282
8383 mediaBrowserImpl = MediaBrowserImpl (
8484 this ,
85- Consumer { parentId: String? ->
85+ Consumer { parentId: String ->
8686 this .notifyChildrenChanged(
87- parentId!!
87+ parentId
8888 )
8989 }
9090 )
9191
9292 // see https://developer.android.com/training/cars/media#browser_workflow
93- mediaSession = MediaSessionCompat (this , " MediaSessionPlayerServ" )
94- setSessionToken(mediaSession!! .sessionToken)
95- sessionConnector = MediaSessionConnector (mediaSession!! )
96- sessionConnector!! .setMetadataDeduplicationEnabled(true )
93+ val session = MediaSessionCompat (this , " MediaSessionPlayerServ" )
94+ mediaSession = session
95+ setSessionToken(session.sessionToken)
96+ val connector = MediaSessionConnector (session)
97+ sessionConnector = connector
98+ connector.setMetadataDeduplicationEnabled(true )
9799
98100 mediaBrowserPlaybackPreparer = MediaBrowserPlaybackPreparer (
99101 this ,
100- BiConsumer { message: String? , code: Int? ->
101- sessionConnector !! .setCustomErrorMessage(
102+ BiConsumer { message: String , code: Int ->
103+ connector .setCustomErrorMessage(
102104 message,
103- code!!
105+ code
104106 )
105107 },
106- Runnable { sessionConnector !! .setCustomErrorMessage(null ) },
108+ Runnable { connector .setCustomErrorMessage(null ) },
107109 Consumer { playWhenReady: Boolean? ->
108- if (player != null ) {
109- player!! .onPrepare()
110- }
110+ player?.onPrepare()
111111 }
112112 )
113- sessionConnector !! .setPlaybackPreparer(mediaBrowserPlaybackPreparer)
113+ connector .setPlaybackPreparer(mediaBrowserPlaybackPreparer)
114114
115115 // Note: you might be tempted to create the player instance and call startForeground here,
116116 // but be aware that the Android system might start the service just to perform media
@@ -153,16 +153,18 @@ class PlayerService : MediaBrowserServiceCompat() {
153153 player!! .UIs ().get(NotificationPlayerUi ::class .java)
154154 ?.createNotificationAndStartForeground()
155155
156- if (playerWasNull && onPlayerStartedOrStopped != null ) {
156+ val startedOrStopped = onPlayerStartedOrStopped
157+ if (playerWasNull && startedOrStopped != null ) {
157158 // notify that a new player was created (but do it after creating the foreground
158159 // notification just to make sure we don't incur, due to slowness, in
159160 // "Context.startForegroundService() did not then call Service.startForeground()")
160- onPlayerStartedOrStopped !! .accept(player)
161+ startedOrStopped .accept(player)
161162 }
162163 }
163164
165+ val p = player
164166 if (Intent .ACTION_MEDIA_BUTTON == intent.action &&
165- (player == null || player !! .playQueue == null )
167+ (p == null || p .playQueue == null )
166168 ) {
167169 /*
168170 No need to process media button's actions if the player is not working, otherwise
@@ -174,7 +176,6 @@ class PlayerService : MediaBrowserServiceCompat() {
174176 return START_NOT_STICKY
175177 }
176178
177- val p = player
178179 if (p != null ) {
179180 p.handleIntent(intent)
180181 p.UIs ().get(MediaSessionPlayerUi ::class .java)
@@ -189,17 +190,19 @@ class PlayerService : MediaBrowserServiceCompat() {
189190 Log .d(TAG , " stopForImmediateReusing() called" )
190191 }
191192
192- if (player != null && ! player!! .exoPlayerIsNull()) {
193+ val p = player
194+ if (p != null && ! p.exoPlayerIsNull()) {
193195 // Releases wifi & cpu, disables keepScreenOn, etc.
194196 // We can't just pause the player here because it will make transition
195197 // from one stream to a new stream not smooth
196- player !! .smoothStopForImmediateReusing()
198+ p .smoothStopForImmediateReusing()
197199 }
198200 }
199201
200202 override fun onTaskRemoved (rootIntent : Intent ? ) {
201203 super .onTaskRemoved(rootIntent)
202- if (player != null && ! player!! .videoPlayerSelected()) {
204+ val p = player
205+ if (p != null && ! p.videoPlayerSelected()) {
203206 return
204207 }
205208 onDestroy()
@@ -215,23 +218,22 @@ class PlayerService : MediaBrowserServiceCompat() {
215218
216219 cleanup()
217220
218- mediaBrowserPlaybackPreparer!! .dispose()
219- mediaSession!! .release()
220- mediaBrowserImpl!! .dispose()
221+ mediaBrowserPlaybackPreparer? .dispose()
222+ mediaSession? .release()
223+ mediaBrowserImpl? .dispose()
221224 }
222225
223226 private fun cleanup () {
224- if (player != null ) {
225- if (onPlayerStartedOrStopped != null ) {
226- // notify that the player is being destroyed
227- onPlayerStartedOrStopped!! .accept(null )
228- }
229- player!! .saveAndShutdown()
227+ val p = player
228+ if (p != null ) {
229+ // notify that the player is being destroyed
230+ onPlayerStartedOrStopped?.accept(null )
231+ p.saveAndShutdown()
230232 player = null
231233 }
232234
233235 // Should already be handled by MediaSessionPlayerUi, but just to be sure.
234- mediaSession!! .setActive(false )
236+ mediaSession? .setActive(false )
235237
236238 // Should already be handled by NotificationUtil.cancelNotificationAndStopForeground() in
237239 // NotificationPlayerUi, but let's make sure that the foreground service is stopped.
@@ -311,10 +313,7 @@ class PlayerService : MediaBrowserServiceCompat() {
311313 */
312314 fun setPlayerListener (listener : Consumer <Player ?>? ) {
313315 this .onPlayerStartedOrStopped = listener
314- if (listener != null ) {
315- // if there is no player, then `null` will be sent here, to ensure the state is synced
316- listener.accept(player)
317- }
316+ listener?.accept(player)
318317 }
319318
320319 // endregion
@@ -332,15 +331,15 @@ class PlayerService : MediaBrowserServiceCompat() {
332331 parentId : String ,
333332 result : Result <List <MediaBrowserCompat .MediaItem >>
334333 ) {
335- mediaBrowserImpl!! .onLoadChildren(parentId, result)
334+ mediaBrowserImpl? .onLoadChildren(parentId, result)
336335 }
337336
338337 override fun onSearch (
339338 query : String ,
340339 extras : Bundle ? ,
341340 result : Result <List <MediaBrowserCompat .MediaItem >>
342341 ) {
343- mediaBrowserImpl!! .onSearch(query, result)
342+ mediaBrowserImpl? .onSearch(query, result)
344343 } // endregion
345344
346345 companion object {
0 commit comments