Software Development [FYT units] FytHWOneKey: non-rooted app to assign other apps to the unit hardware buttons

Search This thread

surfer63

Senior Member
May 4, 2010
4,251
1,781
Zwolle
hvdwolf.github.io
Okay, that sounds good.

I would like to change the mapping of the buttons on the steering wheel. For example, when I press the phone button on my steering wheel, I want a different dialer app to open. Is that possible?
That is where my app falls short, also due to the way the "carrousel" function works in the FYT software.
It only enables the software/hardware options your unit has. It means that your "carrousel" can contain 5 options or up to eight options.
The several bluetooth options do not work in my app as there FYT "changes" things over unit versions (Sofia 3GR / PX5 / (sc9853i/7731) / (uis7862/usi8581a) ).
It would be possible to simply first test for Android version and then call the appropriate BT function, but I don't feel the need myself anymore. It is Open Source: you can alter it to your liking. ;)
 
Last edited:
  • Like
Reactions: marchnz

Solvin

Senior Member
Aug 31, 2015
347
142
That is where my app falls short, also due to the way the "carrousel" function works in the FYT software.
It only enables the software/hardware options your unit has. It means that your "carrousel" can contain 5 options or up to eight options.
The several bluetooth options do not work in my app as there FYT "changes" things over unit versions (Sofia 3GR / PX5 / (sc9853i/7731) / (uis7862/usi8581a) ).
It would be possible to simply first test for Android version and then call the appropriate BT function, but I don't feel the need myself anymore. It is Open Source: you can alter it to your liking. ;)
Very sad but still thanks for the good work.
 

deadeye920

Member
Apr 30, 2022
41
5
Surfer would you app work on my cc3 to change the voice control button in my car to operate Siri in CarPlay instead of Teyes voice? Thank you.
 

deadeye920

Member
Apr 30, 2022
41
5
Was it??

And your right: T'eyes lock so many things on theur unit including that extremely inferior, language limited voice of them.
Yeah on any other screen the voice button activated Google voice but within carlink app it activated Siri.

To be honest this Teyes is miles better in terms of software and hardware seems better even tho they are based on the same board.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 4
    Yes, I also strongly disagree on these kind of actions. You request assistance in the forum, solve it yourself, which is good, and don't want to share the solution with everyone?
    Then what do you do here on a forum where a lot of people share their knowledge?
    1
    The question is public but the solution is a secret? Strange...
  • 6
    Hi,

    I created an app (first release March 2019) that works on standard FYT ROMs (Joying, T'eyes, KingBeats, NaviFly, Funrover, some Witsons, some Sinosmarts, iDoing, etc) and allows to modify the standard actions (started apps) of a number of the hardware buttons on the units.

    See on my github repository.
    It does not (always) work in combination with the Steering Wheel keys if they are controlled by the CANbus..

    It is simple but has the great benefit that you do not need a rooted unit (YOU DON'T NEED ROOT, but it functions just as well on a rooted unit).
    The app is < 50 Kb and starts therefore extremely fast.
    Again: See on my github repository.

    New Release 1.5.0 14 February 2022:
    Changelog:
    • Added code for better compatibilty with uis7862 (ums512) and uis8581a (sc9863a).
    • code beautifying and improvements (Thanks to Mario Dantas: @mariodantas)
    • dos2unix some xmls
    Download this 1.5.0 version.

    Release 1.4.0 15 February 2021:
    Currently there are 3 options to "start something" with the "Call method"
    • by package name
    • by intent (package name / intent)
    • by system call (terminal command(s) or script)
    configurescreen.jpg


    configurescreen-2.jpg

    configurescreen-3.jpg

    by package name: This is NOT the name of the apk but the internal package name. How do you get this "package name"?
    • Use the "List all Installed apps" option in the main screen of the settings. It shows the app icon, the app name and the package name. This package name is what you need. You can select it and copy & paste it into the field.
    • Search in play.google.com for the app you want to start. Say you want to start the navigation app "Magic Earth" and you have selected that one in the play store (in a browser, not the android app). In the address bar you will then see "https://play.google.com/store/apps/details?id=com.generalmagic.magicearth". The bold part behind the "id=" is your package name.

    by intent: Every app has a "launch" intent to start the app. Some apps can also be started with other intents to immediately start a specific function. Google Search can be started with the launch intent, but you can also start it with the Google Voice search option intent. The Google (Search) package name is "com.google.android.googlequicksearchbox", the specific intent for google voice search is "com.google.android.googlequicksearchbox.VoiceSearchActivity". The combined "String to be used" is therefore "com.google.android.googlequicksearchbox/com.google.android.googlequicksearchbox.VoiceSearchActivity".
    Another example is the Joying Bluetooth apk having intents for the dialer (default launch), the call receiver, the bluetooth streaming, the pairing and a few more.

    by system call: A system call can be a direct (linux) command or a shell script or a binary (to do something).
    = Commands can be a single command as in:
    1. "ls -l > /sdcard/some_file.txt" to capture a directory listing to a file
    2. "input keyevent 3" => Go to the Home screen (of the default launcher)
    3. "am start -a android.intent.action.MAIN -c android.intent.category.HOME" => Go to the Home screen (of the default launcher)
    4. "input keyevent 127" => pause active media player (any media player)
    5. "input key event 126" => (re)start last used media player.
    6. "am start com.syu.radio/com.syu.radio.Launch" => Start the radio app with the default launch intent (or better use "by package name": com.syu.radio; Or use "by intent": com.syu.radio/com.syu.radio.Launch)
    As you can see from the 2nd and 3rd example, there are multiple ways to do something.
    From the 6th example you can see that you can start an app (the radio) from the command line with "am start <full intent>", or by package name, or by intent directly.
    4
    Yes, I also strongly disagree on these kind of actions. You request assistance in the forum, solve it yourself, which is good, and don't want to share the solution with everyone?
    Then what do you do here on a forum where a lot of people share their knowledge?
    2
    New version which will use Split Screen Launcher if installed and you tell it to. Rather than just pulling all this apps code into FYT, I decided(at least for now) to use that app if it's installed to gain improve split screen options.

    The fallback code I had is still there if you tell it not to use Split Screen Launcher, but it is unreliable.

    Split Screen Launcher: https://play.google.com/store/apps/details?id=com.fb.splitscreenlauncher&hl=en_US&gl=US

    also including source code as I am approaching the end of my needs for this app.
    2
    I'm loosing weight because a run to my car and back home a hundred times per day LoL
    2
    Version 1.4.0 Beta
    Beta due to insufficient testing possibilities as I myself have a unit with only HOME/BACK/Vol+/Vol- buttons

    In previous versions you could only start an app by package name like: com.syu.radio if you wanted to start the FYT radio (BAND) app.
    Currently there are 3 options to "start something" with the "Call method"

    • by package name
    • by intent (package name / intent)
    • by system call (terminal command(s) or script)
    by package name: This is NOT the name of the apk but the internal package name. How do you get this "package name"?
    • Use the "List all Installed apps" option in the main screen of the settings. It shows the app icon, the app name and the package name. This package name is what you need. You can select it and copy & paste it into the field.
    • Search in play.google.com for the app you want to start. Say you want to start the navigation app "Magic Earth" and you have selected that one in the play store (in a browser, not the android app). In the address bar you will then see "https://play.google.com/store/apps/details?id=com.generalmagic.magicearth". The bold part behind the "id=" is your package name.

    by intent: Every app has a "launch" intent to start the app. Some apps can also be started with other intents to immediately start a specific function. Google Search can be started with the launch intent, but you can also start it with the Google Voice search option intent. The Google (Search) package name is "com.google.android.googlequicksearchbox", the specific intent for google voice search is com.google.android.googlequicksearchbox.VoiceSearchActivity. The combined "String to be used" is therefore com.google.android.googlequicksearchbox/com.google.android.googlequicksearchbox.VoiceSearchActivity.
    Another example is the Joying Bluetooth apk having intents for the dialer (default launch), the call receiver, the bluetooth streaming, the pairing and a few more.

    by system call: A system call can be a direct (linux) command or a shell script or a binary (to do something).
    = Commands can be a single command as in:
    1. ls -l > /sdcard/some_file.txt to capture a directory listing to a file
    2. input keyevent 3 => Go to the Home screen (of the default launcher)
    3. am start -a android.intent.action.MAIN -c android.intent.category.HOME => Go to the Home screen (of the default launcher)
    4. input keyevent 127 => pause active media player (any media player)
    5. input key event 126 => (re)start last used media player.
    6. am start com.syu.radio/com.syu.radio.Launch => Start the radio app with the default launch intent (or better use "by package name": com.syu.radio; Or use "by intent": com.syu.radio/com.syu.radio.Launch)
    As you can see from the 2nd and 3rd example, there are multiple ways to do something.
    From the 6th example you can see that you can start an app (the radio) from the command line with "am start <full intent>", or by package name, or by intent directly.


    (See post #1 for screenshots)