yashsingh1/xdaforums huggingface dataset:
[Xiaomi Mi A1 Questions & Answers] ltf_195:
Nougat is quite stable, I use it for two month before Oreo came. If you choose Nougat, no more update for you, however there might be custom ROM for nougat in the future since the source code has been release. If you choose Oreo you will get the update, but dont expect too much.
[Xiaomi Mi A1 Questions & Answers] sale 83:
Oreo.

No issues here.
[Xiaomi Mi A1 Questions & Answers] ГАСООП:
Nougat. Sot is 8 hours compared to 5 on oreo. Also, oreo is bugged. I wish I could upgrade to nougat.
[Xiaomi Mi A1 Questions & Answers] kavb1986:
You mean downgrading rite..

This link might help you in such case..

http://c.mi.com/thread-679349-1-0.html
[Xiaomi Mi A1 Questions & Answers] ГАСООП:
in this case that is upgrading, as nougat is upgrade over this piece of joke called oreo
[Xiaomi Mi A1 Questions & Answers] ltf_195:
Here we go again....

Of course you can upgrade/downgrade as you like.

Could you explain what is your "joke" mean? or you try trolling people here?
[FYT Android Head Units] gustden:
Looks like there has been great progress on these units with xposed, custom roms & twrp. I hope to get a chance to try it all out this week. Finally back home with access to my car :)

Great work guys!
[FYT Android Head Units] surfer63:
Great to see you back!

When you say "finally back home" I hope your health is OK and that it's not your health that kept you away from home (and here) so long.

And yes, I finally picked up java.
[FYT Android Head Units] bogdi1988:
Hey [MENTION=2550900]surfer63[/MENTION], great work on this! Quick question, if I want to initiate the Google voice search, that intent do I use for com.google.android.search?
[FYT Android Head Units] surfer63:
For the customkeymod with launcher.sh "am start com.google.android.googlequicksearchbox/com.google.android.googlequicksearchbox.VoiceSearchActivity"

For the XSofiaTweaker:

Use the "by intent (package name / intent)" with string "com.google.android.googlequicksearchbox/com.google.android.googlequicksearchbox.VoiceSearchActivity"

Alternative 1, but some milliseconds slower: "by broadcast" with string "com.google.android.googlequicksearchbox/com.google.android.googlequicksearchbox.VoiceSearchActivity"

Alternative 2, but some more miliseconds slower: "system call" with "am start com.google.android.googlequicksearchbox/com.google.android.googlequicksearchbox.VoiceSearchActivity".

Somehow the "update on change" in the XSofiaTweaker does not work correctly (yet). It requires a soft boot from the Xposed installer (main page, "triple dot menu", soft boot")
[FYT Android Head Units] bogdi1988:
Thanks! I will give this a try in the morning! Last question, does the V5 rom include the Sofia no kill fix? Figured you'd know the answer to that :P
[FYT Android Head Units] surfer63:
No, it does not. You can currently install it from my apk, or use the Xposed Installer on the ROM (preferred) as the NoKill and Customkeymod are already there.

Note: you mention the "Sofia no kill fix". The GPSSpeedFix is fixed, not the NoKill.

That fixed GPSSpeedFix is not in the V5, and due to the fact that it is installed as a system app, you currently need to install it via adb or a rooted file manager.

You can temporarily download the "fixed" GPSSpeedFix from here.

It contains the fix and uses 3 samples instead of 5. This should reduce the lag somewhat.

Edit: My new apk will support the system/app install from the gpsspeedfix.
[FYT Android Head Units] bogdi1988:
Awesome! And yes, the server no kill fix. The other I updated manually - Total Commander to the rescue! I tear with nostalgia each time I use it! ???
[FYT Android Head Units] surfer63:
I found why it does not get updated. I use a broadcast to update (from the example), but I do not have a broadcast receiver. So now find a new example to implement that broadcast receiver :)
[FYT Android Head Units] realzoulou:
I tried installing Xposed on my rooted Joying Sofia JY-VL130N2 and ended up with a brick (stuck in Android boot logo).

My steps were:

1) Downloaded and installed XposedInstaller_3.1.5.apk from the official XDA page https://xdaforums.com/showthread.php?t=3034811

2) Installed some "v89" thing (sorry, I am a newbie to Xposed)

3) Accepted the dialog which warns about soft-bricks and the app restarted the unit

4) Not starting up anymore. Stuck in Android's boot logo after its animations had played.

What was wrong?

EDIT by myself: I did not use the Superuser apk for Sofia as documented by you. Sorry for the noise.
[FYT Android Head Units] bogdi1988:
Need to reflash the unit.
[FYT Android Head Units] bogdi1988:
[MENTION=2550900]surfer63[/MENTION] when I try to download and install package in Xposed installer I get an error that package name is incorrect
[FYT Android Head Units] surfer63:
Please be a bit more concrete.

Any package or "my" modules?

Did you already had the NoKill and/or CustomKeymod installed via my apk?

If so , first uninstall them as they are signed differently by the repo.

If it is a "fresh" install, then it is weird.
[FYT Android Head Units] bogdi1988:
Fresh install :) I even tried clearing Xposed app data/cache and same issue. Downloads like 71kb and then errors out that package name is incorrect and that a different name was expected.

EDIT: I was also driving when I posted that, so I had to be short :silly:
[FYT Android Head Units] surfer63:
I did not even try if it worked. I simply assumed that the global repository would simply work.

Will test tomorrow.
[FYT Android Head Units] bogdi1988:
How do I manually install the module?
[FYT Android Head Units] surfer63:
manually via adb or a rooted file manager.

You can also install the latest nokill and customkeymod from my apk.

Probably this evening I will release my new JET apk also allowing you to overwrite/install the current, as system app installed, GPSSpeedFix in the gtx ROM.

And I will add my XSofiaTweaker to the apk. I need to do some final tests this afternoon.

I had done it wrong with my modules on the xposed repo, but I corrected that and they still give errors. Customkeymod still gives a package error.

The Nokill gives a 404 error and can't be downloaded. I really don't understand it.
[FYT Android Head Units] rilerale:
if I install the Xposed modules with the version 40, I find you in Xposed not. :confused: with version 39 this worked. I use the GTX Rom.

greeting
[FYT Android Head Units] RoNeReR:
i the user that test it with u.

but i learn something since the first test, i will try to right it from scratch.
[FYT Android Head Units] RoNeReR:
Good news :good:

the mcu error mod work perfect. only thing to do is to translate the menu option to other languages.

on Sunday i will take the headunit to home and will start to dev usb dac addon.
[FYT Android Head Units] surfer63:
It has already been translated to Spanish by tOz666, and I did the Dutch and German translation. So I will release it.

Great that you will work on the USB DAC. I don't have one myself so testing is not possible.
[FYT Android Head Units] surfer63:
XSofiaTweaker 1.17 released

I just released version 1.17

option to disable the yellow MCU errors overlay (in case this happens to you) (thanks to RoNeReR)
[FYT Android Head Units] RoNeReR:
u dont need a dac to test it,

basically the mod is to stop the methods of mcu vol up down and mute.

when u enable the mod u will see the android volume bar in place of joying volume bar.
[FYT Android Head Units] surfer63:
:) I learn every day
[FYT Android Head Units] akuma148:
I use the mute button mod and it doesn't require a soft reboot when changing activities, unless you mean a one time reboot. I was testing several apps and activities to see if I got the right commands, and they work immediately without requiring reboot.

Also, thanks for the update on the BT hang button and the other media buttons, I am eagerly awaiting that functionality. Sorry to add another request on your plate, but maybe you can also look at hooking the play/pause button in the steering wheel app.
[FYT Android Head Units] RoNeReR:
USB DAC:

i managed to get working volume up down and mute via xposed. ( should work like assassinsLament dac mod )

to do list:

1. hide volume on statusbar

2. add more steps via xposed module ( can done right now with edit of build.prob by add "ro.config.media_vol_steps=30")

3. sync media volume bar with notification and ringer ( can done right now with moded volumesync app )

surfer63

i have a idea, what u thing of add checkbox to enable disable each mcu key.

for example i prefer the original media key with option to go to the running media player.
[FYT Android Head Units] gtxaspec:
I remember some time ago someone made an app that hooked into the Sofia server IPC (inter process communication) to control volume... Though I don't remember if that was here on xda or on the old carjoying forums...anyone know???
[FYT Android Head Units] surfer63:
That's great! (for those who have a USB DAC). Nice work.

There are two options already available for this:

normally I add the standard behavior behind the key. So when you install the XSofiaTweaker, the MEDIA key will start com.syu.music, like SofiaServer would do in the stock rom.

If you leave the string empty, XSofiaTweaker will skip the hook and use the original function.

So I do not really see the necessity for a checkbox.

What I do see now is that I have to make this functionality absolutely clear to the users. It is obviously not clear!

A checkbox will also make the Settings (sub)screen even more crowded.

Finally, I want a drop-down list of installed apps to be selectable behind the hardware keys on the unit. I still can't get it to work. By now there are 3 not used (because not functioning) class/method sections in the code. Currently for both the hardware and steering wheel keys, you have two config options: the call method and the string.

For the hardware keys I actually want one option only: A list of selectable installed apps, like more Xposed modules have them, but I can't get that to work. By now there are 3 class/method software blocks, but none of them is working.
[FYT Android Head Units] gtxaspec:
Please leave in an option to call specific intents, it is very useful to the advanced user! :)
[FYT Android Head Units] surfer63:
(Lots of typos in my mail, I saw).

I have also been looking at that to have the current 3 call methods intact, and upon select the "by package name" you would get the drop-down, but that is seriously advanced java settings programming. I can't do that. (and "by package name" should then be called "select app" or something like that).
[FYT Android Head Units] RoNeReR:
USB DAC:

sync volume now work well, but must found a way to add more steps with xposed.

by default media have 15 and notification have 7.

so i need to edit build prop to extend both to 30.

u have a idea how to add new lines to build.prop via xposed module?

the usb dac mod not working on BT and Radio. ( also in assassinsLament )

i will find a way to do it but in my case i dont use it,

because i have sound processor i have big echo on phone calls. so i connect a small speaker to headunit internal amp for phone calls.
[FYT Android Head Units] surfer63:
I wouldn't do that. The simplest way is that gtxaspec simply adds it to the gtx rom.

And you could a setprop command to do it, that could even via the ACC_ON option in the XSofiaTweaker.
[FYT Android Head Units] RoNeReR:
if we add it to gtx rom the usb dac will not complete solution for stock rom, there is anyway to hide it as acc_on option? or as runonce on startup?
[FYT Android Head Units] surfer63:
I understand.

At this moment the Xposed install from my JET apk on the stock ROM is still unpredictable: it works or you get into a boot loop.

We could still use the ACC_ON though, but as hidden option.

If a user selects USB DAC, then an "if" statement (if (pref_enable_usb_dac == true)) can be checked on ACC_ON, next to the usbdac hook.

Next to what the user selects him/herself on the ACC_ON, that if statement can do the setprop command. Only on first activation you would need a reboot.
[FYT Android Head Units] gtxaspec:
I wouldn't recommend Xposed for the stock rom, unless installed via custom recovery. leads to bricked units! (that can be fixed via re-install)

Though I have no problem adding things to the custom rom. I need to buy a USB dac soon to test...
[FYT Android Head Units] RoNeReR:
i look the source code of volumesteps+, and found a way to do it with the xposod module.

for now we can use the volumesteps+ for get 30 steps for notifications and media stream.

if any one have a idea to improve the mod or create other mod i will happy to help
[FYT Android Head Units] gtxaspec:
Great work. I have been interested in buying an amplifier and new speakers, with a usb dac!!
[FYT Android Head Units] RoNeReR:
If u want a real improvment buy a sound processor with optical input with the dac it can be great.

I have jbl ms8 with genesis four + mono + morel elate.
[FYT Android Head Units] surfer63:
XSofiaTweaker 1.18 released

I just released XSofiaTweaker 1.18

Now supports a usb dac where volume control will be rerouted to stock android volume control (thanks to RoNeReR)

Create separate (sub) settings screen for CAN bus settings as it might expand (and users without CAN bus can skip it)
[FYT Android Head Units] gtxaspec:
[MENTION=2550900]surfer63[/MENTION], the following is my solution to eliminate feedback during the call if you have OK Google anywhere enabled:

public boolean firstCall = false;
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {

if (lpparam.packageName.equals("com.syu.ms")) {

Class<?> ProfileInfoClass = XposedHelpers.findClass("module.bt.HandlerBt", lpparam.classLoader);
XposedBridge.hookAllMethods(ProfileInfoClass, "btPhoneState", new XC_MethodHook() {
public void beforeHookedMethod(MethodHookParam param) throws Throwable {
int phonestate = (int) param.args[0];
//5 is in call
//4 is ringing?
//3 is dialing
//2 is idle?
//1 is ?
//0 is n/c?

XposedBridge.log("BTTEST " + "phonestate:" + phonestate);
if (phonestate == 3 || phonestate == 4) {
firstCall = true;
sudoVoiceKill();
}
if ((phonestate == 2) && (firstCall == true)) {
XposedBridge.log("BTTEST CALL WAS HUNG UP");
firstCall = false;
sudoVoiceRestart();
}
}
});
}

}

public void sudoVoiceKill(){
try {
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
XposedBridge.log("BTTEST new su kill");
os.writeBytes("am force-stop com.google.android.googlequicksearchbox" + "\n");
os.flush();
os.writeBytes("pm revoke com.google.android.googlequicksearchbox android.permission.RECORD_AUDIO" + "\n");
os.flush();
}
catch (Exception e) {
RuntimeException ex = new RuntimeException("Unable to kill Google Voice Search: " + e.getMessage());
throw ex;
}
}

public void sudoVoiceRestart(){
try {
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
XposedBridge.log("BTTEST new su start");
os.writeBytes("pm grant com.google.android.googlequicksearchbox android.permission.RECORD_AUDIO" + "\n");
os.flush();
os.writeBytes("am start com.google.android.googlequicksearchbox" + "\n");
os.flush();
}
catch (Exception e) {
RuntimeException ex = new RuntimeException("Unable to start Google Voice Search: " + e.getMessage());
throw ex;
}
}

}
[FYT Android Head Units] surfer63:
I will add it to the code. Your log messages mention "BTTEST ..". Is it still in test or does it completely work?
[FYT Android Head Units] gtxaspec:
Oops...forgot to omit debug logging...Works for me, I tested for a few days.
[FYT Android Head Units] surfer63:
XSofiaTweaker 1.19 released

I just released version 1.19

eliminates feedback during the call if you have OK Google anywhere enabled (thanks to gtxaspec)
[FYT Android Head Units] tOz666:
Did not install the mod that enabled OK Google anywhere on current GTX roms due to this bug, it is still installed putting Velvet.apk on /system?
[FYT Android Head Units] gtxaspec:
ROM has it built in, just enable it in the Google app, don't install velvet from another source, that will cause sleep issues.
[FYT Android Head Units] tOz666:
Didn't know that, I didn't bother to check it on your rom it as the bug was annoying on stock joying... thanks!
[FYT Android Head Units] gtxaspec:
[MENTION=2550900]surfer63[/MENTION], have you ever looked into hooking the DIS output? to display stuff on the dashboard?
[FYT Android Head Units] surfer63:
No never. I did not even know these units allowed it. Next to that: my car doesn't have that option. Maybe another reason why I never thought about it.
[FYT Android Head Units] gtxaspec:
[MENTION=2362256]RoNeReR[/MENTION], did you have time to look at the media buttons yet?

[MENTION=2550900]surfer63[/MENTION], did you test your media buttons fix? I haven't yet, just checking in to see.

Im currently looking into enabling the backup cam input to come up on command (via the UIServer app, or through OpenCamera), as well as studying some code regarding the Canbus DIS code ( i want to display media track info in my DIS)

Regarding the Camera, it seems the Sofia-Server does something to lock the HAL...If you run opencamera BEFORE you have a signal on the reverse wire, you can view it fine. But once you hit 12v on the reverse, and then try to use OpenCamera afterwards, black screen. If you repeat this without Sofia-Server enabled, everything works great, looking at the code, it does initialize the camera manager, so I'm looking into finding the method to do this, and prevent Sofia-Server from locking it.
[FYT Android Head Units] surfer63:
My media buttons fix?

You ask both RoNeReR and me. Is it the same issue or not?

Do you mean where the play/pause button does not continue with the last used, active player? (like initially mentioned by [MENTION=309187]edit[/MENTION])

Anyway: I did try a few things there, but did not fully test.

If something else: please explain :)
[FYT Android Head Units] gtxaspec:
yes, same issue, play pause forward previous, with the last active player. that was what i was referring to. or are we just hooking play/pause? i have the problem with play/pause, and forward and previous track...

---------- Post added at 01:13 AM ---------- Previous post was at 12:57 AM ----------

@ste2002

know anyone who can do a RUS translation of the XSofiaTweaker strings?

https://github.com/hvdwolf/XSofiaTweaker/blob/master/app/src/main/res/values/strings.xml
[FYT Android Head Units] surfer63:
I will check this weekend. Last few days I have been looking into my JET issue with the changing data/data/<package name> folder.

With SuperSU I could really easily work around it, but with this old seSuperuser (as we can't make systemless rooted systems due to the boot image limitations), I'm really in a vicious circle here.

As a side note: Have you any idea whether we could make a rooted (and thereby systemless) boot image on the FYT PX5 models? That would make it so much easier for Xposed as well as it would allow for a Google Play user install.

In that case we could also return to SuperSU or the latest version of (se)Superuser for the boot image, which are so much more functionally enhanced than the current outdated (se)Superuser solution.
[FYT Android Head Units] gtxaspec:
a reminder, why are we using an outdated version of seSuperuser? i forgot?

as far as a boot image, i need to get my hands on a P2 unit...should be possible...
[FYT Android Head Units] RoNeReR:
i try to look for a way to display info on Mfd display.

It really depand on the car model, there ia alot of mfd display for cars and for each mfd type you need other code to work.

On which car u work?

I stop work it becuase for dev it i need to sit in the car.

Next week i will take out the headunit and will continue to improve USB DAC mod
[FYT Android Head Units] surfer63:
The newer versions of both SuperSU and Superuser use their own adapted /system/bin/app_process32 (or app_process64) when installed in /system.

Xposed also needs its own /system/bin/app_process32, so Xposed conflicts with the root options.

When these root options (and also the Magisk su) are installed as systemless, so in the boot image and not in /system, Xposed can install its own /system/bin/app_process32. Otherwise either the root option or Xposed will cause a boot loop when trying to find its own app_process32.

The current (se)Superuser from lbdroid runs quite some commits behind phhussons's superuser. That older version is completely SE-linux aware, but only comes as a static su binary, without other necessary binaries/libraries (In newer versions this changed to become more compatible with the superior, but closed source SuperSU). This means that Xposed can install its own /system/bin/app_process32 without any conflict. That's why I like access to the boot image. In earlier days with the "old-fashioned" Rock chip boot images, that was fairly simple, but I can't do it for a FYT/Sofia boot image.

Well, maybe we can get access to partition dumps pretty quickly.
[FYT Android Head Units] ste2002:
[MENTION=520205]gtxaspec[/MENTION],

gorlexx from 4pda is going to make it as soon as he is by his PC: http://4pda.ru/forum/index.php?showtopic=793304&view=findpost&p=72110624
[FYT Android Head Units] surfer63:
Someone, somewhere asked me if I could add the oil level (where I asked fuel level due to Joyings weird translation) to the notification bar, just like the CPU temperature.

I have searched "far and wide" in the forum, my PM inbox, http://www.china-rns.com/joying/, google, bing, but I really can't find that post back.

Anyway: I will not and can not do that. That function is dependent on the CANbus config per car model. It means that I need to create at least 50-70 (or more) hooks for every car CANbus Oil config function. I will not do that.

A lot of functions for different things are collected in a simple "HAL" like class/function, but not for this Oil level (and a number of the other Car Info variables).

(FYT does not use HALs, but mostly use a central class with a centralized function/method for all underlying variable stuff like the airco/heating helper overlay and the doorhelper).
[FYT Android Head Units] ste2002:
[MENTION=520205]gtxaspec[/MENTION], here is file with RUS translation:

https://yadi.sk/d/c9hsaZlc3UC77P
[FYT Android Head Units] surfer63:
XSofiaTweaker 1.20 released

I just released XSofiaTweaker 1.20

Added Russian translation (thanks to gorlexx @ 4pda)

No functional changes.
[FYT Android Head Units] gtxaspec:
[MENTION=2362256]RoNeReR[/MENTION], you wouldn't happen to know which method DETECTs the version of the MCU...from looking at the code...would you? ( the one that triggers the MCU yellow band)
[FYT Android Head Units] RoNeReR:
I stop the method that create the overlay.. I will look later on the code hope to find it.

[MENTION=520205]gtxaspec[/MENTION]

i check for u which method trigger the overlay bars, and i dont have one answer for u, there is alot of mcu overlay trigger in the code, u can find them if u look for "getInfoView()"

this is example:

if (DataDev.SERIAL_DVD.getFd() <= 0 && ObjApp.getInfoView() != null) {

ObjApp.getInfoView().pushInfo(1, "dvd_serial_open_error", "DVD串口打开失败，请重新升级正确的软件", Align.CENTER, 25, -1, 30, -1878982912);

}
[FYT Android Head Units] RoNeReR:
[MENTION=2550900]surfer63[/MENTION]

i improve the usb dac mod, now we have a sync of notification and media stream on volume change.

find:

audioManager.setStreamVolume(5, CurrentVolume + 1, 1);

replace with:

int MaxVolume3 = audioManager.getStreamMaxVolume(3);
int MaxVolume5 = audioManager.getStreamMaxVolume(5);
audioManager.setStreamVolume(5, (int) Math.ceil((((double) MaxVolume5) / ((double) MaxVolume3)) * ((double) CurrentVolume)) , 0);

find:

audioManager.setStreamVolume(5, CurrentVolume + -1, 1);

replace with:

int MaxVolume3 = audioManager.getStreamMaxVolume(3);
int MaxVolume5 = audioManager.getStreamMaxVolume(5);
audioManager.setStreamVolume(5, (int) Math.ceil((((double) MaxVolume5) / ((double) MaxVolume3)) * ((double) CurrentVolume)) , 0);
[FYT Android Head Units] surfer63:
Thanks. I will pick up tonight or tomorrow morning.