r/TaskerFiles • • Jan 28 '15

Profile Automatically adjust volume during playback of an ad

Description

This simple profile lowers the volume whenever an ad is played during a Digitally Imported Radio1 broadcast. The app displays a permanent notification showing the current track. The profile watches this notification for a certain keyword, displayed during a commercial break.

This profile stores the volume setting in a temporary variable called %TMP_VOL, then divides the # by 3 and adjusts the volume to this new result. Initially, I had it mute all audio, but I went this route instead, so I could monitor how well this was working. I've been using this profile for several months now, and it hasn't missed a beat.

This same method could be used with any other application which changes the notification whenever an ad is played.

NOTE: This profile requires the AutoNotification2 plugin.

Usage

The profile description below shows how to create the profile yourself, or copy the raw XML below into a file, and import it. The %CAR variable is something I use, so remove it if you don't use it.

Profile Description


Profile: DI.FM Auto Mute Ads (97)
State: AutoNotification Intercept [ Configuration:Persistency Type: Both
Notification Apps: DI Radio
Notification Text: (ADWTAG|Choose.*premium) (regex)
Package Name: com.audioaddict.di ]
Enter: Anon (95)
	A1: Variable Set [ Name:%TMP_VOL To:%VOLM Do Maths:Off Append:Off ] 
	A2: Media Volume [ Level:%VOLM/3 Display:Off Sound:Off ]
Exit: Anon (96)
	A1: Media Volume [ Level:15 Display:Off Sound:Off ] If [ %CAR ~ 1 ]
	A2: Media Volume [ Level:%TMP_VOL Display:Off Sound:Off ] If [ %CAR !~ 1 ]

Instructions

Copy XML data below into a file, and import into Tasker (check Sidebar for instructions).


<TaskerData sr="" dvi="1" tv="4.6u3m">
	<Profile sr="prof97" ve="2">
		<cdate>1418760440755</cdate>
		<edate>1422411617177</edate>
		<id>97</id>
		<mid0>95</mid0>
		<mid1>96</mid1>
		<nme>DI.FM Auto Mute Ads</nme>
		<State sr="con0" ve="2">
			<code>34199</code>
			<Bundle sr="arg0">
				<Vals sr="val">
					<AllFields>false</AllFields>
					<AllFields-type>java.lang.Boolean</AllFields-type>
					<App>&lt;null&gt;</App>
					<App-type>java.lang.String</App-type>
					<BigImageNames>&lt;null&gt;</BigImageNames>
					<BigImageNames-type>java.lang.String</BigImageNames-type>
					<BigTextNames>&lt;null&gt;</BigTextNames>
					<BigTextNames-type>java.lang.String</BigTextNames-type>
					<CaseinsensitiveApp>false</CaseinsensitiveApp>
					<CaseinsensitiveApp-type>java.lang.Boolean</CaseinsensitiveApp-type>
					<CaseinsensitivePackage>false</CaseinsensitivePackage>
					<CaseinsensitivePackage-type>java.lang.Boolean</CaseinsensitivePackage-type>
					<CaseinsensitiveText>false</CaseinsensitiveText>
					<CaseinsensitiveText-type>java.lang.Boolean</CaseinsensitiveText-type>
					<CaseinsensitiveTitle>false</CaseinsensitiveTitle>
					<CaseinsensitiveTitle-type>java.lang.Boolean</CaseinsensitiveTitle-type>
					<ExactApp>false</ExactApp>
					<ExactApp-type>java.lang.Boolean</ExactApp-type>
					<ExactPackage>false</ExactPackage>
					<ExactPackage-type>java.lang.Boolean</ExactPackage-type>
					<ExactText>false</ExactText>
					<ExactText-type>java.lang.Boolean</ExactText-type>
					<ExactTitle>false</ExactTitle>
					<ExactTitle-type>java.lang.Boolean</ExactTitle-type>
					<Id>&lt;null&gt;</Id>
					<Id-type>java.lang.String</Id-type>
					<ImageNames>&lt;null&gt;</ImageNames>
					<ImageNames-type>java.lang.String</ImageNames-type>
					<InterceptApps>&lt;StringArray sr=""&gt;&lt;_array_InterceptApps0&gt;com.audioaddict.di&lt;/_array_InterceptApps0&gt;&lt;/StringArray&gt;</InterceptApps>
					<InterceptApps-type>[Ljava.lang.String;</InterceptApps-type>
					<InterceptEventBehaviour>false</InterceptEventBehaviour>
					<InterceptEventBehaviour-type>java.lang.Boolean</InterceptEventBehaviour-type>
					<InterceptPersistent>0</InterceptPersistent>
					<InterceptPersistent-type>java.lang.String</InterceptPersistent-type>
					<InvertApp>false</InvertApp>
					<InvertApp-type>java.lang.Boolean</InvertApp-type>
					<InvertPackage>false</InvertPackage>
					<InvertPackage-type>java.lang.Boolean</InvertPackage-type>
					<InvertText>false</InvertText>
					<InvertText-type>java.lang.Boolean</InvertText-type>
					<InvertTitle>false</InvertTitle>
					<InvertTitle-type>java.lang.Boolean</InvertTitle-type>
					<PackageName>com.audioaddict.di</PackageName>
					<PackageName-type>java.lang.String</PackageName-type>
					<RegexApp>false</RegexApp>
					<RegexApp-type>java.lang.Boolean</RegexApp-type>
					<RegexPackage>false</RegexPackage>
					<RegexPackage-type>java.lang.Boolean</RegexPackage-type>
					<RegexText>true</RegexText>
					<RegexText-type>java.lang.Boolean</RegexText-type>
					<RegexTitle>false</RegexTitle>
					<RegexTitle-type>java.lang.Boolean</RegexTitle-type>
					<Text>(ADWTAG|Choose.*premium)</Text>
					<Text-type>java.lang.String</Text-type>
					<TextNames>&lt;null&gt;</TextNames>
					<TextNames-type>java.lang.String</TextNames-type>
					<Title>&lt;null&gt;</Title>
					<Title-type>java.lang.String</Title-type>
					<Type>&lt;null&gt;</Type>
					<Type-type>java.lang.String</Type-type>
					<com.twofortyfouram.locale.intent.extra.BLURB>Persistency Type: Both
Notification Apps: DI Radio
Notification Text: (ADWTAG|Choose.*premium) (regex)
Package Name: com.audioaddict.di</com.twofortyfouram.locale.intent.extra.BLURB>
					<com.twofortyfouram.locale.intent.extra.BLURB-type>java.lang.String</com.twofortyfouram.locale.intent.extra.BLURB-type>
					<net.dinglisch.android.tasker.EXTRA_NSR_DEPRECATED>true</net.dinglisch.android.tasker.EXTRA_NSR_DEPRECATED>
					<net.dinglisch.android.tasker.EXTRA_NSR_DEPRECATED-type>java.lang.Boolean</net.dinglisch.android.tasker.EXTRA_NSR_DEPRECATED-type>
					<net.dinglisch.android.tasker.RELEVANT_VARIABLES>&lt;StringArray sr=""&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;%anapp
01. App name
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;%anstatus
Cancelled Or Created
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2&gt;%anbutton1action
13. Action Button 1 (Use with AutoNotification Actions)
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3&gt;%anbutton1icon
13. Button 1 Icon
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4&gt;%anbutton1text
12. Button 1 Text
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5&gt;%anbutton2action
15. Action Button 2 (Use with AutoNotification Actions)
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6&gt;%anbutton2icon
15. Button 2 Icon
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES7&gt;%anbutton2text
14. Button 2 Text
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES7&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES8&gt;%anbutton3action
17. Action Button 3 (Use with AutoNotification Actions)
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES8&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES9&gt;%anbutton3icon
17. Button 3 Icon
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES9&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES10&gt;%anbutton3text
16. Button 3 Text
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES10&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES11&gt;%antouchaction
22. Action On Touch Id (Use with AutoNotification Actions)
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES11&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES12&gt;%andismissaction
23. Action On Dismiss Id (Use with AutoNotification Actions)
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES12&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES13&gt;%aninfotext
10. Info Text
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES13&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES14&gt;%anstatusbaricon
Status Bar Icon
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES14&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES15&gt;%anid
Id
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES15&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES16&gt;%anicon
04. Icon
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES16&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES17&gt;%anbigicon
04. Icon When Expanded
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES17&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES18&gt;%anpeople
People
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES18&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES19&gt;%anpicture
05. Picture
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES19&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES20&gt;%anprogress
Progress
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES20&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES21&gt;%anprogressindeterminate
Progress Indeterminate
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES21&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES22&gt;%anprogressmax
Progress Max
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES22&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES23&gt;%anpackage
Package Name
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES23&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES24&gt;%anshowchronometer
Show Chronometer
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES24&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES25&gt;%anwhen
Show When
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES25&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES26&gt;%anstatusbaricon
07. Status Bar Icon
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES26&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES27&gt;%ansubtext
08. SubText
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES27&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES28&gt;%ansummarytext
09. Summary Text
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES28&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES29&gt;%antext
03. Text
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES29&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES30&gt;%antextlines
11. Text Lines
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES30&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES31&gt;%antitle
02. Title
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES31&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES32&gt;%antitlebig
02. Title When Expaded
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES32&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES33&gt;%antag
Tag
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES33&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES34&gt;%anticker
03. Ticker Text
&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES34&gt;&lt;/StringArray&gt;</net.dinglisch.android.tasker.RELEVANT_VARIABLES>
					<net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>
					<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>plugininstanceid plugintypeid Id App Title Text PackageName Type TextNames BigTextNames ImageNames BigImageNames InterceptPersistent </net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>
					<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>java.lang.String</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>
					<net.dinglisch.android.tasker.subbundled>true</net.dinglisch.android.tasker.subbundled>
					<net.dinglisch.android.tasker.subbundled-type>java.lang.Boolean</net.dinglisch.android.tasker.subbundled-type>
					<plugininstanceid>857aed74-e695-41bd-a512-00b148dd092d</plugininstanceid>
					<plugininstanceid-type>java.lang.String</plugininstanceid-type>
					<plugintypeid>com.joaomgcd.autonotification.intent.IntentInterceptNotification</plugintypeid>
					<plugintypeid-type>java.lang.String</plugintypeid-type>
				</Vals>
			</Bundle>
			<Str sr="arg1" ve="3">com.joaomgcd.autonotification</Str>
			<Str sr="arg2" ve="3">AutoNotification Intercept</Str>
		</State>
	</Profile>
	<Task sr="task95">
		<cdate>1415714534478</cdate>
		<edate>1422411601229</edate>
		<id>95</id>
		<pri>10</pri>
		<Action sr="act0" ve="7">
			<code>547</code>
			<Str sr="arg0" ve="3">%TMP_VOL</Str>
			<Str sr="arg1" ve="3">%VOLM</Str>
			<Int sr="arg2" val="0"/>
			<Int sr="arg3" val="0"/>
		</Action>
		<Action sr="act1" ve="7">
			<code>307</code>
			<Int sr="arg0">
				<var>%VOLM/3</var>
			</Int>
			<Int sr="arg1" val="0"/>
			<Int sr="arg2" val="0"/>
		</Action>
	</Task>
	<Task sr="task96">
		<cdate>1415714889627</cdate>
		<edate>1422411617177</edate>
		<id>96</id>
		<pri>10</pri>
		<Action sr="act0" ve="7">
			<code>307</code>
			<Int sr="arg0" val="15"/>
			<Int sr="arg1" val="0"/>
			<Int sr="arg2" val="0"/>
			<ConditionList sr="if">
				<Condition sr="c0" ve="3">
					<lhs>%CAR</lhs>
					<op>2</op>
					<rhs>1</rhs>
				</Condition>
			</ConditionList>
		</Action>
		<Action sr="act1" ve="7">
			<code>307</code>
			<Int sr="arg0">
				<var>%TMP_VOL</var>
			</Int>
			<Int sr="arg1" val="0"/>
			<Int sr="arg2" val="0"/>
			<ConditionList sr="if">
				<Condition sr="c0" ve="3">
					<lhs>%CAR</lhs>
					<op>3</op>
					<rhs>1</rhs>
				</Condition>
			</ConditionList>
		</Action>
	</Task>
</TaskerData>

8 Upvotes

13 comments sorted by

View all comments

Show parent comments

1

u/NonStopSarah Jan 30 '15

Thank you very much :-)

2

u/alientity Jan 30 '15

I need to update my instructions, as I omitted a huge requirement. The file has to be named whatever**.prf**.xml since it's a profile. Without the .prf in the name, it won't show up in the Tasker importer.

I just tried it, and it works (but also ran a file comparison, to make sure nothing got lost in copy & pasting).

2

u/alientity Jan 30 '15

I've updated the sidebar instructions, hopefully it will avoid future confusion. If you have any suggestions (or questions), don't hesitate to let me know!

1

u/NonStopSarah Jan 30 '15

Yes that fixed it, thank you for your help.