// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
package com.openvehicles.OVMS;
import android.app.*;
import android.content.*;
import android.content.res.Resources;
import android.os.*;
import android.util.Base64;
import android.util.Log;
import android.view.*;
import android.widget.TabHost;
import java.io.*;
import java.math.BigInteger;
import java.net.*;
import java.util.*;
import javax.crypto.Cipher;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
// Referenced classes of package com.openvehicles.OVMS:
// CarData, TabInfo, TabCar, TabMap,
// TabNotifications, TabCars, OVMSNotifications
public class OVMSActivity extends TabActivity
implements android.widget.TabHost.OnTabChangeListener
{
private class TCPTask extends AsyncTask
{
private void ConnInit()
{
String s;
String s1;
String s2;
byte abyte0[];
s = carData.CarPass;
s1 = carData.VehicleID;
char ac[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
Random random = new Random();
s2 = "";
for(int i = 0; i < 22; i++)
s2 = (new StringBuilder()).append(s2).append(ac[random.nextInt(-1 + ac.length)]).toString();
abyte0 = s2.getBytes();
Mac mac;
mac = Mac.getInstance("HmacMD5");
SecretKeySpec secretkeyspec = new SecretKeySpec(s.getBytes(), "HmacMD5");
mac.init(secretkeyspec);
String s3 = Base64.encodeToString(mac.doFinal(abyte0), 2);
Sock = new Socket(carData.ServerNameOrIP, 6867);
Outputstream = new PrintWriter(new BufferedWriter(new OutputStreamWriter(Sock.getOutputStream())), true);
Object aobj[] = new Object[3];
aobj[0] = s2;
aobj[1] = s3;
aobj[2] = s1;
Log.d("OVMS", String.format("TX: MP-A 0 %s %s %s", aobj));
PrintWriter printwriter = Outputstream;
Object aobj1[] = new Object[3];
aobj1[0] = s2;
aobj1[1] = s3;
aobj1[2] = s1;
printwriter.println(String.format("MP-A 0 %s %s %s", aobj1));
Inputstream = new BufferedReader(new InputStreamReader(Sock.getInputStream()));
String as[];
Object aobj2[];
String s4;
byte abyte1[];
byte abyte2[];
String s5;
byte abyte3[];
Object aobj3[];
Cipher cipher;
SecretKeySpec secretkeyspec1;
Cipher cipher1;
SecretKeySpec secretkeyspec2;
String s6;
try
{
as = Inputstream.readLine().trim().split("[ ]+");
}
catch(Exception exception1)
{
if(!SuppressServerErrorDialog)
notifyServerSocketError(exception1);
break MISSING_BLOCK_LABEL_794;
}
UnknownHostException unknownhostexception;
aobj2 = new Object[4];
aobj2[0] = as[0];
aobj2[1] = as[1];
aobj2[2] = as[2];
aobj2[3] = as[3];
Log.d("OVMS", String.format("RX: %s %s %s %s", aobj2));
s4 = as[2];
abyte1 = s4.getBytes();
abyte2 = Base64.decode(as[3], 0);
if(!Arrays.equals(mac.doFinal(abyte1), abyte2))
{
Object aobj5[] = new Object[2];
aobj5[0] = Base64.encodeToString(mac.doFinal(as[2].getBytes()), 2);
aobj5[1] = as[3];
Log.d("OVMS", String.format("Server authentication failed. Expected %s Got %s", aobj5));
} else
{
Log.d("OVMS", "Server authentication OK.");
}
s5 = (new StringBuilder()).append(s4).append(s2).toString();
abyte3 = mac.doFinal(s5.getBytes());
aobj3 = new Object[3];
aobj3[0] = s5;
aobj3[1] = toHex(abyte3).toLowerCase();
aobj3[2] = Base64.encodeToString(abyte3, 2);
Log.d("OVMS", String.format("Client version of the shared key is %s - (%s) %s", aobj3));
rxcipher = Cipher.getInstance("RC4");
cipher = rxcipher;
secretkeyspec1 = new SecretKeySpec(abyte3, "RC4");
cipher.init(2, secretkeyspec1);
txcipher = Cipher.getInstance("RC4");
cipher1 = txcipher;
secretkeyspec2 = new SecretKeySpec(abyte3, "RC4");
cipher1.init(1, secretkeyspec2);
s6 = "";
for(int j = 0; j < 1024; j++)
s6 = (new StringBuilder()).append(s6).append("0").toString();
try
{
rxcipher.update(s6.getBytes());
txcipher.update(s6.getBytes());
Object aobj4[] = new Object[1];
aobj4[0] = carData.ServerNameOrIP;
Log.d("OVMS", String.format("Connected to %s. Ciphers initialized. Listening...", aobj4));
loginComplete();
}
// Misplaced declaration of an exception variable
catch(UnknownHostException unknownhostexception)
{
notifyServerSocketError(unknownhostexception);
unknownhostexception.printStackTrace();
}
catch(IOException ioexception)
{
notifyServerSocketError(ioexception);
ioexception.printStackTrace();
}
catch(NullPointerException nullpointerexception)
{
nullpointerexception.printStackTrace();
}
catch(Exception exception)
{
exception.printStackTrace();
}
}
private void HandleMessage(String s)
{
char c;
String s1;
c = s.charAt(0);
s1 = s.substring(1);
if(c != 'E') goto _L2; else goto _L1
_L1:
char c1 = s.charAt(1);
if(c1 != 'T') goto _L4; else goto _L3
_L3:
Log.d("TCP", (new StringBuilder()).append("ET MSG Received: ").append(s).toString());
try
{
String s4 = s.substring(2);
Mac mac = Mac.getInstance("HmacMD5");
mac.init(new SecretKeySpec(carData.UserPass.getBytes(), "HmacMD5"));
pmDigest = mac.doFinal(s4.getBytes());
Log.d("OVMS", "Paranoid Mode Token Accepted. Entering Privacy Mode.");
}
catch(Exception exception1)
{
Log.d("ERR", exception1.getMessage());
exception1.printStackTrace();
}
_L2:
Log.d("TCP", (new StringBuilder()).append(c).append(" MSG Received: ").append(s1).toString());
c;
JVM INSTR lookupswitch 9: default 236
// 68: 828
// 70: 1293
// 76: 764
// 83: 499
// 84: 690
// 87: 1418
// 90: 478
// 97: 1569
// 102: 1368;
goto _L5 _L6 _L7 _L8 _L9 _L10 _L11 _L12 _L13 _L14
_L5:
break; /* Loop/switch isn't completed */
_L13:
break MISSING_BLOCK_LABEL_1569;
_L17:
return;
_L4:
if(c1 != 'M') goto _L2; else goto _L15
_L15:
byte abyte0[];
Log.d("TCP", (new StringBuilder()).append("EM MSG Received: ").append(s).toString());
c = s.charAt(2);
s1 = s.substring(3);
abyte0 = Base64.decode(s1, 2);
String s3;
pmcipher = Cipher.getInstance("RC4");
pmcipher.init(2, new SecretKeySpec(pmDigest, "RC4"));
String s2 = "";
for(int l = 0; l < 1024; l++)
s2 = (new StringBuilder()).append(s2).append("0").toString();
pmcipher.update(s2.getBytes());
s3 = new String(pmcipher.update(abyte0));
s1 = s3;
_L16:
if(!carData.ParanoidMode)
{
Log.d("OVMS", "Paranoid Mode Detected");
carData.ParanoidMode = true;
UpdateStatus();
}
goto _L2
Exception exception;
exception;
Log.d("ERR", exception.getMessage());
exception.printStackTrace();
goto _L16
_L12:
carData.Data_CarsConnected = Integer.parseInt(s1);
UpdateStatus();
goto _L17
_L9:
String as5[] = s1.split(",\\s*");
if(as5.length >= 8)
{
Log.d("TCP", "S MSG Validated");
carData.Data_SOC = Integer.parseInt(as5[0]);
carData.Data_DistanceUnit = as5[1].toString();
carData.Data_LineVoltage = Integer.parseInt(as5[2]);
carData.Data_ChargeCurrent = Integer.parseInt(as5[3]);
carData.Data_ChargeState = as5[4].toString();
carData.Data_ChargeMode = as5[5].toString();
carData.Data_IdealRange = Integer.parseInt(as5[6]);
carData.Data_EstimatedRange = Integer.parseInt(as5[7]);
}
Log.d("TCP", (new StringBuilder()).append("Notify Vehicle Status Update: ").append(carData.VehicleID).toString());
if(OVMSActivity.this != null)
UpdateStatus();
goto _L17
_L10:
if(s1.length() > 0)
{
carData.Data_LastCarUpdate = new Date((new Date()).getTime() - 1000L * Long.parseLong(s1));
carData.Data_LastCarUpdate_raw = Long.parseLong(s1);
UpdateStatus();
} else
{
Log.d("TCP", "T MSG Invalid");
}
goto _L17
_L8:
String as4[] = s1.split(",\\s*");
if(as4.length >= 2)
{
Log.d("TCP", "L MSG Validated");
carData.Data_Latitude = Double.parseDouble(as4[0]);
carData.Data_Longitude = Double.parseDouble(as4[1]);
UpdateStatus();
}
goto _L17
_L6:
String as3[] = s1.split(",\\s*");
if(as3.length >= 9)
{
Log.d("TCP", "D MSG Validated");
int i = Integer.parseInt(as3[0]);
CarData cardata = carData;
boolean flag;
CarData cardata1;
boolean flag1;
CarData cardata2;
boolean flag2;
CarData cardata3;
boolean flag3;
CarData cardata4;
boolean flag4;
CarData cardata5;
boolean flag5;
CarData cardata6;
boolean flag6;
int j;
CarData cardata7;
boolean flag7;
CarData cardata8;
boolean flag8;
int k;
CarData cardata9;
boolean flag9;
if((i & 1) == 1)
flag = true;
else
flag = false;
cardata.Data_LeftDoorOpen = flag;
cardata1 = carData;
if((i & 2) == 2)
flag1 = true;
else
flag1 = false;
cardata1.Data_RightDoorOpen = flag1;
cardata2 = carData;
if((i & 4) == 4)
flag2 = true;
else
flag2 = false;
cardata2.Data_ChargePortOpen = flag2;
cardata3 = carData;
if((i & 8) == 8)
flag3 = true;
else
flag3 = false;
cardata3.Data_PilotPresent = flag3;
cardata4 = carData;
if((i & 0x10) == 16)
flag4 = true;
else
flag4 = false;
cardata4.Data_Charging = flag4;
cardata5 = carData;
if((i & 0x40) == 64)
flag5 = true;
else
flag5 = false;
cardata5.Data_HandBrakeApplied = flag5;
cardata6 = carData;
if((i & 0x80) == 128)
flag6 = true;
else
flag6 = false;
cardata6.Data_CarPoweredON = flag6;
j = Integer.parseInt(as3[1]);
cardata7 = carData;
if((j & 0x40) == 64)
flag7 = true;
else
flag7 = false;
cardata7.Data_BonnetOpen = flag7;
cardata8 = carData;
if((j & 0x80) == 128)
flag8 = true;
else
flag8 = false;
cardata8.Data_TrunkOpen = flag8;
k = Integer.parseInt(as3[2]);
cardata9 = carData;
if(k == 4)
flag9 = true;
else
flag9 = false;
cardata9.Data_CarLocked = flag9;
carData.Data_TemperaturePEM = Double.parseDouble(as3[3]);
carData.Data_TemperatureMotor = Double.parseDouble(as3[4]);
carData.Data_TemperatureBattery = Double.parseDouble(as3[5]);
carData.Data_TripMeter = Double.parseDouble(as3[6]);
carData.Data_Odometer = Double.parseDouble(as3[7]);
carData.Data_Speed = Double.parseDouble(as3[8]);
UpdateStatus();
}
goto _L17
_L7:
String as2[] = s1.split(",\\s*");
if(as2.length >= 3)
{
Log.d("TCP", "F MSG Validated");
carData.Data_CarModuleFirmwareVersion = as2[0].toString();
carData.Data_VIN = as2[1].toString();
carData.Data_CarModuleGSMSignalLevel = as2[2].toString();
UpdateStatus();
}
_L14:
String as1[] = s1.split(",\\s*");
if(as1.length >= 1)
{
Log.d("TCP", "f MSG Validated");
carData.Data_OVMSServerFirmwareVersion = as1[0].toString();
UpdateStatus();
}
goto _L17
_L11:
String as[] = s1.split(",\\s*");
if(as.length >= 8)
{
Log.d("TCP", "W MSG Validated");
carData.Data_FRWheelPressure = Double.parseDouble(as[0]);
carData.Data_FRWheelTemperature = Double.parseDouble(as[1]);
carData.Data_RRWheelPressure = Double.parseDouble(as[2]);
carData.Data_RRWheelTemperature = Double.parseDouble(as[3]);
carData.Data_FLWheelPressure = Double.parseDouble(as[4]);
carData.Data_FLWheelTemperature = Double.parseDouble(as[5]);
carData.Data_RLWheelPressure = Double.parseDouble(as[6]);
carData.Data_RLWheelTemperature = Double.parseDouble(as[7]);
UpdateStatus();
}
goto _L17
Log.d("TCP", "Server acknowleged ping");
goto _L17
}
private String toHex(byte abyte0[])
{
BigInteger biginteger = new BigInteger(1, abyte0);
String s = (new StringBuilder()).append("%0").append(abyte0.length << 1).append("X").toString();
Object aobj[] = new Object[1];
aobj[0] = biginteger;
return String.format(s, aobj);
}
public void ConnClose()
{
if(Sock != null && Sock.isConnected())
Sock.close();
_L1:
return;
Exception exception;
exception;
exception.printStackTrace();
goto _L1
}
public void Ping()
{
Outputstream.println(Base64.encodeToString(txcipher.update("TX: MP-0 A".getBytes()), 2));
Log.d("OVMS", "TX: MP-0 A");
}
public boolean SendCommand(String s)
{
Log.d("OVMS", (new StringBuilder()).append("TX: ").append(s).toString());
boolean flag;
if(!isLoggedIn)
{
Log.d("OVMS", "Server not ready. TX aborted.");
flag = false;
} else
{
try
{
Outputstream.println(Base64.encodeToString(txcipher.update(s.getBytes()), 2));
}
catch(Exception exception)
{
notifyServerSocketError(exception);
}
flag = true;
}
return flag;
}
protected volatile Object doInBackground(Object aobj[])
{
return doInBackground((Void[])aobj);
}
protected transient Void doInBackground(Void avoid[])
{
ConnInit();
_L1:
if(!Sock.isConnected())
break MISSING_BLOCK_LABEL_154;
String s = Inputstream.readLine().trim();
String s1 = (new String(rxcipher.update(Base64.decode(s, 0)))).trim();
Object aobj[] = new Object[2];
aobj[0] = s1;
aobj[1] = s;
Log.d("OVMS", String.format("RX: %s (%s)", aobj));
if(!s1.substring(0, 5).equals("MP-0 "))
break MISSING_BLOCK_LABEL_124;
HandleMessage(s1.substring(5));
_L2:
try
{
Thread.sleep(100L, 0);
}
catch(InterruptedException interruptedexception) { }
goto _L1
Log.d("OVMS", "Unknown protection scheme");
goto _L2
SocketException socketexception;
socketexception;
Exception exception;
IOException ioexception;
try
{
Sock.close();
Sock = null;
}
catch(Exception exception1) { }
ConnInit();
return null;
ioexception;
if(!SuppressServerErrorDialog)
notifyServerSocketError(ioexception);
ioexception.printStackTrace();
continue; /* Loop/switch isn't completed */
exception;
exception.printStackTrace();
if(true) goto _L4; else goto _L3
_L3:
break MISSING_BLOCK_LABEL_189;
_L4:
break MISSING_BLOCK_LABEL_154;
}
protected transient void onProgressUpdate(Integer ainteger[])
{
}
protected volatile void onProgressUpdate(Object aobj[])
{
onProgressUpdate((Integer[])aobj);
}
private BufferedReader Inputstream;
private PrintWriter Outputstream;
public Socket Sock;
private CarData carData;
private byte pmDigest[];
private Cipher pmcipher;
private Cipher rxcipher;
final OVMSActivity this$0;
private Cipher txcipher;
public TCPTask(CarData cardata)
{
this$0 = OVMSActivity.this;
super();
carData = OVMSActivity.this.carData;
}
}
public OVMSActivity()
{
c2dmReportTimerHandler = new Handler();
pingServerTimerHandler = new Handler();
SuppressServerErrorDialog = false;
progressLogin = null;
progressLoginCloseDialog = new Runnable() {
public void run()
{
progressLogin.dismiss();
_L2:
return;
Exception exception;
exception;
if(true) goto _L2; else goto _L1
_L1:
}
final OVMSActivity this$0;
{
this$0 = OVMSActivity.this;
super();
}
}
;
progressLoginShowDialog = new Runnable() {
public void run()
{
progressLogin = ProgressDialog.show(OVMSActivity.this, "", "Connecting to OVMS Server...");
}
final OVMSActivity this$0;
{
this$0 = OVMSActivity.this;
super();
}
}
;
serverSocketErrorDialog = new Runnable() {
public void run()
{
if(!SuppressServerErrorDialog && (alertDialog == null || !alertDialog.isShowing()))
{
if(progressLogin != null)
progressLogin.hide();
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(OVMSActivity.this);
String s;
if(isLoggedIn)
s = String.format("OVMS Server Connection Lost", new Object[0]);
else
s = String.format("Please check the following:\n1. OVMS Server address\n2. Your vehicle ID and passwords", new Object[0]);
builder.setMessage(s).setTitle("Communications Problem").setCancelable(false).setPositiveButton("Open Settings", new android.content.DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int i)
{
getTabHost().setCurrentTabByTag("tabCars");
}
final _cls3 this$1;
{
this$1 = _cls3.this;
super();
}
}
);
alertDialog = builder.create();
alertDialog.show();
}
}
final OVMSActivity this$0;
{
this$0 = OVMSActivity.this;
super();
}
}
;
pingServer = new Runnable() {
public void run()
{
if(isLoggedIn)
{
Log.d("OVMS", "Pinging server...");
tcpTask.Ping();
}
pingServerTimerHandler.postDelayed(pingServer, 60000L);
}
final OVMSActivity this$0;
{
this$0 = OVMSActivity.this;
super();
}
}
;
reportC2DMRegistrationID = new Runnable() {
public void run()
{
if(tcpTask != null) goto _L2; else goto _L1
_L1:
return;
_L2:
SharedPreferences sharedpreferences = getSharedPreferences("C2DM", 0);
String s = sharedpreferences.getString("RegID", "");
String s1;
if(!sharedpreferences.contains("UUID"))
{
s1 = UUID.randomUUID().toString();
android.content.SharedPreferences.Editor editor = getSharedPreferences("C2DM", 0).edit();
editor.putString("UUID", s1);
editor.commit();
Log.d("OVMS", (new StringBuilder()).append("Generated New C2DM UUID: ").append(s1).toString());
} else
{
s1 = sharedpreferences.getString("UUID", "");
Log.d("OVMS", (new StringBuilder()).append("Loaded Saved C2DM UUID: ").append(s1).toString());
}
if(s.length() != 0)
{
TCPTask tcptask = tcpTask;
Object aobj[] = new Object[4];
aobj[0] = s1;
aobj[1] = carData.VehicleID;
aobj[2] = carData.CarPass;
aobj[3] = s;
if(tcptask.SendCommand(String.format("MP-0 p%s,c2dm,production,%s,%s,%s", aobj)))
continue; /* Loop/switch isn't completed */
}
Log.d("OVMS", "Reporting C2DM ID failed. Rescheduling.");
c2dmReportTimerHandler.postDelayed(reportC2DMRegistrationID, 5000L);
if(true) goto _L1; else goto _L3
_L3:
}
final OVMSActivity this$0;
{
this$0 = OVMSActivity.this;
super();
}
}
;
}
private void loadCars()
{
String s;
int i;
Log.d("OVMS", "Loading saved cars from internal storage file: OVMSSavedCars.obj");
ObjectInputStream objectinputstream = new ObjectInputStream(openFileInput("OVMSSavedCars.obj"));
allSavedCars = (ArrayList)objectinputstream.readObject();
objectinputstream.close();
s = getSharedPreferences("OVMS", 0).getString("LastVehicleID", "").trim();
if(s.length() == 0)
{
carData = (CarData)allSavedCars.get(0);
break MISSING_BLOCK_LABEL_312;
}
Object aobj[] = new Object[2];
aobj[0] = Integer.valueOf(allSavedCars.size());
aobj[1] = s;
Log.d("OVMS", String.format("Loaded %s cars. Last used car is ", aobj));
i = 0;
_L2:
if(i < allSavedCars.size())
{
if(!((CarData)allSavedCars.get(i)).VehicleID.equals(s))
break MISSING_BLOCK_LABEL_306;
carData = (CarData)allSavedCars.get(i);
}
if(carData == null)
carData = (CarData)allSavedCars.get(0);
break MISSING_BLOCK_LABEL_312;
Exception exception;
exception;
exception.printStackTrace();
Log.d("ERR", exception.getMessage());
Log.d("OVMS", "Invalid save file. Initializing with demo car.");
allSavedCars = new ArrayList();
CarData cardata = new CarData();
cardata.VehicleID = "DEMO";
cardata.CarPass = "DEMO";
cardata.UserPass = "DEMO";
cardata.ServerNameOrIP = "www.openvehicles.com";
cardata.VehicleImageDrawable = "car_models_signaturered";
allSavedCars.add(cardata);
carData = cardata;
saveCars();
break MISSING_BLOCK_LABEL_312;
i++;
if(true) goto _L2; else goto _L1
_L1:
}
private void loginComplete()
{
isLoggedIn = true;
runOnUiThread(progressLoginCloseDialog);
}
private void notifyServerSocketError(Exception exception)
{
lastServerException = exception;
runOnUiThread(serverSocketErrorDialog);
}
private void notifyTabUpdate(String s)
{
Log.d("Tab", (new StringBuilder()).append("Tab change to: ").append(s).toString());
if(s == "tabInfo")
((TabInfo)getLocalActivityManager().getActivity(s)).RefreshStatus(carData);
else
if(s == "tabCar")
{
Log.d("Tab", "Telling tabCar to update");
((TabCar)getLocalActivityManager().getActivity(s)).RefreshStatus(carData);
} else
if(s == "tabMap")
((TabMap)getLocalActivityManager().getActivity(s)).RefreshStatus(carData);
else
if(s == "tabNotifications")
((TabNotifications)getLocalActivityManager().getActivity(s)).Refresh();
else
if(s == "tabCars")
((TabCars)getLocalActivityManager().getActivity(s)).LoadCars(allSavedCars);
else
getTabHost().setCurrentTabByTag("tabInfo");
}
public void ChangeCar(CarData cardata)
{
runOnUiThread(progressLoginShowDialog);
Log.d("OVMS", (new StringBuilder()).append("Changed car to: ").append(cardata.VehicleID).toString());
isLoggedIn = false;
if(tcpTask != null)
{
Log.d("TCP", "Shutting down pervious TCP connection (ChangeCar())");
SuppressServerErrorDialog = true;
tcpTask.ConnClose();
tcpTask.cancel(true);
tcpTask = null;
SuppressServerErrorDialog = false;
}
carData = cardata;
cardata.ParanoidMode = false;
tcpTask = new TCPTask(carData);
Log.d("TCP", "Starting TCP Connection (ChangeCar())");
tcpTask.execute(new Void[0]);
getTabHost().setCurrentTabByTag("tabInfo");
UpdateStatus();
}
public void UpdateStatus()
{
Log.d("OVMS", "Status Update");
notifyTabUpdate(getLocalActivityManager().getCurrentId());
}
public void onCreate(Bundle bundle)
{
super.onCreate(bundle);
setContentView(0x7f030002);
loadCars();
String s = getSharedPreferences("C2DM", 0).getString("RegID", "");
TabHost tabhost;
Intent intent;
android.widget.TabHost.TabSpec tabspec;
Intent intent1;
android.widget.TabHost.TabSpec tabspec1;
Intent intent2;
android.widget.TabHost.TabSpec tabspec2;
Intent intent3;
android.widget.TabHost.TabSpec tabspec3;
Intent intent4;
android.widget.TabHost.TabSpec tabspec4;
if(s.length() == 0)
{
Log.d("C2DM", "Doing first time registration.");
ProgressDialog progressdialog = ProgressDialog.show(this, "Push Notification Network", "Sending one-time registration...");
Intent intent5 = new Intent("com.google.android.c2dm.intent.REGISTER");
intent5.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
intent5.putExtra("sender", "openvehicles@gmail.com");
startService(intent5);
progressdialog.dismiss();
c2dmReportTimerHandler.postDelayed(reportC2DMRegistrationID, 2000L);
} else
{
Log.d("C2DM", (new StringBuilder()).append("Loaded Saved C2DM registration ID: ").append(s).toString());
c2dmReportTimerHandler.postDelayed(reportC2DMRegistrationID, 2000L);
}
tabhost = getTabHost();
intent = (new Intent()).setClass(this, com/openvehicles/OVMS/TabInfo);
tabspec = tabhost.newTabSpec("tabInfo");
tabspec.setContent(intent);
tabspec.setIndicator("", getResources().getDrawable(0x1080041));
tabhost.addTab(tabspec);
intent1 = (new Intent()).setClass(this, com/openvehicles/OVMS/TabCar);
tabspec1 = tabhost.newTabSpec("tabCar");
tabspec1.setContent(intent1);
tabspec1.setIndicator("", getResources().getDrawable(0x1080049));
tabhost.addTab(tabspec1);
intent2 = (new Intent()).setClass(this, com/openvehicles/OVMS/TabMap);
tabspec2 = tabhost.newTabSpec("tabMap");
tabspec2.setContent(intent2);
tabspec2.setIndicator("", getResources().getDrawable(0x1080039));
tabhost.addTab(tabspec2);
intent3 = (new Intent()).setClass(this, com/openvehicles/OVMS/TabNotifications);
tabspec3 = tabhost.newTabSpec("tabNotifications");
tabspec3.setContent(intent3);
tabspec3.setIndicator("", getResources().getDrawable(0x1080034));
tabhost.addTab(tabspec3);
intent4 = (new Intent()).setClass(this, com/openvehicles/OVMS/TabCars);
tabspec4 = tabhost.newTabSpec("tabCars");
tabspec4.setContent(intent4);
tabspec4.setIndicator("", getResources().getDrawable(0x1080042));
tabhost.addTab(tabspec4);
getTabHost().setOnTabChangedListener(this);
if(tabhost.getCurrentTabTag() == "")
getTabHost().setCurrentTabByTag("tabInfo");
}
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(0x7f030003, menu);
return true;
}
protected void onDestory()
{
}
public void onNewIntent(Intent intent)
{
TabHost tabhost = getTabHost();
if(intent != null && intent.hasExtra("SetTab"))
tabhost.setCurrentTabByTag(intent.getStringExtra("SetTab"));
else
tabhost.setCurrentTabByTag("tabInfo");
}
public boolean onOptionsItemSelected(MenuItem menuitem)
{
boolean flag = true;
menuitem.getItemId();
JVM INSTR tableswitch 2131099659 2131099660: default 32
// 2131099659 40
// 2131099660 47;
goto _L1 _L2 _L3
_L1:
flag = super.onOptionsItemSelected(menuitem);
_L5:
return flag;
_L2:
finish();
continue; /* Loop/switch isn't completed */
_L3:
OVMSNotifications ovmsnotifications = new OVMSNotifications(this);
ovmsnotifications.Notifications = new ArrayList();
ovmsnotifications.Save();
UpdateStatus();
if(true) goto _L5; else goto _L4
_L4:
}
protected void onPause()
{
super.onPause();
try
{
if(tcpTask != null)
{
Log.d("TCP", "Shutting down TCP connection");
tcpTask.ConnClose();
tcpTask.cancel(true);
tcpTask = null;
}
}
catch(Exception exception) { }
saveCars();
}
protected void onResume()
{
super.onResume();
ChangeCar(carData);
}
public void onTabChanged(String s)
{
notifyTabUpdate(s);
}
public void saveCars()
{
Log.d("OVMS", "Saving cars to interal storage...");
android.content.SharedPreferences.Editor editor = getSharedPreferences("OVMS", 0).edit();
editor.putString("LastVehicleID", carData.VehicleID);
editor.commit();
ObjectOutputStream objectoutputstream = new ObjectOutputStream(openFileOutput("OVMSSavedCars.obj", 0));
objectoutputstream.writeObject(allSavedCars);
objectoutputstream.close();
_L1:
return;
Exception exception;
exception;
exception.printStackTrace();
Log.d("ERR", exception.getMessage());
goto _L1
}
public boolean SuppressServerErrorDialog;
private AlertDialog alertDialog;
private ArrayList allSavedCars;
private Handler c2dmReportTimerHandler;
private CarData carData;
private boolean isLoggedIn;
private Exception lastServerException;
private Runnable pingServer;
private Handler pingServerTimerHandler;
ProgressDialog progressLogin;
private Runnable progressLoginCloseDialog;
private Runnable progressLoginShowDialog;
private Runnable reportC2DMRegistrationID;
private Runnable serverSocketErrorDialog;
private final String settingsFileName = "OVMSSavedCars.obj";
private TCPTask tcpTask;
/*
static AlertDialog access$002(OVMSActivity ovmsactivity, AlertDialog alertdialog)
{
ovmsactivity.alertDialog = alertdialog;
return alertdialog;
}
*/
}