I want to control the PC cursor by WP7, so I try to use the ManipulationDelta in WP7 that can help me to calculate the difference between he star tap and the end tap
Code:
public MainPage()
{
InitializeComponent();
this.ManipulationDelta += new EventHandler<ManipulationDeltaEventArgs>(MainPage_ManipulationDelta);
transformG = new TransformGroup();
translation = new TranslateTransform();
transformG.Children.Add(translation);
RenderTransform = transformG; // you see I don't use any transform here because I don't know where I put. If I use the image.RenderTransform of it will move also for the screen of WP if I put this.RenderTransform, So anyone have a solution
SenderSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
void MainPage_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
startX = e.ManipulationOrigin.X;
startY = e.ManipulationOrigin.Y;
DeltaX = e.DeltaManipulation.Translation.X;
DeltaY = e.DeltaManipulation.Translation.Y;
translation.X += e.DeltaManipulation.Translation.X;
translation.Y += e.DeltaManipulation.Translation.Y;
EndX = Convert.ToDouble(translation.X);
EndY = Convert.ToDouble(translation.Y);
}
I am juste want to send DeltaX and DeltaY to the server to calculate them to the mouse position in the screen, So I write this code
Code:
void StartSending()
{
while (!stop)
try
{
SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs();
byte[] buffer = Encoding.UTF8.GetBytes(DeltaX.ToString() + "/" + DeltaY.ToString());
socketEventArg.SetBuffer(buffer, 0, buffer.Length);
SenderSocket.SendToAsync(socketEventArg);
}
catch (Exception) { }
}
I concatenate them in 1 buffer with separate by "/" and in server I use this code to separate
Code:
void Receive(byte[] buffer)
{
string chaine = "";
if (SenderSocket != null)
{
SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs();
socketEventArg.Completed += new EventHandler<SocketAsyncEventArgs>(delegate(object s, SocketAsyncEventArgs e)
{
if (e.SocketError == SocketError.Success)
{
chaine = Encoding.UTF8.GetString(e.Buffer, e.Offset, e.BytesTransferred);
chaine.Trim('\0');
string[] pos = chaine.Split('/');
for (int i = 0; i < pos.Length; i++)
{
pX = Convert.ToInt32(pos[0]);
pY = Convert.ToInt32(pos[1]);
this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(Cursor.Position.X + pX, Cursor.Position.Y + pY);
}
}
else
{
}
});
SenderSocket.ReceiveFromAsync(socketEventArg);
}
Just I want to control the cursor, if you have any other methods so plz help me and I am really grateful
Didn't you already have a thread about this? Please re-use existing threads instead of starting new ones. Even if it wasn't you, *somebody* was working on this problem already, and very recently. Always use the Search button before starting a thread.
So... what are you looking for from us? Does your current code work? If not, in what way does it fail? Without knowing what your question is, we can't provide answers.
If you want some advice, though...
Sending as strings is very inefficient on both ends; it would be better to use arrays (which you could convert directly to byte arrays and back again).
You're sending as TCP, which is OK but probably not optimal. For this kind of data, UDP is quite possibly better. If nothing else, it provides clearly delineated packets indicating each update.
How to access the internal function of Galaxy S4 for testing the various hardware parts of your phone if it is working properly or not with the help of this secret code you can test lcd, vibration, camera, sensor (accelerometer sensor, proximity sensor, magnetic sensor), touch screen, speaker, sub key, etc... if you have any hardware problem with your Galaxy S4 you can identify with this code if it is working or not to do this follow the steps below.
First of all open your keypad
Then dial the secret code *#0*#. Now you get a screen with title LCD TEST and below that you have lots of option to test various hardware parts of your phone such as speaker, sensor, lcd, etc
To go back use right physical button
while testing the touch, TSP Hovering you have to touch and mark all the squares back button does not work
Other use full secret codes for android phone tested on Galaxy S4
* #1234# to check software version of phone.
*#12580*369# to check software and hardware information.
*#0228# Battery status (ADC, RSSI reading)
*#0011# Service Menu
Do you have the code for turning on the other frequencies on international versions swe we can get them to more effectively work on ATT?
On the phone Dial Pad you run *#0011# , will get band info and Service Menu
Does anyone now the code to get into Diag mode?
Thanks for this (Y)
Sent from my GT-I9500 using xda premium
Thanks!!! Really helpful thread.
*#0*# Diagmode
Sent from my GT-I9500 using Tapatalk 2
Hey guys.
I had found on AndroidPit the following secret codes.
Insofar as I know they had work by my GT-I9505.
Just try it out
*#0011# service mode
*#0228# batteriestatus
*#0283# looback test
*#06# imei
*#03# nandflashheaderread
*#0808# usb service
*#9090# service mode
*#7284# FactoryKeystring
*#1234# Version
*#34971539#camera firmware standard
*#1111# servicemode
*#0*# Testmodus
On the Verizon version of the Galaxy S4, these codes do not work because the hidden menus are disabled by default. To enable the hidden menus on the Verizon version of the Samsung Galaxy S4 go here:
http://forum.xda-developers.com/showthread.php?t=2303905
recalibrated battery?
i just tried the code for battery status and my current batery status is 33% then was curious what function is "quick start" press it and the phone screen was turned of for 2-3 seconds and my battery went to 13% does that function calibrate battery status?
Very useful.
Thank you!
Hjogi
It amazes me the amount of carrier specific restrictions in this file! In fact, the contents of the file below is what was necessary to enable the S4 hidden menus on the VZW Galaxy S4 variant. It should work on other GS4 variants that have the hidden menus disabled.
I got the source below by using the dex2jar tool on HiddenMenu.apk, and then used jad & jd-gui to decompile the class files into Java source code. See here for steps to enable the hidden menus.
qualified class name is: com.android.hiddenmenu.HiddenmenuBroadcastReceiver
Code:
package com.android.hiddenmenu;
// <snip imports>
public class HiddenmenuBroadcastReceiver extends BroadcastReceiver
{
public static final boolean IS_DEBUG;
private static String checkMsl;
private static final String cpuCode;
private static final String cpuPreCode;
private static final String gsmsimcode;
private static final String mSalesCode = SystemProperties.get("ro.csc.sales_code", "NONE").trim().toUpperCase();
private static final String model;
private final String DIAG_FLAG = "0";
private String HIDDENMENU_ENABLE_PATH = "/efs/carrier/HiddenMenu";
private final String HIDDEN_MENU_OFF = "OFF";
private final String HIDDEN_MENU_ON = "ON";
private final int HIDDEN_MSL_CODE = 0;
private final int HIDDEN_OTHERS_CODE = 2;
private final int HIDDEN_OTKSL_CODE = 1;
static
{
if (SystemProperties.get("ro.product_ship", "FALSE").trim().toUpperCase().equalsIgnoreCase("TRUE"));
for (boolean bool = false; ; bool = true)
{
IS_DEBUG = bool;
cpuCode = SystemProperties.get("ro.baseband", "NONE").trim().toUpperCase();
cpuPreCode = SystemProperties.get("ro.product.board", "NONE").trim().toUpperCase();
model = SystemProperties.get("ro.product.model", "NONE").trim().toUpperCase();
gsmsimcode = SystemProperties.get("gsm.sim.operator.alpha", "NONE").trim().toUpperCase();
checkMsl = "";
return;
}
}
private boolean checkHiddenMenuEnable()
{
if (new File(this.HIDDENMENU_ENABLE_PATH).exists())
try
{
String str = read(this.HIDDENMENU_ENABLE_PATH);
if (str.equals("ON"))
return true;
boolean bool = str.equals("OFF");
if (bool)
return false;
}
catch (Exception localException)
{
Log.i("HiddenMenu", "Exception in reading file");
}
return false;
}
private static boolean isJigOn()
{
if (new File("/sys/class/sec/switch/adc").exists())
{
String str = readOneLine("/sys/class/sec/switch/adc");
if (IS_DEBUG)
Log.d("HiddenMenu", "JIG: 28");
if (IS_DEBUG)
Log.d("HiddenMenu", "JIG value: " + str);
try
{
if (Integer.parseInt(str, 16) == 28)
{
if (!IS_DEBUG)
break label160;
Log.d("HiddenMenu", "JIG ON");
break label160;
}
boolean bool4 = IS_DEBUG;
bool2 = false;
if (!bool4)
break label162;
Log.d("HiddenMenu", "Wrong value");
return false;
}
catch (Exception localException)
{
boolean bool3 = IS_DEBUG;
bool2 = false;
if (!bool3)
break label162;
}
Log.d("HiddenMenu", "value has unknown");
return false;
}
else
{
boolean bool1 = IS_DEBUG;
bool2 = false;
if (!bool1)
break label162;
Log.d("HiddenMenu", "File Does not Exist!");
return false;
}
label160: boolean bool2 = true;
label162: return bool2;
}
// ERROR //
public static String read(String paramString)
{
// <snip byte code>
// Exception table:
// from to target type
// 67 71 100 java/io/IOException
// 27 43 118 java/lang/Exception
// 140 144 150 java/io/IOException
// 27 43 171 finally
// 120 133 171 finally
// 177 181 184 java/io/IOException
// 50 59 202 finally
// 50 59 209 java/lang/Exception
}
// ERROR //
private static String readOneLine(String paramString)
{
// <snip byte code>
// Exception table:
// from to target type
// 51 56 73 java/io/IOException
// 61 66 73 java/io/IOException
// 7 17 91 java/io/FileNotFoundException
// 110 114 125 java/io/IOException
// 118 122 125 java/io/IOException
// 7 17 143 java/io/IOException
// 162 166 177 java/io/IOException
// 170 174 177 java/io/IOException
// 7 17 195 finally
// 93 106 195 finally
// 145 158 195 finally
// 201 205 216 java/io/IOException
// 209 213 216 java/io/IOException
// 17 31 239 finally
// 36 43 249 finally
// 17 31 260 java/io/IOException
// 36 43 270 java/io/IOException
// 17 31 281 java/io/FileNotFoundException
// 36 43 291 java/io/FileNotFoundException
}
public void onReceive(Context paramContext, Intent paramIntent)
{
Log.i("HiddenMenu", "intent " + paramIntent);
UsbManager localUsbManager = (UsbManager)paramContext.getSystemService("usb");
label162: if (paramIntent.getAction().equals("com.samsung.sec.android.application.csc.chameleon_diag"))
{
String str6 = paramIntent.getStringExtra("String");
Log.i("HiddenMenu", "value is " + str6);
SharedPreferences.Editor localEditor = paramContext.getSharedPreferences("hidden.diagMSLReq.preferences_name", 0).edit();
localEditor.putString("HIDDEN_DIAGMSLREQ", str6);
localEditor.commit();
SharedPreferences localSharedPreferences = paramContext.getSharedPreferences("hidden.diagMSLReq.preferences_name", 0);
Log.i("HiddenMenu", " Hidden menu diagMSLReq - " + localSharedPreferences.getString("HIDDEN_DIAGMSLREQ", "none"));
break label162;
}
Intent localIntent1;
String str1;
String str2;
label309: int i;
while (true)
{
return;
if (paramIntent.getAction().equals("android.provider.Telephony.SECRET_CODE"))
{
localIntent1 = new Intent("android.intent.action.MAIN");
localIntent1.putExtra(CheckHiddenMenu.permissionKey, CheckHiddenMenu.permission);
str1 = paramIntent.getStringExtra("String");
str2 = paramIntent.getData().getHost();
Log.i("HiddenMenu", "intenton " + paramIntent);
Log.i("HiddenMenu", "host is " + str2);
boolean bool4;
label401: int k;
if ("VZW".equalsIgnoreCase(mSalesCode))
{
bool4 = checkHiddenMenuEnable();
if ("DMMODE".equals(str2))
localIntent1.setClass(paramContext, DmMode.class);
}
else
{
if (((mSalesCode.equals("VZW")) || (mSalesCode.equals("USC")) || (mSalesCode.equals("MTR")) || (mSalesCode.equals("XAR"))) && (SystemProperties.get("ro.build.type", "user").trim().equals("user")))
{
if (!"VZW".equals(mSalesCode))
break label725;
if (str2.equals("HIDDENMENUENABLE"))
break;
}
if (str2.equals("4433366335623"))
k = Settings.System.getInt(paramContext.getContentResolver(), "wifi_offload_monitoring", 0);
}
try
{
ContentResolver localContentResolver = paramContext.getContentResolver();
if (k == 0);
for (int m = 1; ; m = 0)
{
Settings.System.putInt(localContentResolver, "wifi_offload_monitoring", m);
if (!str2.equals("DATA"))
break label805;
localIntent1.setClass(paramContext, hdata_options.class);
i = 1;
label474: if (i == 1)
{
localIntent1.setFlags(268435456);
paramContext.startActivity(localIntent1);
}
if (!str2.equals("MSL_OTKSL"))
break;
if ((!str1.equals("433346")) || (!mSalesCode.equalsIgnoreCase("VZW")))
break label3043;
Log.i("HiddenMenu", "enter MSK_OTKSL iot" + str1);
localIntent1.setFlags(268435456);
localIntent1.setClass(paramContext, IOTHiddenMenu.class);
paramContext.startActivity(localIntent1);
return;
if ("setDMMODEMADB".equals(str2))
{
Log.i("HiddenMenu", "Change USB Setting to DM + MODEM + ADB");
localUsbManager.setCurrentFunction("diag,acm,adb", true);
return;
}
if ("setMASSSTORAGE".equals(str2))
{
Log.i("HiddenMenu", "Change USB Setting to setMASSSTORAGE");
localUsbManager.setCurrentFunction("mass_storage", true);
return;
}
if ((!SystemProperties.get("ro.build.type", "user").trim().equals("user")) || (bool4) || ((isJigOn()) && ((str2.equals("TESTMODE")) || (str2.equals("RTN")))))
break label309;
Log.i("HiddenMenu", "is Jig On " + isJigOn());
return;
label725: if (str2.equals("HIDDENMENUENABLE"))
{
localIntent1.setClass(paramContext, HiddenMenuEnable.class);
break label401;
}
if (SystemProperties.get("sys.hiddenmenu.enable", "0").equals("1"))
break label401;
return;
}
}
catch (Exception localException)
{
while (true)
{
Log.e("HiddenMenu", "Error setWifioffloadDebugMode " + localException);
continue;
label805: if (str2.equals("PROGRAM"))
{
localIntent1.setClass(paramContext, ProgramMenu.class);
i = 1;
}
else if (str2.equals("MEID"))
{
String str5 = paramContext.getSharedPreferences("hidden.diagMSLReq.preferences_name", 0).getString("HIDDEN_DIAGMSLREQ", "none");
Log.i("HiddenMenu", "MEID diag Falg" + str5);
i = 0;
if (str5 != null)
{
boolean bool3 = "none".equalsIgnoreCase(str5);
i = 0;
if (!bool3)
{
Intent localIntent2 = new Intent("android.intent.action.MAIN");
localIntent2.setFlags(268435456);
localIntent2.setClass(paramContext, MEIDInfo.class).putExtra(CheckHiddenMenu.permissionKey, CheckHiddenMenu.permission);
paramContext.startActivity(localIntent2);
i = 0;
}
}
}
else if (str2.equals("RTN"))
{
String str4 = paramContext.getSharedPreferences("hidden.diagMSLReq.preferences_name", 0).getString("HIDDEN_DIAGMSLREQ", "none");
localIntent1.setClass(paramContext, RTN.class).putExtra("DIAGFLAG", str4);
i = 1;
}
else if ((str2.equals("CTN")) && ("SCH-I925U".equalsIgnoreCase(model)))
{
localIntent1.setClass(paramContext, CTN.class).putExtra("keyString", str2);
i = 1;
}
else if (str2.equals("LOG"))
{
localIntent1.setClassName("com.sec.android.app.servicemodeapp", "com.sec.android.app.servicemodeapp.SysDump");
i = 1;
}
else if (str2.equals("DEBUG"))
{
if ("SCH-S960L".equalsIgnoreCase(model))
{
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", str2);
i = 1;
}
else if (!mSalesCode.equalsIgnoreCase("VZW"))
{
localIntent1.setClass(paramContext, DebugMenu_Check.class).putExtra("keyString", str2);
i = 1;
}
else
{
localIntent1.setClass(paramContext, DEBUGMENU.class);
i = 1;
}
}
else if (str2.equals("PROG"))
{
localIntent1.setClass(paramContext, TelesPree_Option.class);
i = 1;
}
else if (str2.equals("IOTHIDDENMENU"))
{
localIntent1.setClass(paramContext, IOTHiddenMenu.class);
i = 1;
}
else if (str2.equals("TESTMODE"))
{
Log.i("HiddenMenu", "gsm sim code is" + gsmsimcode + "#" + gsmsimcode.trim() + "#");
if (((mSalesCode.equals("SPR")) || (mSalesCode.equals("VMU"))) && ((gsmsimcode.replaceAll(" ", "").equalsIgnoreCase("BOOSTMOBILE")) || (gsmsimcode.equalsIgnoreCase("VIRGIN"))))
{
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", str2);
i = 1;
}
else if (cpuPreCode.equalsIgnoreCase("MSM7630_SURF"))
{
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", "TESTMODE");
i = 1;
}
else if ((cpuCode.equals("MSM")) || (cpuCode.equalsIgnoreCase("mdm")))
{
Log.i("HiddenMenu", str2);
localIntent1.setClass(paramContext, ServiceModeApp.class).putExtra("keyString", "TESTMODE");
i = 1;
}
else
{
localIntent1.setClass(paramContext, TerminalMode.class).putExtra("keyString", "TESTMODE");
i = 1;
}
}
else if (str2.equals("NAMBASIC"))
{
localIntent1.setClass(paramContext, MSL_option.class);
i = 1;
}
else if (str2.equals("GPSCLRX"))
{
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", str2);
i = 1;
}
else if (str2.equals("SCRTN"))
{
localIntent1.setClass(paramContext, SCRTN.class);
i = 1;
}
else
{
if (!str2.equals("TTY"))
break;
localIntent1.setClass(paramContext, TTY.class);
i = 1;
}
}
if (!str2.equals("PUTIL"))
break label2374;
}
}
}
if (!PhoneUtilSupport.canLaunchUsb());
for (int j = 0; ; j = 1)
{
String str3 = paramContext.getSharedPreferences("hidden.diagMSLReq.preferences_name", 0).getString("HIDDEN_DIAGMSLREQ", "none");
if ("SPH-L720".equalsIgnoreCase(model))
if ("0".equals(str3))
localIntent1.setClass(paramContext, PhoneUtil_Jspr.class);
while (true)
{
i = j;
break;
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", "PhoneUtil_JSPR");
continue;
if ((("BST".equalsIgnoreCase(mSalesCode)) || ("XAS".equalsIgnoreCase(mSalesCode)) || ("mdm".equalsIgnoreCase(cpuCode))) && (!"SPH-D710BST".equalsIgnoreCase(model)))
{
Log.i("HiddenMenu", "For prevail 2 code");
Log.i("HiddenMenu", "diagReq : " + str3);
if ("XAS".equalsIgnoreCase(mSalesCode))
{
if (("SPH-L900".equalsIgnoreCase(model)) || ("SPH-P600".equalsIgnoreCase(model)))
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", "PhoneUtil_Prevail2SPR");
else if ("SPH-L300".equalsIgnoreCase(model))
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", "PhoneUtil_VMU");
else if (("SPH-L500".equalsIgnoreCase(model)) || ("SPH-L720".equalsIgnoreCase(model)))
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", "PhoneUtil_VMU");
else if ((str3.equals("0")) || (str3.equals("none")))
localIntent1.setClass(paramContext, PhoneUtil_Prevail2SPR.class);
else
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", "PhoneUtil_Prevail2SPR");
}
else if ("mdm".equalsIgnoreCase(cpuCode))
{
if ((str3.equals("0")) || (str3.equals("none")))
localIntent1.setClass(paramContext, PhoneUtil.class);
else
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", "PhoneUtil");
}
else
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", "PhoneUtil_Prevail2SPR");
}
else if ("SCH-S960L".equalsIgnoreCase(model))
{
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", str2);
}
else if (("SPH-D710".equalsIgnoreCase(model)) || ("SPH-D710VMUB".equalsIgnoreCase(model)) || ("SPH-D710BST".equalsIgnoreCase(model)) || ("SCH-R760U".equalsIgnoreCase(model)))
{
if (("SPH-D710BST".equalsIgnoreCase(model)) || ("SPH-D710VMUB".equalsIgnoreCase(model)))
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", str2).putExtra("keyString", str2);
else
localIntent1.setClass(paramContext, PhoneUtil_Gaudi.class);
}
else if ("VMU".equalsIgnoreCase(mSalesCode))
{
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", str2).putExtra("keyString", "PhoneUtil_VMU");
}
else if ((cpuCode.equalsIgnoreCase("MSM")) || ("SPR".equalsIgnoreCase(mSalesCode)))
{
if ("SPH-L500".equalsIgnoreCase(model))
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", str2).putExtra("keyString", "PhoneUtil_VMU");
else
localIntent1.setClass(paramContext, PhoneUtil.class);
}
else
{
localIntent1.setClass(paramContext, PhoneUtil_C1vzw.class);
}
}
label2374: if (str2.equals("AKEY"))
{
if ((cpuCode.equals("MSM")) || (cpuCode.equalsIgnoreCase("mdm")))
{
localIntent1.setClass(paramContext, AKEY2.class);
i = 1;
break label474;
}
localIntent1.setClass(paramContext, AKEY2_via.class);
i = 1;
break label474;
}
if (str2.equals("DNSSET"))
{
localIntent1.setClass(paramContext, DNS_Set.class);
i = 1;
break label474;
}
if (str2.equals("DSA"))
{
localIntent1.setClass(paramContext, DSA_Edit.class);
i = 1;
break label474;
}
if (str2.equals("OTATEST"))
{
localIntent1.setClass(paramContext, OTATest.class);
i = 1;
break label474;
}
if (str2.equals("LTEMODE"))
{
localIntent1.setClass(paramContext, LTEMode.class);
i = 1;
break label474;
}
if (str2.equals("CLEAR"))
{
if (("SPR".equalsIgnoreCase(mSalesCode)) || ("SPH-L300".equalsIgnoreCase(model)))
break;
if (!mSalesCode.equalsIgnoreCase("VZW"))
{
localIntent1.setClass(paramContext, DebugMenu_Check.class).putExtra("keyString", str2);
i = 1;
break label474;
}
localIntent1.setClass(paramContext, CLEAR_Reset.class);
i = 1;
break label474;
}
if (str2.equals("setMTP"))
{
Log.i("HiddenMenu", "Change USB Setting to MTP");
localUsbManager.setCurrentFunction("mtp", true);
return;
}
if (str2.equals("setMTPADB"))
{
Log.i("HiddenMenu", "Change USB Setting to MTP + ADB");
localUsbManager.setCurrentFunction("mtp,adb", true);
return;
}
if (str2.equals("setPTP"))
{
Log.i("HiddenMenu", "Change USB Setting to PTP");
localUsbManager.setCurrentFunction("ptp", false);
return;
}
if (str2.equals("setPTPADB"))
{
Log.i("HiddenMenu", "Change USB Setting to RNDIS + ADB");
localUsbManager.setCurrentFunction("ptp,adb", false);
return;
}
if (str2.equals("setRNDISDMMODEM"))
{
Log.i("HiddenMenu", "Change USB Setting to RNDIS + DM + MODEM");
localUsbManager.setCurrentFunction("rndis,acm,diag", true);
return;
}
if (str2.equals("setMASSSTORAGEADB"))
{
Log.i("HiddenMenu", "Change USB Setting to setMASSSTORAGEADB");
localUsbManager.setCurrentFunction("mass_storage,adb", true);
return;
}
if (str2.equals("setMASSSTORAGE"))
{
Log.i("HiddenMenu", "Change USB Setting to setMASSSTORAGE");
localUsbManager.setCurrentFunction("mass_storage", true);
return;
}
if (str2.equals("setRMNETDMMODEM"))
{
Log.i("HiddenMenu", "Change USB Setting to RMNET + DM + MODEM");
localUsbManager.setCurrentFunction("rmnet,acm,diag", true);
return;
}
if (str2.equals("setDMMODEMADB"))
{
Log.i("HiddenMenu", "Change USB Setting to DM + MODEM + ADB");
localUsbManager.setCurrentFunction("diag,acm,adb", true);
return;
}
if ((str2.equals("HIDDENMENUENABLE")) && (SystemProperties.get("ro.build.type", "user").trim().equals("user")))
{
if ("SCH-S960L".equalsIgnoreCase(model))
{
localIntent1.setClass(paramContext, MSL_Checker.class).putExtra("keyString", str2);
i = 1;
break label474;
}
localIntent1.setClass(paramContext, HiddenMenuEnable.class);
i = 1;
break label474;
}
boolean bool1 = str2.equals("DMMODE");
i = 0;
if (!bool1)
break label474;
boolean bool2 = mSalesCode.equals("VZW");
i = 0;
if (!bool2)
break label474;
localIntent1.setClass(paramContext, DmMode.class);
i = 1;
break label474;
label3043: Log.i("HiddenMenu", "enter MSK_OTKSL " + str1);
localIntent1.setClass(paramContext, MSL_Service.class).putExtra("String", str1);
Log.i("HiddenMenu", "set intent : " + localIntent1);
paramContext.startService(localIntent1);
return;
}
}
}
Unfortunately there doesn't seem to be an entry for adjusting the sound. The 9505 still misses the function
Sent from my GT-I9505
Is there anyway of checking if your phone is simlocked? On the gs2 you could dial *#SIMLOCK# and if would display [Off] beside a list of text.
Sent from my GT-I9505 using xda app-developers app
@nanoy009 I had this problem too. The easiest you can make (and what I have also done) is pull the battery out and wait a few seconds. And then turn your device on and your battery is okay and shows you the current status.
Sent from my SGH-M919 (in reality an I9505 ) using xda app-developers app
any code to update camera firmware:thumbup:
Sent from my GT-I9505 using xda premium
Here's a list that I've compiled so far, I don't test ones that say clear on them though so I could of missed a few.
*#06# IMEI
*#0*# LCD Test?
*#1234# Version
*#12580*369# Main Version
*#0228# BatteryStatus
*#0011# ServiceMode
*#0283# Loobback Test
*#03# NandFlashHeaderRead
*#0808# USBSettings
*#9090# ServiceMode
*#7284# FactoryKeystring
*#34971539# CameraFirmware Standard
*#1111# ServiceMode
*#9900# SysDump
*#7353# Quick Test Menu?
I'm looking for Engineering Mode...
That's the one I want, it doesn't matter to me if there is no code for it or not, I'm rooted and have a terminal installed, whatever needs to be done...
NEOAethyr said:
Here's a list that I've compiled so far, I don't test ones that say clear on them though so I could of missed a few.
*#06# IMEI
*#0*# LCD Test?
*#1234# Version
*#12580*369# Main Version
*#0228# BatteryStatus
*#0011# ServiceMode
*#0283# Loobback Test
*#03# NandFlashHeaderRead
*#0808# USBSettings
*#9090# ServiceMode
*#7284# FactoryKeystring
*#34971539# CameraFirmware Standard
*#1111# ServiceMode
*#9900# SysDump
*#7353# Quick Test Menu?
I'm looking for Engineering Mode...
That's the one I want, it doesn't matter to me if there is no code for it or not, I'm rooted and have a terminal installed, whatever needs to be done...
Click to expand...
Click to collapse
:good:
Thanks guys
Sent from my GT-I9505 using xda premium
is there any secret code that I can enter to choose what LTE band I wanted to connect only? e.h 1800 or 2600
Disclaimer
First off all, thanks to showp1984 for his original sweep2wake, based on which, this has been made.
I am a newbie in linux kernel programming, I did spend considerable amount of time, working with others to know about how touch input works. In many places, code will be useless, or there may be better way of implementation. Based on my understanding, I coded this.
This was originally made for a specific device, so I will try to explain wherever possible, so that it becomes easier for someone to implement in case they are interested.
This post does not show how to add hooks in touch panel driver and display driver.
Gestures Available
Swipe Left
Swipe Right
Swipe Up
Swipe Down
Swipe Forward Diagonally
Swipe Backward Diagonally
Draw 'L'
Draw 'V'
Commits
Initial Commit - https://github.com/corphish/android_kernel_sony_msm8930_lp/commit/dae03796da1f8ce97ed41c1b150b18741ac75f24 (Please read the extended description, as I have explained there what I have done)
Fixes - https://github.com/corphish/android_kernel_sony_msm8930_lp/commit/73562680a73956af105bffc0f2d1e7815a375677
Walkthrough
First off all I modified detect_sweep2wake function.
Code:
static bool detect_sweep2wake(int x, int y, int id)
{
key = KEY_POWER;
if (id == 255 && s2w_touch_count > 10) {
int x = s2w_coord_nature();
if(x) {
if(x == 1) {
if(s2w_right) {
s2w_coord_reset();
doubletap2wake_reset();
return true;
}
}
if(x == 2) {
if(s2w_left){
s2w_coord_reset();
doubletap2wake_reset();
return true;
}
}
if(x == 3) {
if(s2w_up){
s2w_coord_reset();
doubletap2wake_reset();
return true;
}
}
if(x == 4) {
if(s2w_down){
s2w_coord_reset();
doubletap2wake_reset();
return true;
}
}
if(x == 5) {
if(s2w_fwd_diag){
s2w_coord_reset();
doubletap2wake_reset();
return true;
}
}
if(x == 6) {
if(s2w_bck_diag){
s2w_coord_reset();
doubletap2wake_reset();
return true;
}
}
if(x == 7) {
if(s2w_l){
s2w_coord_reset();
doubletap2wake_reset();
return true;
}
}
if(x == 8) {
if(s2w_v){
s2w_coord_reset();
doubletap2wake_reset();
return true;
}
}
//pr_info("%s returned true\n",__func__);
}
} else {
//doubletap2wake_reset();
s2w_coord_dump(x, y);
direction_vector_calc();
new_touch(x, y);
}
if (ktime_to_ms(ktime_get())-tap_time_pre > D2W_TIME){
s2w_coord_reset();
doubletap2wake_reset();
}
//pr_info("%s returned false\n",__func__);
return false;
}
It now takes id as parameters as well.
id here is the touch id which is returned when we lift off contact from touch.
Do note that for this device, the id returned when we lift off contact from touch is 255, it will be different for different devices.
What this new detect_sweep2wake fn does is, it tests whether the id returned is that id (touch id which is returned when we lift off contact from touch) and the touch count is greater than a specific number or not.
The specific touch count is used to detect continuous touches (swipes).
If true, it calls for gesture detection function, if true, returns true, if false returns false.
If false, it dumps co-ordinates. Co-ordinates are dumped to 2 variables (x,y) and previous data is stored in (x_prev,y_prev). The first values of touch (the touch co-ordinates on first touch) is stored separately as well.
Then direction_vector_calc is called, which tests the nature of co-ordinates with respect to the previous one.
Code:
void direction_vector_calc(void) {
int tot = 0;
if(s2w_coord_count > 1) {
if(x > x_pre) {
dir[0]++; //right
tot++;
} else if (x < x_pre) {
dir[1]++; //left
tot++;
}
if(y < y_pre) {
dir[2]++; //up
tot++;
} else if (y > y_pre) {
dir[3]++; //down
tot++;
}
//To determine whether both x and y co-ordinates have changed from previous input or not and act accordingly.
if(tot > 1)
multiple_dir++;
//To determine max deviation in x coord.
if(x > max_x)
max_x = x;
//To determine min deviation in x coord.
if(x < min_x)
min_x = x;
//To determine max deviation in y coord.
if(y > max_y)
max_y = y;
//To determine min deviation in y coord.
if(y < min_y)
min_y = y;
} else {
min_y = y;
min_x = x;
max_x = x;
max_y = y;
}
}
At times, there maybe cases that a co-ordinate differs from its previous co-ordinate by 2 directions. This functions take care of that too.
The readings are stored in an array an then tested by gesture detection logic.
The working of gesture_detection is explained in the extended description of this commit.
Code:
int s2w_coord_nature(void)
{
int i = 0;
pr_info("%s:Recieved count - %d\n",__func__,s2w_touch_count);
pr_info("%s:max_x-%d\n",__func__,max_x);
pr_info("%s:max_y-%d\n",__func__,max_y);
pr_info("%s:min_x-%d\n",__func__,min_x);
pr_info("%s:min_y-%d\n",__func__,min_y);
/*This function detects the nature of sweep input, and on the basis of following, it returns -
1 - sweep right
2 - sweep left
3 - sweep up
4 - sweep down*/
pr_info("%s:multiple_dir - %d\n",__func__,multiple_dir);
for(i = 0; i < 4; i++ )
pr_info("%s:dir[%d] - %d\n",__func__,i,dir[i]);
if (abs(x - x_first) > 150 && abs(y - y_first) < 50 && abs(max_y - y) < 50) {
if(dir[0] > s2w_touch_count/2) {
pr_info("%s:Sweep right\n",__func__);
return 1;
}
else if(dir[1] > s2w_touch_count/2) {
pr_info("%s:Sweep left\n",__func__);
return 2;
}
}
if (abs(y - y_first) > 150 && abs(x - x_first) < 50 && abs(max_x - x) < 50) {
if(dir[2] > s2w_touch_count/2) {
pr_info("%s:Sweep up\n",__func__);
return 3;
}
else if(dir[3] > s2w_touch_count/2) {
pr_info("%s:Sweep down\n",__func__);
return 4;
}
}
if(abs(x - x_first) > 100 && abs(y - y_first) > 100 && (multiple_dir == s2w_touch_count - 1)) {
if(x > x_first) {
pr_info("%s:Forward diagonal swipe!!\n",__func__);
return 5;
}//forward diagonal swipe!!
else if(x < x_first) {
pr_info("%s:Backward diagonal swipe!!\n",__func__);
return 6;
}//backward diagonal swipe!!
}
if(abs(x - x_first) > 100 && abs(y - y_first) > 100 && (multiple_dir < s2w_touch_count - 1) && dir[0] > s2w_touch_count/3 && dir[3] > s2w_touch_count/3) {
pr_info("%s:Draw 'L'\n",__func__);
return 7;
}
if(abs(x - x_first) > 80 && abs(y - y_first) < 50 && dir[2] > s2w_touch_count/3 && dir[3] > s2w_touch_count/3 && (multiple_dir < s2w_touch_count - 1)) {
pr_info("%s:Draw 'V'\n",__func__);
return 8;
}
s2w_coord_reset();
return 0;
}
If swipe matches any gesture, it returns corresponding value, else returns 0.
About toggling, I created separate files for each gesture. Also, to simplify things, I had added a master switch for these gestures.
I also made an app for this to control these toggles - Gesture Control 1.4
Credits
showp1984 - Without his works, this is just nothing.
thewisenerd - It is for this guy, I know what I know about touch panels.
Hey guys, I have a xtrons px5 mtcd head unit and I am trying to figure out without flashing to a custom ROM, how to edit what apps launch at wake, or do not turn off with the unit when it goes to sleep.
I believe it is the MTCManager that is doing these actions, and I have found two interesting parts of the decomplied code.
The first file is android/microntek/a.java
HTML:
package android.microntek;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.microntek.service.R;
import android.text.TextUtils;
import android.text.format.Formatter;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
import java.util.ArrayList;
public class a {
static String cp;
private static boolean cq = false;
static Context cr;
private static int cs = -1;
static Toast ct;
private static final String[] cu = new String[]{"android.microntek.", "com.murtas.", "com.microntek.", "com.goodocom.gocsdk", "android.rockchip.update.service", "com.android.systemui", "com.hct.obd.OBDActivity", "com.unisound", "com.dpadnavi.assist", "com.intel.thermal", "cn.manstep.phonemirror", "com.hiworld.", "com.carboy.launch", "com.android.bluetooth", "net.easyconn", "com.android.launcher", "com.google.android", "com.vayosoft.carsystem"};
static Object cv = new Object();
static a cw;
private static final String[] cx = new String[]{"android.microntek.", "com.murtas.", "com.microntek.", "com.goodocom.gocsdk", "android.rockchip.update.service", "com.android.systemui", "com.hct.obdservice.OBDService", "com.unisound", "com.intel.thermal", "com.dpadnavi.assist", "cn.manstep.phonemirror", "com.android.bluetooth", "com.hiworld.", "net.easyconn", "android.cn.ecar.cds.process.CoreService", "com.google.android", "com.vayosoft.carsystem"};
private a(Context context) {
cr = context;
}
private int ex(Context context) {
int i = 0;
Iterable<e> arrayList = new ArrayList();
ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
for (RunningAppProcessInfo runningAppProcessInfo : activityManager.getRunningAppProcesses()) {
int i2 = runningAppProcessInfo.pid;
int i3 = runningAppProcessInfo.uid;
String str = runningAppProcessInfo.processName;
int i4 = activityManager.getProcessMemoryInfo(new int[]{i2})[0].dalvikPrivateDirty;
e eVar = new e();
eVar.fy(i2);
eVar.fz(i3);
eVar.ga(i4);
eVar.gb(str);
eVar.dk = runningAppProcessInfo.pkgList;
arrayList.add(eVar);
String[] strArr = runningAppProcessInfo.pkgList;
}
for (e eVar2 : arrayList) {
int i5;
if (eVar2.gc() < 10000) {
i5 = i;
} else {
String gd = eVar2.gd();
if (gd.indexOf(".") == -1) {
i5 = i;
} else if (fe(gd) || ff(context, gd) || fg(context, gd)) {
i5 = i;
} else if (cs != 0 || fd(gd)) {
try {
activityManager.killBackgroundProcesses(gd);
i5 = i + 1;
} catch (Exception e) {
System.out.println(" deny the permission");
i5 = i;
}
} else {
ez(gd);
i5 = i + 1;
}
}
i = i5;
}
return i;
}
private void ey(Context context) {
Iterable<RunningServiceInfo> runningServices = ((ActivityManager) context.getSystemService("activity")).getRunningServices(100);
System.out.println(runningServices.size());
Iterable<b> arrayList = new ArrayList();
for (RunningServiceInfo runningServiceInfo : runningServices) {
int i = runningServiceInfo.pid;
int i2 = runningServiceInfo.uid;
String str = runningServiceInfo.process;
long j = runningServiceInfo.activeSince;
int i3 = runningServiceInfo.clientCount;
ComponentName componentName = runningServiceInfo.service;
String shortClassName = componentName.getShortClassName();
String packageName = componentName.getPackageName();
PackageManager packageManager = context.getPackageManager();
try {
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0);
b bVar = new b();
bVar.fh(applicationInfo.loadIcon(packageManager));
bVar.fi(applicationInfo.loadLabel(packageManager).toString());
bVar.fj(shortClassName);
bVar.fk(packageName);
Intent intent = new Intent();
intent.setComponent(componentName);
bVar.fl(intent);
bVar.fm(i);
bVar.fn(i2);
bVar.fo(str);
arrayList.add(bVar);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}
for (b bVar2 : arrayList) {
if (bVar2.fp() >= 10000) {
String fq = bVar2.fq();
if (!(fd(fq) || ff(context, fq) || fg(context, fq))) {
if (cs != 0 || fe(fq)) {
try {
context.stopService(bVar2.fr());
} catch (SecurityException e2) {
System.out.println(" deny the permission");
}
} else {
ez(fq);
}
}
}
}
}
private long fa(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
MemoryInfo memoryInfo = new MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
return memoryInfo.availMem;
}
public static a fc(Context context) {
a aVar;
synchronized (cv) {
if (cw == null) {
cw = new a(context);
}
cs = -1;
aVar = cw;
}
return aVar;
}
private boolean fd(String str) {
for (String startsWith : cx) {
if (str.startsWith(startsWith)) {
return true;
}
}
return cp != null && str.equals(cp);
}
private boolean fe(String str) {
for (String startsWith : cu) {
if (str.startsWith(startsWith)) {
return true;
}
}
return cp != null && str.equals(cp);
}
private boolean ff(Context context, String str) {
if (context == null || TextUtils.isEmpty(str)) {
return false;
}
for (InputMethodInfo packageName : ((InputMethodManager) context.getSystemService("input_method")).getInputMethodList()) {
if (str.equalsIgnoreCase(packageName.getPackageName())) {
return true;
}
}
return false;
}
private boolean fg(Context context, String str) {
try {
for (ResolveInfo resolveInfo : context.getPackageManager().queryIntentServices(new Intent("android.service.wallpaper.WallpaperService"), 128)) {
if (str.equalsIgnoreCase(resolveInfo.serviceInfo.packageName)) {
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public void ew(int i, String str) {
cs = i;
cq = true;
cp = str;
long fa = fa(cr);
ey(cr);
int ex = ex(cr);
long fa2 = fa(cr);
if (i == 1) {
fa = Math.abs(fa2 - fa);
CharSequence string = cr.getString(R.string.clear_message, new Object[]{Integer.valueOf(ex), Formatter.formatFileSize(cr, fa)});
if (ct == null) {
ct = Toast.makeText(cr, string, 0);
} else {
ct.cancel();
ct = Toast.makeText(cr, string, 1);
}
ct.show();
}
cq = false;
}
public void ez(String str) {
if (str != null && str.length() != 0) {
try {
((ActivityManager) cr.getSystemService("activity")).forceStopPackage(str);
} catch (SecurityException e) {
System.out.println(" deny the permission");
}
}
}
public boolean fb() {
return cq;
}
}
it appears as though it is listing which apps either stay awake on sleep, or launch at boot. Can anybody confirm this?
And in this file, it looks like it might be controlling the apps in the apploop, maybe...
file is android/microntek/c.java
HTML:
package android.microntek;
import android.microntek.service.R;
public class c {
public static final String[] dg = new String[]{"com.microntek.avin", "com.microntek.dvr", "com.microntek.dvd", "com.microntek.tv", "com.microntek.media", "com.microntek.music", "com.microntek.radio", "com.microntek.ipod", "com.microntek.btMusic", "com.microntek.bluetooth", "com.microntek.civxusb", "com.microntek.tv", "com.microntek.dvr"};
public static final String[] dh = new String[]{"com.microntek.avin", "com.microntek.dvr", "com.microntek.dvd", "com.microntek.tv", "com.microntek.media", "com.microntek.music", "com.microntek.radio", "com.microntek.ipod", "com.microntek.btMusic", "com.microntek.dvr"};
public static final String[] di = new String[]{"com.microntek.radio", "com.microntek.dvd", "com.microntek.music", "com.microntek.media", "com.microntek.ipod", "com.microntek.avin"};
public static final int[] dj = new int[]{R.string.music_style0, R.string.music_style1, R.string.music_style2, R.string.music_style3, R.string.music_style4, R.string.music_style5, R.string.music_style6};
}
Let me know what you guys think.
You are absolutely correct. Check out the thread on the Malaysk ROM for the PX5. A member, Nico84, is working with the same files. You guys may want to join forces on this.
Johan
Thanks for that, does that work on the Stock firmware, or only on Malaysk's Custom ROM?
Not sure, but I believe it will work on stock. Needs to be rooted I suppose. Contact Nico84 for details, I am not an experienced Android developer.
I did, thanks for the lead on that, exactly what I was looking for. It looks like it should work on stock firmware so ill probably give it a try
So I took Nico84's MTCManager and tried to decompile and add spotify and accuweather to it, and recompile it. But then the actualy MTCManager did not work, so not sure what I did wrong.
semaj4712 said:
So I took Nico84's MTCManager and tried to decompile and add spotify and accuweather to it, and recompile it. But then the actualy MTCManager did not work, so not sure what I did wrong.
Click to expand...
Click to collapse
You have to compile it with original signature, not testkeys. You can use "tickle my android"
Bummer, tickle my android does not seem to work on mac which is all I have, is there any other way to compile with original signature with apktools? Or would it be possible to make me a version that allows spotify and accuweather to remain open, that would be great.
Ok so I found the documentation on signatures for the APKtool, but it still didnt work. Just to be clear I started this command
Code:
apktool d MTCManager.apk
then I made the changes to the smali.d file, and then recompiled with this command
Code:
apktool b MTCManager/ -c
Is there something I am doing wrong? (The location of files is not exact, bare in mind I am doing this on a mac via terminal so I simply drag and drop the file which returns the path it needs.)
On second try I was able to get this to work. The above commands worked perfectly, my guess is I messed something up the first time around.
For PX3:
when the unit comes back from sleep it sends Intent com.cayboy.action.ACC_ON
when it goes to sleep it sends com.cayboy.action.ACC_OFF