[Android Software/Hacking General [Developers Only]] modchen:
http://stackoverflow.com/questions/1249973/decompiling-dex-into-java-sourcecode

I followed this, and this outputs a much more readable code then smali files

package com.samsung.remoteTV;

import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Debug;
import android.os.Debug.MemoryInfo;
import android.util.Log;

public final class WLog
{
public static final int DISCONNECT_ON_AUTOSLEEP = 10000;
public static final boolean FEATURE_BROWSER_CONTROL = true;
public static final boolean FEATURE_BT_POWER_ON = true;
public static final boolean FEATURE_CHANNEL = true;
public static final boolean FEATURE_DUAL_TV = true;
public static final boolean IS_SMARTVIEW = true;
private static final String LOG_TAG = "WLog";
public static final String PACKAGE_NAME = "com.samsung.remoteTV";
public static final boolean SHOW_TERMS_DIALOG = true;
public static final boolean enableTestingModels;
private static boolean mustLogPrinting = true;
private static boolean supoortBTPowerOnModel;

static
{
StringBuilder localStringBuilder1 = new StringBuilder("MANUFACTURER:");
String str1 = Build.MANUFACTURER;
StringBuilder localStringBuilder2 = localStringBuilder1.append(str1).append(" DEVICE:");
String str2 = Build.DEVICE;
StringBuilder localStringBuilder3 = localStringBuilder2.append(str2).append(" MODEL:");
String str3 = Build.MODEL;
StringBuilder localStringBuilder4 = localStringBuilder3.append(str3).append(" PRODUCT:");
String str4 = Build.PRODUCT;
String str5 = str4;
int i = Log.i("CHECK Device", str5);
if ((Build.MANUFACTURER.equalsIgnoreCase("samsung")) && (isSupportBTPowerOnModel(Build.MODEL)))
{
int j = Log.i("CHECK Device", "BT Power On Supported");
supoortBTPowerOnModel = true;
return;
}
int k = Log.i("CHECK Device", "BT Power On Not Supported");
supoortBTPowerOnModel = false;
}

public static boolean checkMustLoginPrinting()
{
return mustLogPrinting;
}

public static void d(String paramString1, String paramString2)
{
if (!mustLogPrinting)
return;
int i = Log.d(paramString1, paramString2);
}

public static void d(String paramString1, String paramString2, boolean paramBoolean)
{
if ((!mustLogPrinting) && (!paramBoolean))
return;
int i = Log.d(paramString1, paramString2);
}

public static void e(String paramString1, String paramString2)
{
int i = Log.e(paramString1, paramString2);
}

public static boolean getSupportBTPowerOnModel()
{
return supoortBTPowerOnModel;
}

public static void i(String paramString1, String paramString2)
{
if (!mustLogPrinting)
return;
int i = Log.i(paramString1, paramString2);
}

public static void i(String paramString1, String paramString2, boolean paramBoolean)
{
if ((!mustLogPrinting) && (!paramBoolean))
return;
int i = Log.i(paramString1, paramString2);
}

public static boolean isSupportBTPowerOnModel(String paramString)
{
d("modelname", paramString);
if ((paramString.equalsIgnoreCase("SHW-M190S")) || (paramString.startsWith("SHW-M130")) || (paramString.equalsIgnoreCase("SHW-M110S")) || (paramString.startsWith("SGH-T959")) || (paramString.equalsIgnoreCase("SCH-R910")) || (paramString.equalsIgnoreCase("SCH-i909")) || (paramString.equalsIgnoreCase("SCH-I500")) || (paramString.equalsIgnoreCase("SCH-I400")) || (paramString.equalsIgnoreCase("SC-02B")) || (paramString.startsWith("GT-190")) || (paramString.startsWith("SHW-M250")) || (paramString.equalsIgnoreCase("GT-I9100")) || (paramString.equalsIgnoreCase("GT-I9000")) || (paramString.equalsIgnoreCase("SPH-P100")) || (paramString.equalsIgnoreCase("SMT-i9100")) || (paramString.startsWith("SHW-M180")) || (paramString.equalsIgnoreCase("SGH-T849")) || (paramString.equalsIgnoreCase("SCH-I800")) || (paramString.equalsIgnoreCase("SC-01C")) || (paramString.contains("GT-P1000")) || (paramString.equalsIgnoreCase("crespo4g")) || (paramString.equalsIgnoreCase("Nexus S")));
for (int i = 1; ; i = 0)
return i;
}

public static void setIsLogPrinting(boolean paramBoolean)
{
mustLogPrinting = paramBoolean;
mustLogPrinting = false;
if (paramBoolean)
return;
int i = Log.i("WLog", "++++++++++++++++++++++++++++++++++++++++++))))):> WLog printing was DISABLED <:(((((++++++++++++++++++++++++++++++++++++++++++");
}

public static void showMemoryInLog(int paramInt, boolean paramBoolean, ActivityManager paramActivityManager)
{
if (!paramBoolean)
return;
Debug.MemoryInfo localMemoryInfo = new Debug.MemoryInfo();
1 local1 = new AsyncTask(paramActivityManager, localMemoryInfo)
{
protected Integer doInBackground(Integer[] paramArrayOfInteger)
{
while (true)
try
{
Thread.sleep(paramArrayOfInteger[0].intValue());
ActivityManager.MemoryInfo localMemoryInfo = new ActivityManager.MemoryInfo();
WLog.this.getMemoryInfo(localMemoryInfo);
Debug.getMemoryInfo(this.val$memoryInfo);
String str1 = Float.toString(this.val$memoryInfo.getTotalPss() / 1024.0F);
WLog.d("Memory.Main:getTotalPss", str1, false);
continue;
}
catch (InterruptedException localInterruptedException)
{
String str2 = "InterruptedException " + localInterruptedException;
WLog.e("Memory", str2);
}
}
};
Integer[] arrayOfInteger = new Integer[1];
Integer localInteger = Integer.valueOf(paramInt);
arrayOfInteger[0] = localInteger;
AsyncTask localAsyncTask = local1.execute(arrayOfInteger);
}

public static void v(String paramString1, String paramString2)
{
if (!mustLogPrinting)
return;
int i = Log.v(paramString1, paramString2);
}

public static void v(String paramString1, String paramString2, boolean paramBoolean)
{
if ((!mustLogPrinting) && (!paramBoolean))
return;
int i = Log.v(paramString1, paramString2);
}

public static void w(String paramString1, String paramString2)
{
if (!mustLogPrinting)
return;
int i = Log.w(paramString1, paramString2);
}

public static void w(String paramString1, String paramString2, boolean paramBoolean)
{
if ((!mustLogPrinting) && (!paramBoolean))
return;
int i = Log.w(paramString1, paramString2);
}
}

package com.samsung.remoteTV.autoLayouting.Model;

import android.os.Parcel;
import android.os.Parcelable;
import com.samsung.remoteTV.autoLayouting.ItemDescription;
import com.sec.android.app.qwertyremocon.rccore.REMOCONCODE;
import java.util.Enumeration;
import java.util.Hashtable;

public abstract class Model
implements Parcelable
{
public static final int NO_TAB = 255;
public static final int OTHER_FEATURE_2NDTV = 1;
public static final int TAB_CH_VOL = 0;
public static final int TAB_FULL = 1;
public static final int TAB_NAVIGATION = 2;
public static final int TAB_PLAYBACK = 4;
public static final int TAB_PROG = 3;
protected Hashtable<Integer, ItemDescription> _associationTable;
private int _deviceType = 65436;
protected boolean _filled;
protected Hashtable<Integer, ItemDescription> _hotkeysTable;
private int active_tab_count;
protected int[] full_view_order;
protected int[] tab_order;

public Model()
{
int[] arrayOfInt1 = new int[3];
arrayOfInt1[1] = 1;
arrayOfInt1[2] = 2;
this.tab_order = arrayOfInt1;
int[] arrayOfInt2 = { 2130903081, 2130903084, 2130903161, 2130903089, 2130903049, 2130903162, 2130903139 };
this.full_view_order = arrayOfInt2;
this.active_tab_count = 3;
}

public Model(Parcel paramParcel)
{
int[] arrayOfInt1 = new int[3];
arrayOfInt1[1] = 1;
arrayOfInt1[2] = 2;
this.tab_order = arrayOfInt1;
int[] arrayOfInt2 = { 2130903081, 2130903084, 2130903161, 2130903089, 2130903049, 2130903162, 2130903139 };
this.full_view_order = arrayOfInt2;
this.active_tab_count = 3;
readFromParcel(paramParcel);
}

public int describeContents()
{
return 0;
}

public abstract void fill();

public abstract void fillwithOhterFeature(int paramInt);

public int[] getFillOrder()
{
return this.full_view_order;
}

public abstract Hashtable<String, REMOCONCODE> getGestureBehavior();

public Hashtable<Integer, ItemDescription> get_associationTable()
{
return this._associationTable;
}

public int get_deviceType()
{
return this._deviceType;
}

public Hashtable<Integer, ItemDescription> get_hotkeysTable()
{
return this._hotkeysTable;
}

public int get_imageId(int paramInt)
{
Hashtable localHashtable1 = this._associationTable;
Integer localInteger1 = Integer.valueOf(paramInt);
Hashtable localHashtable2;
Integer localInteger2;
if (localHashtable1.containsKey(localInteger1))
{
localHashtable2 = this._associationTable;
localInteger2 = Integer.valueOf(paramInt);
}
for (int i = ((ItemDescription)localHashtable2.get(localInteger2)).get_firstImageId().intValue(); ; i = 0)
return i;
}

public int get_tab_count()
{
return this.active_tab_count;
}

public int[] get_tab_order()
{
return this.tab_order;
}

public int get_textId(int paramInt)
{
Hashtable localHashtable1 = this._associationTable;
Integer localInteger1 = Integer.valueOf(paramInt);
Hashtable localHashtable2;
Integer localInteger2;
if (localHashtable1.containsKey(localInteger1))
{
localHashtable2 = this._associationTable;
localInteger2 = Integer.valueOf(paramInt);
}
for (int i = ((ItemDescription)localHashtable2.get(localInteger2)).get_firstTextId().intValue(); ; i = 0)
return i;
}

public boolean isFilled()
{
return this._filled;
}

public void readFromParcel(Parcel paramParcel)
{
int i = paramParcel.readInt();
int j = 0;
int m;
label21: Integer[] arrayOfInteger;
ItemDescription[] arrayOfItemDescription;
int i1;
label71: label81: int i2;
int i3;
if (j >= i)
{
int k = paramParcel.readInt();
m = 0;
if (m < k)
break label175;
int n = paramParcel.readInt();
if (n != 0)
{
Hashtable localHashtable1 = new Hashtable();
this._associationTable = localHashtable1;
arrayOfInteger = new Integer[n];
arrayOfItemDescription = new ItemDescription[n];
i1 = 0;
if (i1 < n)
break label203;
m = 0;
if (m < n)
break label228;
}
i2 = paramParcel.readInt();
if (i2 == 0)
return;
Hashtable localHashtable2 = new Hashtable();
this._hotkeysTable = localHashtable2;
arrayOfInteger = new Integer[i2];
arrayOfItemDescription = new ItemDescription[i2];
i3 = 0;
label132: if (i3 < i2)
break label293;
m = 0;
}
while (true)
{
if (m >= i2)
{
return;
int[] arrayOfInt1 = this.tab_order;
int i4 = paramParcel.readInt();
arrayOfInt1[j] = i4;
j += 1;
break;
label175: int[] arrayOfInt2 = this.full_view_order;
int i5 = paramParcel.readInt();
arrayOfInt2[m] = i5;
m += 1;
break label21;
label203: Integer localInteger1 = Integer.valueOf(paramParcel.readInt());
arrayOfInteger[i1] = localInteger1;
i1 += 1;
break label71;
label228: ClassLoader localClassLoader1 = ItemDescription.class.getClassLoader();
ItemDescription localItemDescription1 = (ItemDescription)paramParcel.readParcelable(localClassLoader1);
arrayOfItemDescription[m] = localItemDescription1;
Hashtable localHashtable3 = this._associationTable;
Integer localInteger2 = arrayOfInteger[m];
ItemDescription localItemDescription2 = arrayOfItemDescription[m];
Object localObject1 = localHashtable3.put(localInteger2, localItemDescription2);
m += 1;
break label81;
label293: Integer localInteger3 = Integer.valueOf(paramParcel.readInt());
arrayOfInteger[i3] = localInteger3;
i3 += 1;
break label132;
}
ClassLoader localClassLoader2 = ItemDescription.class.getClassLoader();
ItemDescription localItemDescription3 = (ItemDescription)paramParcel.readParcelable(localClassLoader2);
arrayOfItemDescription[m] = localItemDescription3;
Hashtable localHashtable4 = this._hotkeysTable;
Integer localInteger4 = arrayOfInteger[m];
ItemDescription localItemDescription4 = arrayOfItemDescription[m];
Object localObject2 = localHashtable4.put(localInteger4, localItemDescription4);
m += 1;
}
}

public void set_associationTable(Hashtable<Integer, ItemDescription> paramHashtable)
{
this._associationTable = paramHashtable;
}

public void set_deviceType(int paramInt)
{
this._deviceType = paramInt;
}

public void set_hotkeysTable(Hashtable<Integer, ItemDescription> paramHashtable)
{
this._hotkeysTable = paramHashtable;
}

public String toString()
{
return getClass().getSimpleName();
}

public void writeToParcel(Parcel paramParcel, int paramInt)
{
int i = this.tab_order.length;
paramParcel.writeInt(i);
int[] arrayOfInt1 = this.tab_order;
int j = arrayOfInt1.length;
int k = 0;
int[] arrayOfInt2;
int i1;
label59: Enumeration localEnumeration1;
label97: Enumeration localEnumeration2;
label116: label126: Enumeration localEnumeration3;
if (k >= j)
{
int m = this.full_view_order.length;
paramParcel.writeInt(m);
arrayOfInt2 = this.full_view_order;
int n = arrayOfInt2.length;
i1 = 0;
if (i1 < n)
break label209;
if (this._associationTable == null)
break label277;
int i2 = this._associationTable.size();
paramParcel.writeInt(i2);
localEnumeration1 = this._associationTable.keys();
if (localEnumeration1.hasMoreElements())
break label231;
localEnumeration2 = this._associationTable.elements();
if (localEnumeration2.hasMoreElements())
break label255;
if (this._hotkeysTable == null)
break label331;
int i3 = this._hotkeysTable.size();
paramParcel.writeInt(i3);
localEnumeration3 = this._hotkeysTable.keys();
label157: if (localEnumeration3.hasMoreElements())
break label285;
localEnumeration2 = this._hotkeysTable.elements();
}
while (true)
{
if (!localEnumeration2.hasMoreElements())
{
return;
int i4 = arrayOfInt1[k];
paramParcel.writeInt(i4);
k += 1;
break;
label209: int i5 = arrayOfInt2[i1];
paramParcel.writeInt(i5);
i1 += 1;
break label59;
label231: int i6 = ((Integer)localEnumeration1.nextElement()).intValue();
paramParcel.writeInt(i6);
break label97;
label255: ItemDescription localItemDescription1 = (ItemDescription)localEnumeration2.nextElement();
paramParcel.writeParcelable(localItemDescription1, paramInt);
break label116;
label277: paramParcel.writeInt(0);
break label126;
label285: int i7 = ((Integer)localEnumeration3.nextElement()).intValue();
paramParcel.writeInt(i7);
break label157;
}
ItemDescription localItemDescription2 = (ItemDescription)localEnumeration2.nextElement();
paramParcel.writeParcelable(localItemDescription2, paramInt);
}
label331: paramParcel.writeInt(0);
}
}

---------- Post added at 08:42 AM ---------- Previous post was at 08:07 AM ----------

I found again some interesting code in

com/samsung/remoteTV/model/controllers/ManualController.java

private void initViewActivity()
{
setBaseToolBar(0);
((TextView)this._view.findViewById(2131296844)).setText(2131100231);
((TextView)this._view.findViewById(2131296847)).setText(2131100232);
((TextView)this._view.findViewById(2131296850)).setText(2131100233);
ManualButton localManualButton1 = this.remoteButton;
setManBtn(localManualButton1, 2131100224, 2130837982);
if (!(this._currentModel instanceof BD_Model))
{
ManualButton localManualButton2 = this.gameButton;
setManBtn(localManualButton2, 2131100228, 2130837980);
}
if ((WLog.getSupportBTPowerOnModel()) && (!(this._currentModel instanceof BD_Model)))
{
WLog.d("BTPOWER", "ManualController initViewActivity FEATURE_BT_POWER_ON", true);
ManualButton localManualButton3 = this.btButton;
setManBtn(localManualButton3, 2131100165, 2130837977);
if ((this._currentModel instanceof BD_Model))
break label233;
ManualButton localManualButton4 = this.dualTVButton;
setManBtn(localManualButton4, 2131100226, 2130837979);
label174: if ((this._currentModel instanceof BD_Model))
break label245;
ManualButton localManualButton5 = this.channelButton;
setManBtn(localManualButton5, 2131100227, 2130837978);
}
while (true)
{
ManualButton localManualButton6 = this.settingsButton;
setManBtn(localManualButton6, 2131100229, 2130837984);
return;
this.btButton.setVisibility(8);
break;
label233: this.dualTVButton.setVisibility(8);
break label174;
label245: this.channelButton.setVisibility(8);
}
}

label233: this.dualTVButton.setVisibility(8);

int=8 means the Button is GONE -> http://developer.android.com/reference/android/view/View.html#GONE

I'll try, if I am able to modify this to http://developer.android.com/reference/android/view/View.html#VISIBLE