Related
Hello,
I try to retrieve (then set) the volume, ring type ... of my XDA using TAPI
I call phoneInitializeEx, phoneOpen, phoneGetVolume but I always get the same value for the volume (even if I chnage it of course)
Does anybody knows why ?
Does anybody have and can post a sample code source showing how to unse these functiuns (phoneInitializeEx, phoneOpen, phoneGetVolume, phoneGetStatus ...)
Regards.
To set the phone volume (in mono) try:
Code:
set(DWORD dwVolume)
{
if (dwVolume > 0xFFFF) dwVolume = 0xFFFF;
dwVolume += dwVolume * 0x10000;
DWORD ret;
switch ((ret = waveOutSetVolume(0, dwVolume))) {
case MMSYSERR_NOERROR:
break;
case MMSYSERR_ERROR:
break;
case (etc....)
}
To get the volume, try:
Code:
DWORD get()
{
DWORD dwVolume;
DWORD ret;
switch ((ret = waveOutGetVolume(0, &dwVolume))) {
case MMSYSERR_NOERROR:
break;
case MMSYSERR_ERROR:
break;
case (etc...)
}
// Return average of left and right:
if (dwVolume > 0xFFFF) {
dwVolume = ((dwVolume & 0xFFFF) + (dwVolume / 0xFFFF)) / 2;
}
return dwVolume;
}
This is code for XDA I. I have not tried this on XDA II which as we know, has two volume channels.....
Ben.
I upgraded my XDA1 with WM2003 and I have 2 channels for the volume too.
I will try your code but I think this will change only the system volume (I will need to do that too so thanks) but not the phone volume.
First I want to pilot the phone settings (ring, volume...) from an application.
And it seems that only TAPI can do it... but it is not working for the moment
Glad the code will be useful.
If you find the correct method for XDA II, please let me know, I'll need it my self soon.
Ben
Your code works well to set/get the sytem volume
I just modifed it a little as the output is mono
Code:
//**********************************************************************
//Set The System Volume
//Steps (0,13107,26214,39321,52428,65535)
DWORD setVolume(DWORD dwVolume)
{
if (dwVolume > 0xFFFF)
dwVolume = 0xFFFF;
if (dwVolume < 0x0000)
dwVolume = 0x0000;
DWORD ret;
switch ((ret = waveOutSetVolume(0, dwVolume)))
{
case MMSYSERR_NOERROR:
break;
case MMSYSERR_ERROR:
break;
default :
break;
}
return 0;
}
//**********************************************************************
//Get The System Volume
DWORD getVolume()
{
DWORD dwVolume;
DWORD ret;
switch ((ret = waveOutGetVolume(0, &dwVolume)))
{
case MMSYSERR_NOERROR:
break;
case MMSYSERR_ERROR:
break;
default :
break;
}
dwVolume = (dwVolume & 0xFFFF);
return dwVolume;
}
But the phoneGetVolume still gives incoherent results
Someone see something wrong in the code below ?
I set the phone volume to 0 on the device but PhoneGetvolume send me 40092 ???
Code:
LONG result;
HPHONE hPhone;
DWORD dwVolume;
DWORD dwRingMode;
DWORD dwNumDevs= 01;
DWORD dwAPIVersion=0x00020002;
PHONESTATUS PhoneStatus;
HPHONEAPP hPhoneApp = 0;
PHONEINITIALIZEEXPARAMS PhoneInitializeExParams;
PhoneInitializeExParams.dwTotalSize = 2 * sizeof(PHONEINITIALIZEEXPARAMS);
PhoneInitializeExParams.dwOptions = PHONEINITIALIZEEXOPTION_USEEVENT;
// PhoneInitializeExParams.dwOptions = PHONEINITIALIZEEXOPTION_USEHIDDENWINDOW;
result = phoneInitializeEx(&hPhoneApp,NULL,NULL,NULL,&dwNumDevs,&dwAPIVersion,&PhoneInitializeExParams);
result = phoneOpen(hPhoneApp, 0, &hPhone, dwAPIVersion, 0, 0,PHONEPRIVILEGE_OWNER);
result = phoneGetVolume(hPhone,PHONEHOOKSWITCHDEV_SPEAKER,&dwVolume); //range 0x00000000 to 0x0000FFFF (65535)
In fact when I set the phone volume using
PocketSetVolume the vlaue is well saved because I get it when I use after PocketGetVolume.
But the phone volume is not really changed ?
Nobody has a sample that uses these functions ?
Or not obligatory these functions but others functions that change the phone volume ?
zendrui said:
In fact when I set the phone volume using
PocketSetVolume the vlaue is well saved because I get it when I use after PocketGetVolume.
But the phone volume is not really changed ?
Nobody has a sample that uses these functions ?
Or not obligatory these functions but others functions that change the phone volume ?
Click to expand...
Click to collapse
I have found that by changing the following registry keys, I can change the volume of the Phone
[HKEY_CURRENT_USER\ControlPanel\Volume]
"Ringer"=dword:00000000
Use hex 00000000, 33333333, 66666666, 99999999, cccccccc, ffffffff
[HKEY_CURRENT_USER\ControlPanel\SoundCategories\Ring]
"InitVol"=dword:00000000
Use hex 0, 1, 2, 3, 4, 5
This work beautifully for my Qtek running WM2003, but I have tried the same approach for the system-volume by changing
[HKEY_CURRENT_USER\ControlPanel\Volume]
"Volume"=dword:00000000
Use hex 00000000, 33333333, 66666666, 99999999, cccccccc, ffffffff
But this does not work! I have checked the registry and the value goes in correctely (The in-system volum control stores the same values in the same key).
How can I use the above code-snippets from the .Net Compact Framework? (I'm guessing a P/Invoke but what DLL is the call hidden in)
Cato
I am trying to make it works, but fail...please let me know if you know how to use the registry to update it...my email is
[email protected]
Thanks
I used the P/Invoke sample from Microsoft to get a working sample that read and updated the registry, and simply tried all possible combo's of a 4byte-array to see what would produce the correct result
Cato
I found a article mention it !!!
http://www.cegadgets.com/winceregfaq.htm#2.8 Where are volume and sound settings stored?
Not sure it works or not !!!
Please let me know if you know how to use the AudioUpdateFromRegistry, defined in coredll
Thanks :wink:
One more acticle !!!
http://www.pocketpcdn.com/forum/viewtopic.php?t=111
But I dunno how to make it works.
Any runnable example?
Hello,
after many tries I didn't find how to use TAPI functions ... this seems not towork ..
But you can change all the phone settings (volume, ring mode, ring tone, notifications ...) in the registry ... as I did for PocketZenPhone
See under that key HKEY_CURRENT_USER\ControlPanel
For the system volume I use the functions I posted upper
Hey, any example to do it?
Thanks zendrui
If you use EVC
Simply open the registry key
HKEY Key;
RegOpenKeyEx(HKEY_CURRENT_USER,_T("\\ControlPanel\\Volume"),0,0,&Key);
Then use RegQueryValueEx to retrieve the value/setting you want
Hi zendrui,
I am able to update the registry, but I am not able to call AudioUpdateFromRegistry to notify the system to update the status from registry.
Could you able to exeute this API?
Thanks,
Paul
Sorry for the last post didn't have the keys in my mind
So to change the phone volume here are the keys needed
Code:
//dwPhoneVolumeLevel between 0 and 0xFFFFFFFF
res = RegOpenKeyEx(HKEY_CURRENT_USER,_T("\\ControlPanel\\Volume"),0,0,&Key);
if (res == ERROR_SUCCESS)
{
res = RegSetValueEx(Key,_T("Ringer"),0,REG_DWORD,(LPBYTE)&dwPhoneVolumeLevel,sizeof(DWORD));
if (res != ERROR_SUCCESS)
{
RegCloseKey(Key);
return -1;
}
}
RegCloseKey(Key);
//dwInitVol between 1 and 5
res = RegOpenKeyEx(HKEY_CURRENT_USER,_T("\\ControlPanel\\SoundCategories\\Ring"),0,0,&Key);
if (res == ERROR_SUCCESS)
{
res = RegSetValueEx(Key,_T("InitVol"),0,REG_DWORD,(LPBYTE)&dwInitVol,sizeof(DWORD));
if (res != ERROR_SUCCESS)
{
RegCloseKey(Key);
return -1;
}
}
RegCloseKey(Key);
It changes the phone volume and the display
PS : I post this code hoping is to help people to develop freewares (or low low cost software :wink
COOL !!! Thanks zendrui !!!!
Now I can set the Ringer volume !!!
How about set the system sound volume?
Fot the system volume see upper of this thread I posted the code I use. It works perfect
O yes...It works under eVC++
Let me try to implement it in VS.NET
Thanks
bong99 said:
O yes...It works under eVC++
Let me try to implement it in VS.NET
Thanks
Click to expand...
Click to collapse
Please tell me if you make it, as I have tried various P/Invoke calls that all result in a No Supported Exception.
Cato
PS: Sorry that I could not get you a working code before but I was under with the flu last week
Hi there,
First of all I tried searching on google and also in this forum itself but I cant find anything related and so i decided to create a new thread on this.
If there anyway via tweaking the registry that i can make use of the volume key on the blackstone to take pictures instead of using the touchscreen? I believe this is possible
I find taking picture using a touchscreen is really difficult.
I read from http://wiki.xda-developers.com/index.php?pagename=HTC_Blackstone_Overview that this is possible by remapping the volume rocker.
Does any know how?
Will anyone be able to help?
I'm requesting this also. HTC should have made an option for us to choose for this from the beginning.
Request also here!
Sorry, I added this "remap volume rocker Solution" because I thought it was possible, but I actually didn't try it. So let's keep this thread to find a way to do it.
Remapping keys is through AE Button Plus or MobileMagic.
Right now we only have the choice of "touch" or "touch and hold" the virtual on-screen button to "auto-focus + shot".
We need to find out if there is any keyboard shortcut associated to that function.
I tried to use the "enter key" fonction remaped to Volume Up with AE Button Plus, but it didn't work.
Does the HTC Touch Pro have HTC's Camera application? maybe they know a keyboard shortcut? Let's ask.
I guess it will be possible.... just that we need the experts here to show us how to...
[APP] CameraButton
To solve this problem. I thought of a very simple solution:
Instead of us clicking the on-screen camera button, we need an application "CameraButton", which will click on the screen for us, then we just need to map a hardware button to that application.
Simple isn't it?
So here is the C# code for the CameraButton application:
Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace CameraButton
{
class Program
{
[System.Runtime.InteropServices.DllImport("coredll.DLL", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[System.Runtime.InteropServices.DllImport("coredll.DLL", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
static extern bool SetForegroundWindow(IntPtr hWnd);
[System.Runtime.InteropServices.DllImport("coredll.dll")]
static extern bool SetCursorPos(int X, int Y);
[System.Runtime.InteropServices.DllImport("coredll.dll")]
static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo);
[Flags]
public enum MouseEventFlags
{
LEFTDOWN = 0x00000002,
LEFTUP = 0x00000004,
MIDDLEDOWN = 0x00000020,
MIDDLEUP = 0x00000040,
MOVE = 0x00000001,
ABSOLUTE = 0x00008000,
RIGHTDOWN = 0x00000008,
RIGHTUP = 0x00000010
}
static void Main(string[] args)
{
IntPtr cameraHandle;
cameraHandle = FindWindow(null, "Camera");//search camera app
if (cameraHandle == IntPtr.Zero)// cannot find it then launch it
{
Process cam = Process.Start(new ProcessStartInfo("Camera.exe", ""));
//cameraHandle = cam.MainWindowHandle;
}
else // can find it then set position then click
{
//SetForegroundWindow(cameraHandle);// we assume we already have the focus on the camera app
SetCursorPos(240, 750 );//set position to the on-screen camera button
mouse_event((uint)MouseEventFlags.LEFTDOWN, 0, 0, 0, 0);
mouse_event((uint)MouseEventFlags.LEFTUP, 0, 0, 0, 0);
}
}
}
}
Why do I give the code rather than the binary?
Because unfortunately this code doesn't work (yet).
Let me explain a bit more:
This application doesn't need to keep running in the background, it just can do 2 things. Start the camera app if it's not already started, or just click at a specifically chosen position.
If I set the position to (0,0), my program will click at the upper-left corner of the screen, and hit the start button, therefore the start menu appears.
However if I try to click on the camera application, it doesn't have any effect!
Actually if I click somewhere else than the on-screen camera button, it should still react to the click: the little cross should move to the clicked place as part of the Touch Focus feature of HTC's camera app.
But here again, nothing happen.
Since it's my first app on WiMo, I might have done a mistake somewhere, but I can't see where.
Any XDA-developer can spot what's wrong with my code?
please see http://forum.xda-developers.com/showthread.php?t=471321
The Problem is the HTC Application, it blocks any keydown event
I did it Application released soon!
http://www.scilor.com/leocameraanykey.html
Hello all,
I'm trying to learn how to do math on an android environment. Basicly what I am trying to do is convert a set of numbers into Years, Months and days. This is what I have so far:
Code:
protected void convertNumbersToTotalTime() {
double val = Double.parseDouble(numbers.getText().toString());
double val2 = (val / 365);
double val3 = (val2 * 365);
double val4 = (val - val3);
double val5 = (val4 / 30);
double val6 = (val5 * 30);
double val7 = (val4 - val6);
String val8 = val2 + " Years " + val5 + " Months " + val7 + " days";
outputnum.setText(val8);
}
The only problem is that the output is the years with a long set of decimals. So if I enter 1000 in the in the field I get "2.739726027397260273972602739726" years. In order for me to get the months I need to limit the decimals to so that all I am left is "2". I been looking around but I can't seem get it to work. Any thoughts?
Any advice or recommendations will greatly be appreciated.
Look for a math.round function.
C# is based partially on java and has a math.round(number,decimalplaces)
Chances are java has a similar function
ReEdit: wrong function just look for the docs for the java maths apI
yes there should be a Math.round() or you could format your output i cant remember the functions.
round
DecimalFormat
links to both
Thanks! It worked!!
Guys,
We are developing an android box solution and are trying to send IR commands to the GPIO pin which has an ir blaster connected. We are unable to find any GPIO drivers for armada and are unable to test this.
We will be trapping key inputs in an app and want to send "key down","key up" as IR commands to GPIO pin which has an IR blaster connected.
We had a look at the LIRC but did not find any drivers for GPIO? There is a raspberry pi gpio driver for LIRC floating around but we are not very sure if it will work?
We have some sample code, which can be found below but we have no idea on how to compile this into an application. Please find the code below. It would be of great help if the community can help us in finding the right solution for this or to get started help in understanding how can we make this sample code working!
This sample code is IR blaster demo loop. It reads any input received by the IR receiver of the Marvell box and outputs it to the IR transmitter circuit.
VOID MV_SM_IR_ISR( VOID )
{
static INT32 ir_current_set_rise = 0, iPrev_Time = 0;
INT32 iCurr_Time;
INT32 ir_set_reg;
iCurr_Time = MV_SM_Timer_ReadClock();
ir_current_set_rise = 1 - ir_current_set_rise;
ir_set_reg = MV_SM_READ_REG32( i_gpio_GPIO_INT_POLARITY );
if(ir_current_set_rise)
{
ir_set_reg |= (1 << GPIO_PORT_IR) ;
MV_SM_GPIO_OUTPUT(9,1);
}
else
{
ir_set_reg &= ~(1 << GPIO_PORT_IR) ;
MV_SM_GPIO_OUTPUT(9,0);
}
MV_SM_WRITE_REG32( i_gpio_GPIO_INT_POLARITY, ir_set_reg );
// Store the current level length to circular buffer
store_ircbuffer( iCurr_Time - iPrev_Time, ir_current_set_rise );
iPrev_Time = iCurr_Time;
// Clear GPIO[0] interrupt
MV_SM_WRITE_REG32( i_gpio_GPIO_PORTA_EOI, (1<<GPIO_PORT_IR) );
return;
}
Kernel or userspace
Do you need the kernel level driver or GPIO or userspace examples of how to access pins already setup as GPIO?
What device are trying to use?
AppSwitcher v3SWC (Steering Wheel Control) app launcher
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Stay focused on the street and don't touch the head units display to switch between apps.
Your browser is not able to display this video.
Support the development of this free app via
ko-fi.com/appswitcher
What is AppSwitcher?
AppSwitcher enhances your steering wheel key to switch between apps.
Hereby you can select which apps should be offered and you can choose stock apps (e.g. the radio app) and 3rd party apps like your favorite mp3 or DAB player. You can switch between media and navigation app by only one key press.
Additionally AppSwitcher offers a lot of options:
- start the last used media app after boot and after sleep automatically.
- long button press to cancel (if dialog is shown) or to jump to home screen.
- reactivate accessibility service of Automate and start initial Automate Flow to realize your own automations
- enable/disable DuraSpeed to prevent the head unit from killing your apps
- change system property to make Android status bar visible (work as on other Android devices)
- automatic screen dimming based on sunset / sunrise information
- allows to start the (Junsun) equalizer app
- supports SWC key "mode" even if CAN box is in place (if modded MainUI gets used)
- ...
How it works
AppSwitcher has two options to register for a SWC key. A basic understandinghow it works will help you to do the initial setup of AppSwitcher.
Option 1 - GPS
The head units main app (MainUI) writes by default a log message on each key press. AppSwitcher can listen to the Android log and react on a log message.
This will not overwrite the standard behavior of the original key function but we can configure a SWC key and assigned it to "open navigation app". With a special app (AppSwitcherStarter) set as navigation app there is no need to modify system files or system apps.
This will only work if
a) a dedicated SWC key to start the navigation app is present. If no CAN box is used every SWC key can be configured
b) a dedicated SWC key to switch between apps (mode button) is present AND the radio app is not used/required
Option 2 - MainUI
Replacing the head units main app (MainUI) with a modded version.
In this version, the SWC mode key is disabled so that its functionality can be overridden (replaced) by AppSwitcher.
Additionally the modded version starts AppSwitcher after boot / sleep and sends a broadcast on each key press. This allows AppSwitcher to register for the broadcasts to receive a trigger. Other apps (e.g. Automate) can also register for these broadcasts.
This will only work if
a) a modded version of MainUI is available
b) you are not afraid of replacing a system app and know how to flash a firmware in case of problems. You're replacing the system app at your own risk.
Installation
Option 1 - GPS
Please read previous post to check if this is the best installation type for you.
Spoiler
- Install AppSwitcher AND AppSwitcherStarter.
- Enable automatic start of navigation app in factory settings
and let your device reboot.
Please be aware that changing factory settings will reset some settings on your device like equalizer and radio station presets. This is not an issue of AppSwitcher(Starter).
- Open AppSwitcher and select your navigation and media apps. Additionally activate the log listener:
- Set 'AppSwitcher Starter' as navigation app:
Don't set AppSwitcher itself as navigation app.
- Configure one button of steering wheel to start navigation app (if not already done)
With this setup the head unit will start AppSwitcherStarter after each reboot/sleep whereby AppSwitcherStarter will start the service of AppSwitcher.
Pressing the SWC navigation key will also start AppSwitcherStarter but this will have no effect if the service is already running. Nevertheless the AppSwitcher service will recognize the log entry and can present the AppSwitcher dialog.
The log entry can vary from head unit to head unit so it may be required to adjust the log listener settings https://forum.xda-developers.com/t/...-devices-incl-autostart.4593865/post-88620913
Option 2 - MainUI
Please read previous post to check if this is the best installation type for you.
You choose this way of installation at your own risk. It may lead to a bootloop and you should be familiar how to flash a firmware to restore your device in case of problems.
Spoiler
- First you need to check if a suitable modded version of MainUI is available for your device.
You can find a list of modded versions here: https://forum.xda-developers.com/t/...-devices-incl-autostart.4593865/post-88620949
- Download the modded MainUI version, place it in the "Download" folder on the device and rename it to MainUI.apk
- Install MainUiUpdater and perform the replacement of MainUI system application. If the device freezes after the update simply use the reset hole to force a reboot.
- Install AppSwitcher
- Open AppSwitcher and select your navigation and media apps.
Ensure the log listener is disabled.
- Reboot your device. E.g. by using the Reboot.apk from here: https://forum.xda-developers.com/t/...r-aux-bt-music-carinfo-from-launcher.4237797/
Installation files
Attached installation files are only for testing purposes.
V3 is still under construction and may be not stable. This version is not supported.
AppSwitcher: Core application
AppSwitcher Starter: Starter of AppSwitcher and dummy navigation app. Only needed for installation option "Option 1 - GPS".
MainUiUpdater: Helper tool to replace MainUI. Only needed for installation option "Option 2 - MainUI".
Reboot: Adds an icon to launcher for an easy reboot of the head unit. Can be found here.
Changelog
AppSwitcher
3.0.3
- Adjusted to new broadcast key
MainUiUpdater
0.7
- Changed backup dir to /sdcard/MainUIbackups
Adjust the log listener
Installation type "Option 1 - GPS" may require to adjust the log listener settings. They are pre-configured for systems without CAN box and a SWC key assigned to the GPS function (see Installation instruction on previous posts).
First you have to identify which log entries get written as soon as you press the SWC key. I suggest to use "Logcat Reader" from Google Playstore to identify usable log messages.
The log listener settings
Log tag: Tag of the log entry. On most systems this is "MainUI".
Short button press log entry: If this log entry occurs AppSwitcher will show the dialog or jump to the next app.
This is the most important entry.
If you get a set of log entries as soon as you push and release a SWC key "Short button press log entry" should be set to the log message which gets written as soon as you release the key after a short amount of time.
Optional:
On button press log entry: This log message gets written as soon as you push down the SWC key. AppSwitcher will stop the countdown as soon as this message gets detected. This allows to set a very short countdown time.
Long button press log entry: If you hold down the button you can cancel the AppSwitcher dialog or jump to the home screen / launcher if the dialog is currently not visible.
The log entries need not to contain the whole message. It's sufficient to enter a substring if this is unique and not part of other log messages.
Modded MainUI
For MTK825X
MainUI_825X_1.3.apkVersion 1.3 from 8259P_军灿UI02v1280x720-国外_v81_20230427
Changelog
23/6/18
- Allow remap of SWC keys even if CAN box is in place
For 8667To bring this version on the same level as 825X I need your testing support!
MainUI_8667_1.1.apkVersion 1.1 from 8667Q军灿UI02-国外-1280x720_v28_20230302.zip
Remap SWC keys
If a CAN box is in place Junsun devices doesn't allow to remap SWC keys and assign other functions to it. But if you install a modded MainUI it is possible to define a config file with a mapping according to your needs.
The mapping file must be called "keyMapping.ini" and must be stored on the top level of the memory next to the "Download" folder.
The file is a simple text file containing key code mappings:
Code:
[from value 1]:[to value 2]
[from value 2]:[to value 1]
[from value 3]:[to value 4]
This is an example to swap the volume keys:
Code:
19:20
20:19
The most used key codes:
Mode = 10
Vol + = 19
Vol - = 20
next track = 44
prev track = 45
All key codes:
Spoiler
0 = 31;
1 = 32;
2 = 33;
3 = 34;
4 = 35;
5 = 36;
6 = 37;
7 = 38;
8 = 39;
9 = 40;
AIR = 105;
AM = 53;
AMS = 58;
ANGLEDN = 74;
ANGLEUP = 73;
APPS = 100;
APP_LONG = 115;
APP_SHORT = 114;
AUDIO = 101;
AUX = 2;
AVIN = 3;
AVM = 107;
BKL = 6;
BT = 23;
BT_A2DP = 111;
CAMERA = 108;
CARINFO = 106;
CAR_DEVICE = 110;
CAR_PLAY = 103;
CLOCK = 5;
DEL = 109;
DELETE = 84;
DIM = 24;
DIMDN = 88;
DIMUP = 87;
DISP = 85;
DN = 67;
DTV = 1;
DVD = 13;
DVR = 27;
ECAR = 89;
EJECT = 71;
EJECT_L = 83;
ENT = 21;
EQ = 17;
FAV = 86;
FCAM = 26;
FEEL_BACKWARD = 198;
FEEL_CCW = 200;
FEEL_CW = 199;
FEEL_DOWN = 196;
FEEL_FORWARD = 197;
FEEL_LEFT = 194;
FEEL_RIGHT = 193;
FEEL_UP = 195;
FEEL_WAVE = 201;
FF = 46;
FM = 52;
FMAM = 51;
FR = 47;
HOME = 99;
INFO = 98;
IPOD = 25;
J = 41;
LEFT = 68;
LOC = 55;
LOUD = 18;
MEDIA = 28;
MEDIA_PP = 60;
MEDIA_RDM = 61;
MEDIA_RPT = 62;
MEDIA_SCAN = 63;
MEDIA_SEARCH = 65;
MEDIA_STOP = 64;
MENU = 8;
MODE = 10;
MODE_DN = 94;
MODE_UP = 93;
MUTE = 16;
NAVI = 11;
NEXT = 44;
OPEN = 72;
PAUSE = 91;
PHONE_SIM = 104;
PLAY = 90;
POWER = 70;
POWER_OFF = 82;
POWER_ON = 81;
PRE = 45;
RADIO = 12;
RADIO_1S = 75;
RADIO_2S = 76;
RADIO_3S = 77;
RADIO_4S = 78;
RADIO_5S = 79;
RADIO_6S = 80;
RADIO_BAND = 43;
RADIO_SCAN = 59;
RDS_AF = 48;
RDS_PTY = 50;
RDS_TA = 49;
RETURN = 22;
RIGHT = 69;
SD = 15;
SET = 7;
SPEAKER = 95;
SPEAKER_SW = 96;
ST = 54;
TELCALLOF = 30;
TELCALLON = 29;
TOGGLE_LEFT = 112;
TOGGLE_RIGHT = 113;
TOUCH = 9;
TPMS = 102;
TUNEDEC = 57;
TUNEINC = 56;
TV = 4;
UP = 66;
USB = 14;
VIEW360 = 92;
VIEW360_UP = 97;
VOLDN = 20;
VOLUP = 19;
X = 42;
reserved
reserved
TorstenH said:
Installation
Option 1 - GPS
Please read previous post to check if this is the best installation type for you.
- Install AppSwitcher AND AppSwitcherStarter.
- Enable automatic start of navigation app in factory settings
View attachment 5927899
and let your device reboot.
Please be aware that changing factory settings will reset some settings on your device like equalizer and radio station presets. This is not an issue of AppSwitcher(Starter).
- Open AppSwitcher and select your navigation and media apps
- Set 'AppSwitcher Starter' as navigation app:
View attachment 5927901
Don't set AppSwitcher itself as navigation app.
- Configure one button of steering wheel to start navigation app (if not already done)
View attachment 5927903
With this setup the head unit will start AppSwitcherStarter after each reboot/sleep whereby AppSwitcherStarter will start the service of AppSwitcher.
Pressing the SWC navigation key will also start AppSwitcherStarter but his will have no effect if the service is already running. Nevertheless the AppSwitcher service will recognize the log entry and can present the AppSwitcher dialog.
The log entry can vary from head unit to head unit so it may be required to adjust the Log listener settings.
Option 2 - MainUI
Please read previous post to check if this is the best installation type for you.
You choose this way of installation at your own risk. It may lead to a bootloop and you should be familiar how to flash a firmware to restore your device in case of problems.
Click to expand...
Click to collapse
Some models of a car - like mine , does not allow changing swc buttons and settings, is there a way to bypass that ?
Anton TNT said:
Some models of a car - like mine , does not allow changing swc buttons and settings, is there a way to bypass that ?
Click to expand...
Click to collapse
Sure. You can help to let the magic happen:
Junsun V1 - Codes
Code description from {Mod edit} Please note: Don't just try a code without to know what happens. E.g. 9191 will lead to the message "device not activated" and you need a file called license.dat. 8888 - restricted settings menu 8878 - full...
forum.xda-developers.com
TorstenH said:
Sure. You can help to let the magic happen:
Junsun V1 - Codes
Code description from {Mod edit} Please note: Don't just try a code without to know what happens. E.g. 9191 will lead to the message "device not activated" and you need a file called license.dat. 8888 - restricted settings menu 8878 - full...
forum.xda-developers.com
Click to expand...
Click to collapse
Thanks good to know
Here is working with mainui option
ramig said:
Here is working with mainui option
Click to expand...
Click to collapse
If you want to test the SWC key remapping via config file, let me know...
I can install MainUI on my unit (8667L), I need to know if the 8667L version is compatible or only for 8667. If it is compatible, is key mapping available for this version?
elalvaro19 said:
I can install MainUI on my unit (8667L), I need to know if the 8667L version is compatible or only for 8667. If it is compatible, is key mapping available for this version?
Click to expand...
Click to collapse
Could you please let me know which firmware you have currently installed by providing a link to the firmware zip file?
Key mapping can be made available but I need you to test because I don't have a 8667(L) unit.
TorstenH said:
Could you please let me know which firmware you have currently installed by providing a link to the firmware zip file?
Key mapping can be made available but I need you to test because I don't have a 8667(L) unit.
Click to expand...
Click to collapse
This is the firmware I currently have installed:
8227L 固件 - Google Drive
drive.google.com
elalvaro19 said:
This is the firmware I currently have installed:
8227L 固件 - Google Drive
drive.google.com
Click to expand...
Click to collapse
Unfortunately I can't extract the firmware with the same tools I use for 8867 and 825X.
Could you please install MainUiUpdater and perform replacement without a MainUI.apk in Download folder? This should create a backup of your MainUI.apk file you can share here.
Hello TorstenH, I have a Junsun 8667Q and I would like to reassign the steering wheel keys, I have a 2019 kia Sportage with CAN, does your MAINUI work for my radio?
The VOICE button opens the google search for me and I would like it to open the google assistant.
Thank you so much