Tasker Smart NavBar #6 Music controller

Add Music Playback controls to Android NavBar

I can’t believe I needed someone to actually suggest this in the comments (thank you M.Muthuk Kunalan). The Android NavBar is a perfectly adequate place to put the music controls in. NavBar Music Controller is a standalone project which is part of the Smart NavBar series which introduce 6 different actions you can perform from the Android navigation bar.

NavBar Music Controller

The premise is simple, during the music playback, I want to have the basic music controls (skip, play/pause, forward). I used Google Play Music in this example, but with a bit of luck* this could be adapted to any other music player as well.

*The tricky part was actually to sync the music playback state, so the NavBar Music Controller would display the correct icon even if the playback status had been changed via Bluetooth remote or the notification itself. For this to work the media Android notification has display 2 properties:

  • active playback notification has to be persistent (not dismissable)
  • paused music notification needs to be dismissable (non-persistent)

If these conditions are satisfied, you will be able to display the NavBar Music Controller with dynamic icons.

Creating the NavBar Music Controller

The music actions appear when media notification is displayed in the notification bar. I can detect the event using AutoNotification. Sadly, I couldn’t use the icon information, or assigned actions, as the variables with thse values were not useful (scrabled data or the same path for each icon). To resolve the play/pause issue I have to rely on the fact that “paused” notification is dismissable and I can detect that with AutoNotification.

I created 2 profiles – one to display the set of controls with a music playback paused and one with the play button instead. Depending on which media notificaiton is present, I will display one or the other.

TASKER PROFILE: NB Create Music Play
Profile: NB Create Music Play 
	Event: AutoNotification Intercept [ 
	Configuration:Event Behaviour: true
				  Notification Type: Only Created Notifications
				  Persistency Type: Persistent Only
				  Has Media Session: true
				  Notification App: Google Play Music
                  Get All Fields : false ]
Enter: NB Music Play 
	
	A1: Navigation Bar [ Left:back[1.0] 
						 Center:home[1.0] 
						 Right:task(NB Music back)[1.0],task(NB Music pause=:=NB Kill)[1.0],task(NB Music skip)[1.0] ]  

TASKER PROFILE: NB Create Music Pause
Profile: NB Create Music Pause 
	Event: AutoNotification Intercept [ 
			Configuration:Event Behaviour: true
			Notification Type: Only Created Notifications
			Persistency Type: Non-Persistent Only
			Has Media Session: true
			Notification App: Google Play Music
			Get All Fields : false ]
Enter: NB Music Pause 
	
	A1: Navigation Bar [ Left:back[1.0] 
							 Center:home[1.0] 
							 Right:task(NB Music back)[1.0],task(NB Music play=:=NB Kill)[1.0],task(NB Music skip)[1.0] ]   

The NavBar Music Controller is dismissed when the notification for media playback is dismissed too. I have selected a bunch of dismissing methods available in the AutoNotification plugin to support different scenarios.

TASKER PROFILE: NB Cancel Music
Profile: NB Cancel Music 
	Event: AutoNotification Intercept [ 
			Configuration:Event Behaviour: true
			Notification Type: Only Cancelled Notifications
			Cancel Reason: Original app cancelled,
						   Original app cancelled all,
						   User cancelled,
						   User cancelled all,
						   Notification click,
						   App was killed
			Persistency Type: Both
			Notification App: Google Play Music ]
Enter: NB Music Reset 
	A1: Navigation Bar [ Left:back[1.0] 
						 Center:home[1.0] 
						 Right: ]  

Music tasks

With the framework sorted, all I had to do is to control the playback itself, and build the tasks which will contain the appropriate icons and actions. Tasker comes with set of media actions, so the tasks are very simple:

Play

Using Tasker’s media actions I am starting the playback of the music followed by the Flash action to give me a visual feedback. I don’t have to update the NavBar as the new Google Play Music notification will be issued, and the Tasker Profile will update itself.

TASKER TASK: NB Music play
NB Music play 
	A1: Flash [ Text:Play Long:Off ] 
	A2: Media Control [ Cmd:Play [Simulated Only] Simulate Media Button:On App:Play Music ] 

Pause

In the similar manner to “play” I’m using the flash action for the feeback and the built-in media actions in Tasker to pause the playback. Since the Android media notification will toggle the persistency, the new NavBar will be issues automatically.

TASKER TASK: NB Music pause
NB Music play 
	A1: Flash [ Text:Pause Long:Off ] 
	A2: Media Control [ Cmd:Pause [Simulated Only] Simulate Media Button:On App:Play Music ] 

Skip/Forward

These actions require no changes, for both, I’m simply using Tasker’s media actions to skip/back the tracks.

TASKER TASK: NB skip/back
NB Music skip 
	A1: Media Control [ Cmd:Next Simulate Media Button:On App:Play Music ] 
	A2: Flash [ Text:Skip Long:Off ]

NB Music back
	A1: Media Control [ Cmd:Previous Simulate Media Button:On App:Play Music ] 
	A2: Flash [ Text:Back Long:Off ] 

Double Tap to kill app

It was only fair to add an option to kill music playback and turn off the NavBar Music Controller. I liked the action to the double tap on play/pause so when used, it will kill the Google Play Music app. Once the notification isn’t present the NavBar Music Controller goes away too.

TASKER TASK: NB kill
NB Kill 
	A1: Kill App [ App: Play Music Use Root:On ] 

Smart NavBar integration

This is a stand-alone version of the Smart NavBar actions. Once I created the standalone versions for each NavBar Task I will show you how to integrate it together. You can read the tutorial about this now!

Conclusion

The NavBar Music Controller is a great addition to the NavBar and will work great with other mods too once the Smarter NavBar project has been released. You can use it in the standalone mode until then. If you have any questions or suggestions you can always share it in this Reddit thread.

Support NotEnoughTech
A lot of time and effort goes into keeping NotEnoughTech alive! If my work helped you out, consider buying me a coffee or check out exclusive rewards available to Patreon supporters.
SHARE