[Release][PX3|PX5] MtcdTools-Control music players, customize buttons, voice control

Search This thread

BigManni

Member
Jan 18, 2010
19
2
Hi,
does anyone know how to jump to the homescreen after starting an app . with intent?
 
Last edited:

strados

Member
Mar 4, 2021
18
0
I would like to start DAB-Z by a panel key (Band).
Can anyone tell me which steps must be done in mtcd tools ?

On screen "Create new action list" there are no objects visible to put into the list ??
What must be done before to shop "DAB-Z" on this screen ?
 

strados

Member
Mar 4, 2021
18
0
Okay I can share my own version here, which can't be installed over an already installed MtcdTools.

Don't hesitate to give some feedback about it (correctly installed, autostart at boot, autostart after sleep, key bindings, ...).

Download attached. :fingers-crossed:
Great, Thanks a lot ! it works perfect on my unit (px6 rk3399, mtce).
Now I can launch NavRadio+ by panel key "BAND" short and also DAB-Z by key "BAND" long
 

Ronaldo_9

Senior Member
May 7, 2010
1,145
138
London
Hello, my android px3 automatically loads the stock music app. Will this tool allow me to prevent this?

also the default launcher doesn’t let you map the music app icon. Does this tool work for that too?
 
  • Like
Reactions: karlchen27

typos1

Senior Member
Apr 3, 2007
9,495
1,741
UK
You mean when you insert an sdcard ? You can turn off opening the music app when an sdcard is inserted in settings.

Waht do you mean by "map the music app icon" ?
 

pakoner

Senior Member
Feb 4, 2016
230
49
Pordenone
can someone kindly explain step by step how to set up to resume various apps after sleep? On Px6 android 10
Thanks in advance
 

c3po_droid

Senior Member
Sep 13, 2016
57
23
Okay I can share my own version here, which can't be installed over an already installed MtcdTools.

Don't hesitate to give some feedback about it (correctly installed, autostart at boot, autostart after sleep, key bindings, ...).

Download attached. :fingers-crossed:
Hi there,

so I installed your version of MTCDTools 1.10 for Android 10 and was amazed that it worked flawlessly. Though, I did now a Virustotal scan and your version is the only one here that has a trojan match by one scanner:

Virustotal_MTCDTools_Android10.png


"Android.faketoken.snt" which is described by the following:

Trojan:Android/FakeToken steals SMS messages containing mTAN numbers generated by banks to validate online transactions.

Can you look into your APK and comment on this? I know, it is only one of 63 scanners, that finds something, but still... the other APKs here don't have even a single match.
 

AirOne70

Senior Member
Apr 10, 2012
489
313
France
Hi there,

so I installed your version of MTCDTools 1.10 for Android 10 and was amazed that it worked flawlessly. Though, I did now a Virustotal scan and your version is the only one here that has a trojan match by one scanner:

View attachment 5290373

"Android.faketoken.snt" which is described by the following:

Trojan:Android/FakeToken steals SMS messages containing mTAN numbers generated by banks to validate online transactions.

Can you look into your APK and comment on this? I know, it is only one of 63 scanners, that finds something, but still... the other APKs here don't have even a single match.
Hi there,

Well I have no idea on this, and my headunit is not even capable of receiving SMS anyway.
Full source code is available on Github, so everyone is free to look into it if needed.
 

louismcguire

Member
Apr 27, 2008
12
2
Great, Thanks a lot ! it works perfect on my unit (px6 rk3399, mtce).
Now I can launch NavRadio+ by panel key "BAND" short and also DAB-Z by key "BAND" long
Hi,

I've managed to bind physical touch buttons to launch an app but I can't get it to recognise a long press. Did you have to enable a setting that I am missing?
 

jnshk

Member
Jan 20, 2014
30
6
Hello Guys,

Can anybody tell me how to send an intent that I can use in Tasker?

Thanks
To send an intent in Tasker (such as to mimic a physical button press) you want to add an action to your task:

> Code
> > Run Shell
> > > Command: am broadcast -a com.microntek.irkeyDown --ei keyCode xxx
> > > Timeout (seconds): 0
> > > Use root: YES
> > > Continue task after error: YES

Where xxx would be the key code for the button that you want to "press".

For example, I've created a project to adjust volume by speed by monitoring location GPS speed and then sending a broadcast that mimicks a volume button press to raise or lower the volume when I hit certain speeds.

XML:
<TaskerData sr="" dvi="1" tv="5.14.6">
<Profile sr="prof100" ve="2">
<cdate>1603677541142</cdate>
<clp>true</clp>
<edate>1635992358242</edate>
<flags>8</flags>
<id>100</id>
<mid0>93</mid0>
<mid1>94</mid1>
<State sr="con0" ve="2">
<code>165</code>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%gl_speed_MPH</lhs>
<op>7</op>
<rhs>62.5</rhs>
</Condition>
</ConditionList>
</State>
</Profile>
<Profile sr="prof101" ve="2">
<cdate>1603677541146</cdate>
<clp>true</clp>
<edate>1635992349271</edate>
<flags>8</flags>
<id>101</id>
<mid0>93</mid0>
<mid1>94</mid1>
<State sr="con0" ve="2">
<code>165</code>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%gl_speed_MPH</lhs>
<op>7</op>
<rhs>72.5</rhs>
</Condition>
</ConditionList>
</State>
</Profile>
<Profile sr="prof102" ve="2">
<cdate>1603677541155</cdate>
<clp>true</clp>
<edate>1635992308855</edate>
<flags>8</flags>
<id>102</id>
<mid0>93</mid0>
<mid1>94</mid1>
<State sr="con0" ve="2">
<code>165</code>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%gl_speed_MPH</lhs>
<op>7</op>
<rhs>12.5</rhs>
</Condition>
</ConditionList>
</State>
</Profile>
<Profile sr="prof47" ve="2">
<cdate>1635992536619</cdate>
<clp>true</clp>
<edate>1635992657858</edate>
<flags>8</flags>
<id>47</id>
<limit>true</limit>
<mid0>43</mid0>
<nme>Scan GPS</nme>
<State sr="con0" ve="2">
<code>165</code>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%GPS</lhs>
<op>4</op>
<rhs>on</rhs>
</Condition>
</ConditionList>
</State>
</Profile>
<Profile sr="prof96" ve="2">
<cdate>1603677541124</cdate>
<clp>true</clp>
<edate>1634249716138</edate>
<flags>8</flags>
<id>96</id>
<mid0>93</mid0>
<mid1>94</mid1>
<State sr="con0" ve="2">
<code>165</code>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%gl_speed_MPH</lhs>
<op>7</op>
<rhs>22.5</rhs>
</Condition>
</ConditionList>
</State>
</Profile>
<Profile sr="prof97" ve="2">
<cdate>1603677541130</cdate>
<clp>true</clp>
<edate>1601074573276</edate>
<flags>8</flags>
<id>97</id>
<mid0>93</mid0>
<mid1>94</mid1>
<State sr="con0" ve="2">
<code>165</code>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%gl_speed_MPH</lhs>
<op>7</op>
<rhs>32.5</rhs>
</Condition>
</ConditionList>
</State>
</Profile>
<Profile sr="prof98" ve="2">
<cdate>1603677541135</cdate>
<clp>true</clp>
<edate>1601074572403</edate>
<flags>8</flags>
<id>98</id>
<mid0>93</mid0>
<mid1>94</mid1>
<State sr="con0" ve="2">
<code>165</code>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%gl_speed_MPH</lhs>
<op>7</op>
<rhs>42.5</rhs>
</Condition>
</ConditionList>
</State>
</Profile>
<Profile sr="prof99" ve="2">
<cdate>1603677541138</cdate>
<clp>true</clp>
<edate>1601074571620</edate>
<flags>8</flags>
<id>99</id>
<mid0>93</mid0>
<mid1>94</mid1>
<State sr="con0" ve="2">
<code>165</code>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%gl_speed_MPH</lhs>
<op>7</op>
<rhs>52.5</rhs>
</Condition>
</ConditionList>
</State>
</Profile>
<Project sr="proj0" ve="2">
<cdate>1600483122498</cdate>
<name>SpeedVol</name>
<pids>97,47,101,98,100,99,102,96</pids>
<tids>93,94,43</tids>
</Project>
<Task sr="task43">
<cdate>1600468186844</cdate>
<edate>1635992729066</edate>
<id>43</id>
<nme>GPS_speed</nme>
<pri>100</pri>
<Action sr="act0" ve="7">
<code>30</code>
<Int sr="arg0" val="0"/>
<Int sr="arg1" val="2"/>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<Int sr="arg4" val="0"/>
</Action>
<Action sr="act1" ve="7">
<code>366</code>
<se>false</se>
<Bundle sr="arg0">
<Vals sr="val">
<net.dinglisch.android.tasker.RELEVANT_VARIABLES><StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%gl_latitude 1. Latitude </_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%gl_longitude 2. Longitude </_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2>%gl_coordinates_accuracy 3. Lat, Lon Accuracy In meters</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3>%gl_altitude Altitude (meters) In meters</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4>%gl_altitude_accuracy Altitude Accuracy In meters</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5>%gl_bearing Bearing in the range 0.0–360.0; Horizontal direction of travel of this device; not related to the device orientation</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6>%gl_bearing_accuracy Bearing Accuracy In degrees</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES7>%gl_map_url Google Maps URL </_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES7><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES8>%gl_coordinates Latitude and Longitude </_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES8><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES9>%gl_satellites Satellites The number of satellites used to derive the fix. May not always be available.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES9><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES10>%gl_speed Speed In meters per second</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES10><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES11>%gl_speed_accuracy Speed In meters per second</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES11><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES12>%gl_time_seconds Time Time in seconds since EPOCH the location was gotten</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES12></StringArray></net.dinglisch.android.tasker.RELEVANT_VARIABLES>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>
</Vals>
</Bundle>
<Int sr="arg1" val="6"/>
<Str sr="arg2" ve="3"/>
<Str sr="arg3" ve="3"/>
<Str sr="arg4" ve="3"/>
<Str sr="arg5" ve="3"/>
<Int sr="arg6" val="0"/>
<Int sr="arg7" val="0"/>
<Str sr="arg8" ve="3"/>
<Int sr="arg9" val="1"/>
</Action>
<Action sr="act2" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%gl_speed_MPH</Str>
<Str sr="arg1" ve="3">%gl_speed*2.23693629</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="1"/>
<Int sr="arg4" val="0"/>
<Int sr="arg5" val="2"/>
<Int sr="arg6" val="0"/>
</Action>
<Action sr="act3" ve="7">
<code>548</code>
<on>false</on>
<Str sr="arg0" ve="3">%gl_speed_MPH MPH</Str>
<Int sr="arg1" val="0"/>
</Action>
<Action sr="act4" ve="7">
<code>135</code>
<Int sr="arg0" val="0"/>
<Int sr="arg1" val="1"/>
<Str sr="arg2" ve="3"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%GPS</lhs>
<op>4</op>
<rhs>on</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act5" ve="7">
<code>549</code>
<Str sr="arg0" ve="3">%gl_speed_MPH</Str>
<Int sr="arg1" val="0"/>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
</Task>
<Task sr="task93">
<cdate>1598312277011</cdate>
<edate>1635993069830</edate>
<id>93</id>
<nme>MCU-VolUp</nme>
<pri>100</pri>
<rty>2</rty>
<Action sr="act0" ve="7">
<code>123</code>
<se>false</se>
<Str sr="arg0" ve="3">am broadcast -a com.microntek.irkeyDown --ei keyCode 273</Str>
<Int sr="arg1" val="0"/>
<Int sr="arg2" val="1"/>
<Str sr="arg3" ve="3"/>
<Str sr="arg4" ve="3"/>
<Str sr="arg5" ve="3"/>
</Action>
</Task>
<Task sr="task94">
<cdate>1598312277011</cdate>
<edate>1635993078450</edate>
<id>94</id>
<nme>MCU-VolDown</nme>
<pri>100</pri>
<Action sr="act0" ve="7">
<code>123</code>
<se>false</se>
<Str sr="arg0" ve="3">am broadcast -a com.microntek.irkeyDown --ei keyCode 281</Str>
<Int sr="arg1" val="0"/>
<Int sr="arg2" val="1"/>
<Str sr="arg3" ve="3"/>
<Str sr="arg4" ve="3"/>
<Str sr="arg5" ve="3"/>
</Action>
</Task>
</TaskerData>
 
Last edited:

strados

Member
Mar 4, 2021
18
0
no problem. Don't use just any similar tool, only the one here from post #493 !
Then... first on screen "CREATE NEW ACTION LIST" an "object" must be created which includes the app you want to start by a key.
Second on screen "OBTAIN KEYS SEQUENCE" push the key you want to connect with the app and select the "object" from step 1.
Finished. (may be a button "save" has to be activated, I'm just writing this from memory) :cool:
 

Toronadian

Senior Member
Apr 17, 2013
142
14
Does anyone have a breakdown of how to set an app to open with the long press of a button? I've been reading through this thread and to be honest, there's mostly just questions but not answers about this. There's one on going through the factory settings first but I'm not seeing it there either. If anyone has a simpler breakdown that be great, thanks.

Also, is it possible to map buttons for increasing/decreasing volume with this app? I'm looking through the actions and can't seem to find it. Thank you.
 

Bthamburg

Member
May 31, 2015
30
10
Does anyone have a breakdown of how to set an app to open with the long press of a button? I've been reading through this thread and to be honest, there's mostly just questions but not answers about this. There's one on going through the factory settings first but I'm not seeing it there either. If anyone has a simpler breakdown that be great, thanks.

Also, is it possible to map buttons for increasing/decreasing volume with this app? I'm looking through the actions and can't seem to find it. Thank you.
First you have to set different actions in system settings for short and long pressing. Define actions that are not used. Maybe radio if you disabled system radio app.
In mtcdtools make for each button a own sequence. Be sure you press the button long for the long action.
 

Toronadian

Senior Member
Apr 17, 2013
142
14
First you have to set different actions in system settings for short and long pressing. Define actions that are not used. Maybe radio if you disabled system radio app.
In mtcdtools make for each button a own sequence. Be sure you press the button long for the long action.
Hey, thanks for the reply. I've tried that for the touch controls and I'm not sure if it's working. I've binded the long touch button to an action that was nonexistent. I haven't tried binding it to a sequence, only launch action. Not really sure how to work the bind sequence option.

As well, does this work with long touch/hold of physical buttons that are on my centre console? There doesn't appear to be a key or panel study that allows me to create a bind for a long press of a physical button unfortunately.
 

Star-Lite

Senior Member
Jan 14, 2008
320
1
I just installed my new android HU in my car and I am looking for a way to change the mode button behaviour and this tools seems like the perfect one.
Except my HU does not have an MTCD MCU.

It is a PX5 with an MTCH_CHS MCU .

Will MTCDTools still work for this, or do I need another version? I am just interested in the MODE LIST functionality atm.
As far as I know MTCHTools does not exist ;)
 

Star-Lite

Senior Member
Jan 14, 2008
320
1
I have tried both the 1.9 apk on github and the 1.10 version (that AirOne70 made).
The 1.9 version straight up refuses to launch and crashes when I start it.

I kinda got jamal2367's version to work.

The problem I am facing right now is that the tool doesn't seem to recognize my buttons.
I have unassigned the mode button via the wheelkeystudy app, but the 'obtain keys sequence' screen does not seem to want to recognize the keys. I press the steering wheel key (or one of the keys on the HU itself) and no key number will show up.

I have also tried to assign the mode key to different other functions (nr 9, etc) in WKS but that also didn't help.
I can hear a beep when I press the key if it's assigned, I don't hear a beep if it's unassigned in the WKS app.

So unless I am doing something wrong (which is certainly possible of course), the tool does not seem to support MTCH :(
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 36
    Hello,
    Today is time to release second application with more powerful features on-board. I would like to introduce MtcdTools.

    MtcdTools

    https://forum.xda-developers.com/an...ent/howto-beginners-guide-to-setting-t3595793

    21.06.2017: Version 1.9 has been released
    19.06.2017: Version 1.8 has been released
    10.05.2017: Version 1.7 has been released
    09.05.2017: Version 1.6.1 has been released
    02.03.2017: Version 1.6 has been released
    27.02.2017: Version 1.5 has been released
    23.02.2017: Version 1.4 has been released
    14.02.2017: Version 1.3.3 has been released
    13.02.2017: Version 1.3.2 has been released
    10.02.2017: Version 1.3.1 has been released
    07.02.2017: Version 1.3 has been released
    19.08.2016: Version 1.2 has been released
    14.08.2016: Version 1.1 has been released
    10.08.2016: Version 1.0 has been released

    If you enjoyed using of the application, you can support my work and Donate to me :eek:.

    Best regards,
    f1x
    9
    I rebuild the App with some changes, because the v1.9 is almost outdated. :)

    Changes:
    -Update Gradle to latest
    -Update dependencies to latest
    -Migrate Android library to latest AndroidX
    -Android 10 Support (API 29)
    -Add Day/Night support
    -Add german language
    -Add navigationbar color
    -Add one more permission
    -Fix some outdated stuff
    -Reworked Mainscreen
    -Changed statusbar + accent color
    -Reduce 50% of app size (884kb only)
    -Remove Notifications
    -Remove unneeded dependencies
    -New Launcher Icon
    -Renamed the App to MTCE Tools
    -Changed Min API from 19 to 21
    -Fixed typos
    -Removed unneeded beep sound.
    -Removed notification icons

    Screenshot + Download are Attached :)
    6
    Okay guys, we collected money needed for the PX5 board :). I ordered the board from Bob last week just to not waste the time for the shipping. According to the tracking info, the parcel is in the way to Poland :). I will start the R&D as soon as board arrives.

    The hall of fame:
    @Nomader0
    @zapedge
    @Migz93
    @bm282
    @almera020
    @SomebodySysop
    @apollo1976
    @Kalti94
    @stinger4321

    Many thanks from me and from our community, guys :). Stay tuned.
    5
    I rebuild the App with some changes, because the v1.9 is almost outdated. :)

    Changes:
    -Update Gradle to latest
    -Update dependencies to latest
    -Migrate Android library to latest AndroidX
    -Android 10 Support (API 29)
    -Add Day/Night support
    -Add german language
    -Add navigationbar color
    -Add one more permission
    -Fix some outdated stuff
    -Reworked Mainscreen
    -Changed statusbar + accent color
    -Reduce 50% of app size (884kb only)
    -Remove Notifications
    -Remove unneeded dependencies
    -New Launcher Icon
    -Renamed the App to MTCE Tools
    -Changed Min API from 19 to 21
    -Fixed typos
    -Removed unneeded beep sound.
    -Removed notification icons

    Screenshot + Download are Attached :)

    Could you please create a pull request to the original github repository?
    3
    MtcdTools 1.3 RC1

    Hello. After over one month of intensive development, it is time to release new version of MtcdTools. Version is a Release Candidate, so still few bugs or improvements are possible to find. Report them in this topic or on the GitHub page of the project. If you enjoyed - you can donate to me :).

    It is recommended to uninstall old version before installing a new one.

    Download link: https://github.com/f1xpl/MtcdTools/releases

    Below you can find a description of new features.

    Actions oriented model
    Any object which you define must have a unique name. It is used as an identifier, e.g. in voice control or action lists.​

    Actions
    Key action
    Use this action to simulate a press of android media key (e.g. play, next, pause). As of version 1.3 new media keys like REWIND and FORWARD were added. Unfortunately, most of music players do not support them, but maybe your favorite player will be able to handle it - just check.

    Supported media key events:
    KEYCODE_MEDIA_FAST_FORWARD
    KEYCODE_MEDIA_NEXT
    KEYCODE_MEDIA_PAUSE
    KEYCODE_MEDIA_PLAY
    KEYCODE_MEDIA_PLAY_PAUSE
    KEYCODE_MEDIA_PREVIOUS
    KEYCODE_MEDIA_REWIND
    KEYCODE_MEDIA_STOP​


    Launch action
    Use this action to launch an application installed on the system.​


    Start activity action
    Feature added in version 1.3. Similar feature is available in Tasker. It is useful to launch an application in a non standard way, e.g. displays specific activity accordingly to provided data URI. More information how to deal with intent are available on Android Developer site https://developer.android.com/reference/android/content/Intent.html.

    Useful intents that I discovered:

    Display your Spotify's "starred" songs:
    Intent action: android.intent.action.VIEW
    Intent Data: spotify:collection:tracks
    Intent Flags: 268435456​

    Launch Google Maps in "driving mode":
    Intent action: android.intent.action.VIEW
    Intent Data: google.navigation:/?free=1&mode=d&entry=fnls
    Intent Flags: 268435456​



    Broadcast intent action
    Feature added in version 1.3. Similar feature is available in Tasker. Use this action to broadcast an intent through the system. Some applications are using this mechanism to communicate with other apps. E.g. MTC devices are using this mechanism to notify about key press. More information how to deal with broadcast are available on Android Developer site https://developer.android.com/guide/components/broadcasts.html.​


    Actions sequences
    Feature added in version 1.3. Use it to group defined actions in sequences. Actions are stored and executed in order of addition. Useful to simulate "mode" functionality and automate playback.

    Example:
    Let's assume you defined actions "stop", "play", "my music player" and "my podcast player". Now you want to switch between your players and start playback automatically. Just declare two sequences with actions in a specific order:

    [Sequence 1]
    Stop // it should stop any active playback
    My music player // it will launch your music player
    Play // it will trigger playback of you music player launched in previous step.​

    [Sequence 2]
    Stop // it should stop any active playback
    My podcast player // it will launch your podcast player
    Play // it will trigger playback of you podcast player launched in previous step.​

    Then you can bind your action sequences with key sequence or add it to actions list and automate playback of your music players.​


    Actions list
    Feature added in version 1.3, replaces "Mode" functionality from version 1.2. Use this feature to group your actions and action sequences. You can define key sequence (I prefer to use knob) to scroll the list up and down. In settings you can set time after which highlighted item is executed. This feature is more powerful than regular "mode" because you can fully control what will be launched. You do not need to stick to the defined "mode" order and harm your devices by launching of unnecessary applications.​


    Keys sequences
    As of version 1.3 you are able to bind your defined objects (actions, action sequences, action lists) not only to single key but also to keys sequence. It means you can press any variation of hard keys (device keys and steering wheel keys) to execute your defined action.​


    Voice control
    MtcdTools 1.3 brings possibility to control your device using voice. You can say your defined actions or action sequences names and MtcdTools will execute it for you with provided order. It is possible to execute a single action or action sequence or mix them together using "concatenation word" that you can define in Settings. Concatenation is actually unlimited. You can mix actions with actions sequences and execute as many you want. Voice control is localized. Input language corresponds to the language which is set on your device. If "Google Now" supports you language, then MtcdTools will support it as well.

    To use Voice control you have to define "start activity" action with below parameters and bind it with any keys sequence:
    Class name: com.f1x.mtcdtools.activities.VoiceDispatchActivity
    Intent package: com.f1x.mtcdtools
    Flags: 813760516​

    Example:
    Let's assume you defined 2 actions called "My Music Player" and "Play". Also, you set your "concatenation word" to "then". You can say to device "My music player then play". It will trigger execution of "My music player" and "play" actions one by one.​


    Settings
    Delay of execution action from the list - define time after which highlighted item from actions list is executed.

    Voice command execution delay - define time after which MtcdTools will start processing of the provided input (actions names, etc.). A parameter has been introduced due to poor performance of our devices. It is helpful when you want to execute an playback control action ("play", "pause", etc.). "Google Now" activity will interrupt playback during speech recognition and needs some time to resume it. Sometimes it can interfere with playback control actions.

    Key press speed - define how long MtcdTools will wait to collect next key press to sequence.

    Delay of execution action from sequence - Parameter has been introduced due to poor performance of our devices. Use it to adjust time slot between the execution of actions in actions sequences or items concatenated in voice command. If you want to execute actions dependent on each other, e.g. launching of an music player and starting of a playback, you have to give some additional time to music player to be fully launched.

    Actions voice delimiter (e.g. X then Y) - Word used by MtcdTools to extract items names from provided voice input. (e.g. "my music player" <DEFINED WORD> "play").​

    Lollipop limitations
    Due to Lollipop limitations, it is possible that triggering of voice dispatch activity will bring MtcdTools application to front. To avoid this behavior, close MtcdTools using "recent" menu.​