Cleanup and finalize the new "visibility optimized" menus

Add an option to open the menu with "Menu", Select compat

Don't prevent select mapping, Switch to local context, Anim

Import French Submission @AndroidGX

Fix a merge issue for settings not yet available to the user

faster popup animation, hide rate me menu item on ouya

Update strings.xml

Kill the application properly, Check for Rating, Popup anim

Add a small buffer to the VMU, Fix the configuration menu

This really was a good idea if I could quit inverting the logic

Sound config options are misleading due to inverted function

It is my own fault for wanting it to make sense in GL2JNIView at the cost of not making since anywhere else

Toggle sound independently, Implement Fastforward instead

Add generic boost menu option, Fix sound menu icon state

 Repurpose thread priority as boost option, Disable triggered

Account for when sound is fully disabled and cannot be set

It gets confusing when enabled is false and disabled is true
This commit is contained in:
TwistedUmbrella 2014-02-25 02:12:47 -05:00
parent 7ec35ef3c2
commit 8ce6a9e539
9 changed files with 479 additions and 382 deletions

View File

@ -37,7 +37,7 @@
<string name="report_issue">Tidligere nedbrud detekteret</string> <string name="report_issue">Tidligere nedbrud detekteret</string>
<string name="platform">Kopierer logcat indhold til clipboardet\nIndsæt venligst i fejlrapporten</string> <string name="platform">Kopierer logcat indhold til clipboardet\nIndsæt venligst i fejlrapporten</string>
<string name="log_saved">Log gemt i %1$s</string> <string name="log_saved">Log gemt i \"System Path\"</string>
<string name="bios_config">Konfiguration fejlede!</string> <string name="bios_config">Konfiguration fejlede!</string>
<string name="menu_debug">Indsend fejllogger</string> <string name="menu_debug">Indsend fejllogger</string>
@ -57,8 +57,7 @@
<string name="controller_already_in_use">Denne controller er allerede i brug!</string> <string name="controller_already_in_use">Denne controller er allerede i brug!</string>
<string name="modified_layout">Aktiver brugerdefineret layout</string> <string name="modified_layout">Aktiver brugerdefineret layout</string>
<string name="controller_compat">Aktiver kompatibilitesmode</string> <string name="controller_compat">Aktiver kompatibilitesmode</string>
<string name="dpad_joystick">Joystick bruger DPAD Layout</string> <string name="mic_in_port_2">Mikrofon tilsluttet port 2</string>
<string name="mic_in_port_2">Microphone tilsluttet port 2</string>
<string name="customize_physical_controls">Tilpas fysiske taster</string> <string name="customize_physical_controls">Tilpas fysiske taster</string>
<string name="map_keycode_title">Tilpas controller</string> <string name="map_keycode_title">Tilpas controller</string>
@ -67,6 +66,7 @@
<string name="bios_menu">Tryk på %1$s knappen for en menu</string> <string name="bios_menu">Tryk på %1$s knappen for en menu</string>
<string name="back_button">tilbage</string> <string name="back_button">tilbage</string>
<string name="menu_button">menu</string> <string name="menu_button">menu</string>
<string name="right_button">R3</string>
<string name="moga_pro_connect">MOGA Pro tilsluttet!</string> <string name="moga_pro_connect">MOGA Pro tilsluttet!</string>
<string name="moga_connect">MOGA tilsluttet!</string> <string name="moga_connect">MOGA tilsluttet!</string>
@ -114,4 +114,7 @@
<string name="textOn">TIL</string> <string name="textOn">TIL</string>
<string name="textOff">FRA</string> <string name="textOff">FRA</string>
<string name="cancel">Afbryd</string>
<string name="manual">Manuel</string>
</resources> </resources>

View File

@ -14,6 +14,7 @@
<string name="folder_bios">DEMARRER LE BIOS</string> <string name="folder_bios">DEMARRER LE BIOS</string>
<string name="folder_select">SELECTIONNER LE DOSSIER ACTUEL</string> <string name="folder_select">SELECTIONNER LE DOSSIER ACTUEL</string>
<string name="optimization_opts">Options d\'optimisations et de débogage</string>
<string name="experimental_opts">Experimental (peut causer des crashs)</string> <string name="experimental_opts">Experimental (peut causer des crashs)</string>
<string name="select_dynarec">Dynarec</string> <string name="select_dynarec">Dynarec</string>
<string name="select_unstable">Optimisations instables</string> <string name="select_unstable">Optimisations instables</string>
@ -23,6 +24,11 @@
<string name="select_stretch">Mode portrait (écran large)</string> <string name="select_stretch">Mode portrait (écran large)</string>
<string name="set_frameskip">Valeur de saut des images</string> <string name="set_frameskip">Valeur de saut des images</string>
<string name="select_render">Rendu PVR (ne fonctionne pas pour le moment)</string> <string name="select_render">Rendu PVR (ne fonctionne pas pour le moment)</string>
<string name="select_fps">Montrer les FPS</string>
<string name="select_software">Forcer le rendu logiciel</string>
<string name="select_sound">Activer le son de l\'émulateur</string>
<string name="select_depth">Rendu de profondeur</string>
<string name="select_force_gpu">Forcer la config GPU v6</string>
<string name="default_disk">Réglage du disque par défaut</string> <string name="default_disk">Réglage du disque par défaut</string>
<string name="games_listing">Liste des jeux disponibles</string> <string name="games_listing">Liste des jeux disponibles</string>
@ -44,6 +50,7 @@
<string name="modified_layout">Activer la fonction de disposition des touches</string> <string name="modified_layout">Activer la fonction de disposition des touches</string>
<string name="controller_compat">Activer le mode de compatibilité</string> <string name="controller_compat">Activer le mode de compatibilité</string>
<string name="dpad_joystick">Le joystick doit utiliser la disposition du pad directionnel</string> <string name="dpad_joystick">Le joystick doit utiliser la disposition du pad directionnel</string>
<string name="mic_in_port_2">Microphone branché au port 2</string>
<string name="customize_physical_controls">Customiser les touches physiques</string> <string name="customize_physical_controls">Customiser les touches physiques</string>
<string name="map_keycode_title">Modifier la manette</string> <string name="map_keycode_title">Modifier la manette</string>
@ -79,4 +86,4 @@
<string name="menu_debug">Soumettre le log d\'erreurs</string> <string name="menu_debug">Soumettre le log d\'erreurs</string>
</resources> </resources>

View File

@ -183,7 +183,8 @@ public class GL2JNIActivity extends Activity {
fileName = Uri.decode(intent.getData().toString()); fileName = Uri.decode(intent.getData().toString());
// Create the actual GLES view // Create the actual GLES view
mView = new GL2JNIView(getApplication(), config, fileName, false, prefs.getInt("depth_render", 24), 0, false); mView = new GL2JNIView(getApplication(), config, fileName, false,
prefs.getInt("depth_render", 24), 0, false);
setContentView(mView); setContentView(mView);
String menu_spec; String menu_spec;
@ -377,7 +378,7 @@ public class GL2JNIActivity extends Activity {
public boolean handle_key(Integer playerNum, int kc, boolean down) { public boolean handle_key(Integer playerNum, int kc, boolean down) {
if (playerNum == null || playerNum == -1) if (playerNum == null || playerNum == -1)
return false; return false;
if (kc == KeyEvent.KEYCODE_BUTTON_SELECT) { if (kc == pad.getSelectButtonCode()) {
return false; return false;
} }
if (pad.isActiveMoga[playerNum]) { if (pad.isActiveMoga[playerNum]) {
@ -436,7 +437,7 @@ public class GL2JNIActivity extends Activity {
parent.removeView(menu.getVmu()); parent.removeView(menu.getVmu());
//add to floating window //add to floating window
vmuPop.showVmu(); vmuPop.showVmu();
vmuPop.showAtLocation(mView, Gravity.TOP | Gravity.RIGHT, 20, 20); vmuPop.showAtLocation(mView, Gravity.TOP | Gravity.RIGHT, 4, 4);
vmuPop.update(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); vmuPop.update(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
}else{ }else{
vmuPop.dismiss(); vmuPop.dismiss();
@ -511,7 +512,7 @@ public class GL2JNIActivity extends Activity {
return true; return true;
} }
if (keyCode == KeyEvent.KEYCODE_BUTTON_SELECT) { if (keyCode == pad.getSelectButtonCode()) {
return showMenu(); return showMenu();
} }
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1 if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1

View File

@ -2,12 +2,15 @@ package com.reicast.emulator;
import java.io.File; import java.io.File;
import java.lang.Thread.UncaughtExceptionHandler; import java.lang.Thread.UncaughtExceptionHandler;
import java.util.List;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
@ -32,6 +35,7 @@ import com.reicast.emulator.config.InputFragment;
import com.reicast.emulator.config.OptionsFragment; import com.reicast.emulator.config.OptionsFragment;
import com.reicast.emulator.debug.GenerateLogs; import com.reicast.emulator.debug.GenerateLogs;
import com.reicast.emulator.emu.JNIdc; import com.reicast.emulator.emu.JNIdc;
import com.reicast.emulator.periph.Gamepad;
public class MainActivity extends SlidingFragmentActivity implements public class MainActivity extends SlidingFragmentActivity implements
FileBrowser.OnItemSelectedListener, OptionsFragment.OnClickListener { FileBrowser.OnItemSelectedListener, OptionsFragment.OnClickListener {
@ -41,11 +45,14 @@ public class MainActivity extends SlidingFragmentActivity implements
public static String home_directory = sdcard + "/dc"; public static String home_directory = sdcard + "/dc";
private TextView menuHeading; private TextView menuHeading;
private boolean hasAndroidMarket = false;
private SlidingMenu sm; private SlidingMenu sm;
private UncaughtExceptionHandler mUEHandler; private UncaughtExceptionHandler mUEHandler;
Gamepad pad = new Gamepad();
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -79,20 +86,17 @@ public class MainActivity extends SlidingFragmentActivity implements
String prior_error = mPrefs.getString("prior_error", null); String prior_error = mPrefs.getString("prior_error", null);
if (prior_error != null && !prior_error.equals(null)) { if (prior_error != null && !prior_error.equals(null)) {
initiateReport(prior_error, savedInstanceState); initiateReport(prior_error);
mPrefs.edit().remove("prior_error").commit(); mPrefs.edit().remove("prior_error").commit();
} else {
loadInterface(savedInstanceState);
} }
}
/** Intent market = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=dummy"));
* Load the GUI interface for display to the user PackageManager manager = getPackageManager();
* List<ResolveInfo> list = manager.queryIntentActivities(market, 0);
* @param bundle if (list != null && !list.isEmpty()) {
* The savedInstanceState passed from onCreate hasAndroidMarket = true;
*/ }
private void loadInterface(Bundle savedInstanceState) {
if (!getFilesDir().exists()) { if (!getFilesDir().exists()) {
getFilesDir().mkdir(); getFilesDir().mkdir();
} }
@ -252,20 +256,25 @@ public class MainActivity extends SlidingFragmentActivity implements
}); });
findViewById(R.id.rateme_menu).setOnTouchListener(new OnTouchListener() { View rateMe = findViewById(R.id.rateme_menu);
public boolean onTouch(View v, MotionEvent event) { if (!hasAndroidMarket) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { rateMe.setVisibility(View.GONE);
// vib.vibrate(50); } else {
startActivity(new Intent(Intent.ACTION_VIEW, Uri rateMe.setOnTouchListener(new OnTouchListener() {
.parse("market://details?id=" public boolean onTouch(View v, MotionEvent event) {
+ getPackageName()))); if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
//setTitle(getString(R.string.rateme)); // vib.vibrate(50);
sm.toggle(true); startActivity(new Intent(Intent.ACTION_VIEW, Uri
return true; .parse("market://details?id="
} else + getPackageName())));
return false; //setTitle(getString(R.string.rateme));
} sm.toggle(true);
}); return true;
} else
return false;
}
});
}
} }
}); });
findViewById(R.id.header_list).setOnTouchListener(new OnTouchListener() { findViewById(R.id.header_list).setOnTouchListener(new OnTouchListener() {
@ -287,29 +296,20 @@ public class MainActivity extends SlidingFragmentActivity implements
* @param bundle * @param bundle
* The savedInstanceState passed from onCreate * The savedInstanceState passed from onCreate
*/ */
private void initiateReport(final String error, final Bundle savedInstanceState) { private void initiateReport(final String error) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle(getString(R.string.report_issue)); builder.setTitle(getString(R.string.report_issue));
builder.setMessage(error); builder.setMessage(error);
builder.setNegativeButton("Cancel", builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
loadInterface(savedInstanceState);
dialog.dismiss(); dialog.dismiss();
} }
}); });
builder.setPositiveButton("Report", builder.setPositiveButton("Report",
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
GenerateLogs mGenerateLogs = new GenerateLogs(MainActivity.this); reportIssueUpstream(error);
mGenerateLogs.setUnhandled(error);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
mGenerateLogs.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
home_directory);
} else {
mGenerateLogs.execute(home_directory);
}
loadInterface(savedInstanceState);
dialog.dismiss(); dialog.dismiss();
} }
}); });
@ -317,6 +317,17 @@ public class MainActivity extends SlidingFragmentActivity implements
builder.show(); builder.show();
} }
private void reportIssueUpstream(String error) {
GenerateLogs mGenerateLogs = new GenerateLogs(MainActivity.this);
mGenerateLogs.setUnhandled(error);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
mGenerateLogs.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
home_directory);
} else {
mGenerateLogs.execute(home_directory);
}
}
public static boolean isBiosExisting() { public static boolean isBiosExisting() {
File bios = new File(home_directory, "data/dc_boot.bin"); File bios = new File(home_directory, "data/dc_boot.bin");
return bios.exists(); return bios.exists();
@ -485,6 +496,9 @@ public class MainActivity extends SlidingFragmentActivity implements
} }
} }
if (keyCode == KeyEvent.KEYCODE_MENU) {
sm.toggle(true);
}
return super.onKeyDown(keyCode, event); return super.onKeyDown(keyCode, event);
} }

View File

@ -106,8 +106,8 @@ public class ConfigureFragment extends Fragment {
} }
unstable_opt.setOnCheckedChangeListener(unstable_option); unstable_opt.setOnCheckedChangeListener(unstable_option);
String[] regions = ArrayUtils.remove(parentActivity.getResources() String[] regions = parentActivity.getResources().getStringArray(
.getStringArray(R.array.region), 4); R.array.region);
Spinner region_spnr = (Spinner) getView().findViewById( Spinner region_spnr = (Spinner) getView().findViewById(
R.id.region_spinner); R.id.region_spinner);
ArrayAdapter<String> regionAdapter = new ArrayAdapter<String>( ArrayAdapter<String> regionAdapter = new ArrayAdapter<String>(

View File

@ -3,6 +3,7 @@ package com.reicast.emulator.config;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
@ -35,6 +36,7 @@ import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import com.reicast.emulator.R; import com.reicast.emulator.R;
import com.reicast.emulator.periph.Gamepad;
import de.ankri.views.Switch; import de.ankri.views.Switch;
@ -42,13 +44,30 @@ public class InputModFragment extends Fragment {
private Activity parentActivity; private Activity parentActivity;
private SharedPreferences mPrefs; private SharedPreferences mPrefs;
private Switch switchModifiedLayoutEnabled; private Switch switchModifiedLayoutEnabled;
private Switch switchCompatibilityEnabled; private Switch switchCompatibilityEnabled;
private TextView a_button_text;
private TextView b_button_text;
private TextView x_button_text;
private TextView y_button_text;
private TextView l_button_text;
private TextView r_button_text;
private TextView dpad_up_text;
private TextView dpad_down_text;
private TextView dpad_left_text;
private TextView dpad_right_text;
private TextView start_button_text;
private TextView select_button_text;
private String player = "_A"; private String player = "_A";
private int sS = 2; private int sS = 2;
private int playerNum = -1; private int playerNum = -1;
private mapKeyCode mKey; private mapKeyCode mKey;
Gamepad pad = new Gamepad();
// Container Activity must implement this interface // Container Activity must implement this interface
public interface OnClickListener { public interface OnClickListener {
public void onMainBrowseSelected(String path_entry, boolean games); public void onMainBrowseSelected(String path_entry, boolean games);
@ -80,6 +99,249 @@ public class InputModFragment extends Fragment {
playerNum = b.getInt("portNumber", -1); playerNum = b.getInt("portNumber", -1);
} }
OnCheckedChangeListener modified_layout = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
mPrefs.edit()
.putBoolean("modified_key_layout" + player, isChecked)
.commit();
}
};
switchModifiedLayoutEnabled = (Switch) getView().findViewById(
R.id.switchModifiedLayoutEnabled);
switchModifiedLayoutEnabled.setOnCheckedChangeListener(modified_layout);
OnCheckedChangeListener compat_mode = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
selectController();
} else {
mPrefs.edit().remove("controller" + player).commit();
}
mPrefs.edit()
.putBoolean("controller_compat" + player, isChecked)
.commit();
}
};
switchCompatibilityEnabled = (Switch) getView().findViewById(
R.id.switchCompatibilityEnabled);
switchCompatibilityEnabled.setOnCheckedChangeListener(compat_mode);
mKey = new mapKeyCode(parentActivity);
ImageView a_button_icon = (ImageView) getView().findViewById(
R.id.a_button_icon);
a_button_icon.setImageDrawable(getButtonImage(448 / sS, 0));
a_button_text = (TextView) getView().findViewById(
R.id.a_button_key);
Button a_button = (Button) getView().findViewById(R.id.a_button_edit);
a_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("a_button", a_button_text);
}
});
Button a_remove = (Button) getView().findViewById(R.id.remove_a_button);
a_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("a_button", a_button_text);
}
});
ImageView b_button_icon = (ImageView) getView().findViewById(
R.id.b_button_icon);
b_button_icon.setImageDrawable(getButtonImage(384 / sS, 0));
b_button_text = (TextView) getView().findViewById(
R.id.b_button_key);
Button b_button = (Button) getView().findViewById(R.id.b_button_edit);
b_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("b_button", b_button_text);
}
});
Button b_remove = (Button) getView().findViewById(R.id.remove_b_button);
b_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("b_button", b_button_text);
}
});
ImageView x_button_icon = (ImageView) getView().findViewById(
R.id.x_button_icon);
x_button_icon.setImageDrawable(getButtonImage(256 / sS, 0));
x_button_text = (TextView) getView().findViewById(
R.id.x_button_key);
Button x_button = (Button) getView().findViewById(R.id.x_button_edit);
x_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("x_button", x_button_text);
}
});
Button x_remove = (Button) getView().findViewById(R.id.remove_x_button);
x_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("x_button", x_button_text);
}
});
ImageView y_button_icon = (ImageView) getView().findViewById(
R.id.y_button_icon);
y_button_icon.setImageDrawable(getButtonImage(320 / sS, 0));
y_button_text = (TextView) getView().findViewById(
R.id.y_button_key);
Button y_button = (Button) getView().findViewById(R.id.y_button_edit);
y_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("y_button", y_button_text);
}
});
Button y_remove = (Button) getView().findViewById(R.id.remove_y_button);
y_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("y_button", y_button_text);
}
});
ImageView l_button_icon = (ImageView) getView().findViewById(
R.id.l_button_icon);
l_button_icon.setImageDrawable(getButtonImage(78 / sS, 64 / sS));
l_button_text = (TextView) getView().findViewById(
R.id.l_button_key);
Button l_button = (Button) getView().findViewById(R.id.l_button_edit);
l_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("l_button", l_button_text);
}
});
Button l_remove = (Button) getView().findViewById(R.id.remove_l_button);
l_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("l_button", l_button_text);
}
});
ImageView r_button_icon = (ImageView) getView().findViewById(
R.id.r_button_icon);
r_button_icon.setImageDrawable(getButtonImage(162 / sS, 64 / sS));
r_button_text = (TextView) getView().findViewById(
R.id.r_button_key);
Button r_button = (Button) getView().findViewById(R.id.r_button_edit);
r_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("r_button", r_button_text);
}
});
Button r_remove = (Button) getView().findViewById(R.id.remove_r_button);
r_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("r_button", r_button_text);
}
});
dpad_up_text = (TextView) getView().findViewById(
R.id.dpad_up_key);
Button dpad_up = (Button) getView().findViewById(R.id.dpad_up_edit);
dpad_up.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("dpad_up", dpad_up_text);
}
});
Button up_remove = (Button) getView().findViewById(R.id.remove_dpad_up);
up_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("dpad_up", dpad_up_text);
}
});
dpad_down_text = (TextView) getView().findViewById(
R.id.dpad_down_key);
Button dpad_down = (Button) getView().findViewById(R.id.dpad_down_edit);
dpad_down.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("dpad_down", dpad_down_text);
}
});
Button down_remove = (Button) getView().findViewById(
R.id.remove_dpad_down);
down_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("dpad_down", dpad_down_text);
}
});
dpad_left_text = (TextView) getView().findViewById(
R.id.dpad_left_key);
Button dpad_left = (Button) getView().findViewById(R.id.dpad_left_edit);
dpad_left.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("dpad_left", dpad_left_text);
}
});
Button left_remove = (Button) getView().findViewById(
R.id.remove_dpad_left);
left_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("dpad_left", dpad_left_text);
}
});
dpad_right_text = (TextView) getView().findViewById(
R.id.dpad_right_key);
Button dpad_right = (Button) getView().findViewById(
R.id.dpad_right_edit);
dpad_right.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("dpad_right", dpad_right_text);
}
});
Button right_remove = (Button) getView().findViewById(
R.id.remove_dpad_right);
right_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("dpad_right", dpad_right_text);
}
});
ImageView start_button_icon = (ImageView) getView().findViewById(
R.id.start_button_icon);
start_button_icon.setImageDrawable(getButtonImage(0, 64 / sS));
start_button_text = (TextView) getView().findViewById(
R.id.start_button_key);
Button start_button = (Button) getView().findViewById(
R.id.start_button_edit);
start_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("start_button", start_button_text);
}
});
Button start_remove = (Button) getView()
.findViewById(R.id.remove_start);
start_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("start_button", start_button_text);
}
});
ImageView select_button_icon = (ImageView) getView().findViewById(
R.id.select_button_icon);
select_button_icon.setImageResource(R.drawable.ic_drawer);
select_button_text = (TextView) getView().findViewById(
R.id.select_button_key);
Button select_button = (Button) getView().findViewById(
R.id.select_button_edit);
select_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("select_button", select_button_text);
}
});
Button select_remove = (Button) getView()
.findViewById(R.id.remove_select);
select_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("select_button", select_button_text);
}
});
Spinner player_spnr = (Spinner) getView().findViewById( Spinner player_spnr = (Spinner) getView().findViewById(
R.id.player_spinner); R.id.player_spinner);
ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>( ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>(
@ -99,291 +361,23 @@ public class InputModFragment extends Fragment {
player = "_" player = "_"
+ selection.substring(selection.lastIndexOf(" ") + 1, + selection.substring(selection.lastIndexOf(" ") + 1,
selection.length()); selection.length());
playerNum = pos;
updateController(player);
} }
public void onNothingSelected(AdapterView<?> arg0) { public void onNothingSelected(AdapterView<?> arg0) {
if (playerNum != -1) {
player = controllers[playerNum];
}
} }
}); });
updateController(player);
OnCheckedChangeListener modified_layout = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
mPrefs.edit()
.putBoolean("modified_key_layout" + player, isChecked)
.commit();
}
};
switchModifiedLayoutEnabled = (Switch) getView().findViewById(
R.id.switchModifiedLayoutEnabled);
boolean layout = mPrefs.getBoolean("modified_key_layout" + player,
false);
if (layout) {
switchModifiedLayoutEnabled.setChecked(true);
} else {
switchModifiedLayoutEnabled.setChecked(false);
}
switchModifiedLayoutEnabled.setOnCheckedChangeListener(modified_layout);
OnCheckedChangeListener compat_mode = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
selectController();
} else {
mPrefs.edit().remove("controller" + player).commit();
}
mPrefs.edit()
.putBoolean("controller_compat" + player, isChecked)
.commit();
}
};
switchCompatibilityEnabled = (Switch) getView().findViewById(
R.id.switchCompatibilityEnabled);
boolean compat = mPrefs.getBoolean("controller_compat" + player, false);
if (compat) {
switchCompatibilityEnabled.setChecked(true);
} else {
switchCompatibilityEnabled.setChecked(false);
}
switchCompatibilityEnabled.setOnCheckedChangeListener(compat_mode);
mKey = new mapKeyCode(parentActivity);
ImageView a_button_icon = (ImageView) getView().findViewById(
R.id.a_button_icon);
a_button_icon.setImageDrawable(getButtonImage(448 / sS, 0));
final TextView a_button_text = (TextView) getView().findViewById(
R.id.a_button_key);
getKeyCode("a_button", a_button_text);
Button a_button = (Button) getView().findViewById(R.id.a_button_edit);
a_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("a_button", a_button_text);
}
});
Button a_remove = (Button) getView().findViewById(R.id.remove_a_button);
a_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("a_button", a_button_text);
}
});
ImageView b_button_icon = (ImageView) getView().findViewById(
R.id.b_button_icon);
b_button_icon.setImageDrawable(getButtonImage(384 / sS, 0));
final TextView b_button_text = (TextView) getView().findViewById(
R.id.b_button_key);
getKeyCode("b_button", b_button_text);
Button b_button = (Button) getView().findViewById(R.id.b_button_edit);
b_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("b_button", b_button_text);
}
});
Button b_remove = (Button) getView().findViewById(R.id.remove_b_button);
b_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("b_button", b_button_text);
}
});
ImageView x_button_icon = (ImageView) getView().findViewById(
R.id.x_button_icon);
x_button_icon.setImageDrawable(getButtonImage(256 / sS, 0));
final TextView x_button_text = (TextView) getView().findViewById(
R.id.x_button_key);
getKeyCode("x_button", x_button_text);
Button x_button = (Button) getView().findViewById(R.id.x_button_edit);
x_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("x_button", x_button_text);
}
});
Button x_remove = (Button) getView().findViewById(R.id.remove_x_button);
x_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("x_button", x_button_text);
}
});
ImageView y_button_icon = (ImageView) getView().findViewById(
R.id.y_button_icon);
y_button_icon.setImageDrawable(getButtonImage(320 / sS, 0));
final TextView y_button_text = (TextView) getView().findViewById(
R.id.y_button_key);
getKeyCode("y_button", y_button_text);
Button y_button = (Button) getView().findViewById(R.id.y_button_edit);
y_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("y_button", y_button_text);
}
});
Button y_remove = (Button) getView().findViewById(R.id.remove_y_button);
y_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("y_button", y_button_text);
}
});
ImageView l_button_icon = (ImageView) getView().findViewById(
R.id.l_button_icon);
l_button_icon.setImageDrawable(getButtonImage(78 / sS, 64 / sS));
final TextView l_button_text = (TextView) getView().findViewById(
R.id.l_button_key);
getKeyCode("l_button", l_button_text);
Button l_button = (Button) getView().findViewById(R.id.l_button_edit);
l_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("l_button", l_button_text);
}
});
Button l_remove = (Button) getView().findViewById(R.id.remove_l_button);
l_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("l_button", l_button_text);
}
});
ImageView r_button_icon = (ImageView) getView().findViewById(
R.id.r_button_icon);
r_button_icon.setImageDrawable(getButtonImage(162 / sS, 64 / sS));
final TextView r_button_text = (TextView) getView().findViewById(
R.id.r_button_key);
getKeyCode("r_button", r_button_text);
Button r_button = (Button) getView().findViewById(R.id.r_button_edit);
r_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("r_button", r_button_text);
}
});
Button r_remove = (Button) getView().findViewById(R.id.remove_r_button);
r_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("r_button", r_button_text);
}
});
final TextView dpad_up_text = (TextView) getView().findViewById(
R.id.dpad_up_key);
getKeyCode("dpad_up", dpad_up_text);
Button dpad_up = (Button) getView().findViewById(R.id.dpad_up_edit);
dpad_up.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("dpad_up", dpad_up_text);
}
});
Button up_remove = (Button) getView().findViewById(R.id.remove_dpad_up);
up_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("dpad_up", dpad_up_text);
}
});
final TextView dpad_down_text = (TextView) getView().findViewById(
R.id.dpad_down_key);
getKeyCode("dpad_down", dpad_down_text);
Button dpad_down = (Button) getView().findViewById(R.id.dpad_down_edit);
dpad_down.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("dpad_down", dpad_down_text);
}
});
Button down_remove = (Button) getView().findViewById(
R.id.remove_dpad_down);
down_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("dpad_down", dpad_down_text);
}
});
final TextView dpad_left_text = (TextView) getView().findViewById(
R.id.dpad_left_key);
getKeyCode("dpad_left", dpad_left_text);
Button dpad_left = (Button) getView().findViewById(R.id.dpad_left_edit);
dpad_left.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("dpad_left", dpad_left_text);
}
});
Button left_remove = (Button) getView().findViewById(
R.id.remove_dpad_left);
left_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("dpad_left", dpad_left_text);
}
});
final TextView dpad_right_text = (TextView) getView().findViewById(
R.id.dpad_right_key);
getKeyCode("dpad_right", dpad_right_text);
Button dpad_right = (Button) getView().findViewById(
R.id.dpad_right_edit);
dpad_right.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("dpad_right", dpad_right_text);
}
});
Button right_remove = (Button) getView().findViewById(
R.id.remove_dpad_right);
right_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("dpad_right", dpad_right_text);
}
});
ImageView start_button_icon = (ImageView) getView().findViewById(
R.id.start_button_icon);
start_button_icon.setImageDrawable(getButtonImage(0, 64 / sS));
final TextView start_button_text = (TextView) getView().findViewById(
R.id.start_button_key);
getKeyCode("start_button", start_button_text);
Button start_button = (Button) getView().findViewById(
R.id.start_button_edit);
start_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("start_button", start_button_text);
}
});
Button start_remove = (Button) getView()
.findViewById(R.id.remove_start);
start_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("start_button", start_button_text);
}
});
ImageView select_button_icon = (ImageView) getView().findViewById(
R.id.select_button_icon);
select_button_icon.setImageResource(R.drawable.ic_drawer);
final TextView select_button_text = (TextView) getView().findViewById(
R.id.select_button_key);
Button select_button = (Button) getView().findViewById(
R.id.select_button_edit);
select_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mKey.intiateSearch("select_button", select_button_text);
}
});
Button select_remove = (Button) getView()
.findViewById(R.id.remove_select);
select_remove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
remKeyCode("select_button", select_button_text);
}
});
} }
/** /**
* Retrieve an image to serve as a visual representation * Retrieve an image to serve as a visual representation
* *
* @param int * @param int The x start value of the image within the atlas
* The x start value of the image within the atlas * @param int The y start value of the image within the atlas
* @param int
* The y start value of the image within the atlas
*/ */
private Drawable getButtonImage(int x, int y) { private Drawable getButtonImage(int x, int y) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
@ -405,6 +399,7 @@ public class InputModFragment extends Fragment {
matrix.postScale(32, 32); matrix.postScale(32, 32);
Bitmap resizedBitmap = Bitmap.createBitmap(image, x, y, 64 / sS, Bitmap resizedBitmap = Bitmap.createBitmap(image, x, y, 64 / sS,
64 / sS, matrix, true); 64 / sS, matrix, true);
@SuppressWarnings("deprecation")
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap); BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
image.recycle(); image.recycle();
image = null; image = null;
@ -426,17 +421,6 @@ public class InputModFragment extends Fragment {
return parentActivity.getResources().getDrawable(R.drawable.input); return parentActivity.getResources().getDrawable(R.drawable.input);
} }
private void getKeyCode(final String button, final TextView output) {
int keyCode = mPrefs.getInt(button + player, -1);
if (keyCode != -1) {
String label = output.getText().toString();
if (label.contains(":")) {
label = label.substring(0, label.indexOf(":"));
}
output.setText(label + ": " + String.valueOf(keyCode));
}
}
/** /**
* Prompt the user to specify the controller to modify * Prompt the user to specify the controller to modify
* *
@ -483,7 +467,7 @@ public class InputModFragment extends Fragment {
* @param textview * @param textview
* The output display for the assigned button value * The output display for the assigned button value
*/ */
public void intiateSearch(String button, final TextView output) { public void intiateSearch(final String button, final TextView output) {
this.button = button; this.button = button;
this.output = output; this.output = output;
isMapping = true; isMapping = true;
@ -498,22 +482,14 @@ public class InputModFragment extends Fragment {
isMapping = false; isMapping = false;
dialog.dismiss(); dialog.dismiss();
} }
}); });
builder.setOnKeyListener(new Dialog.OnKeyListener() { builder.setOnKeyListener(new Dialog.OnKeyListener() {
public boolean onKey(DialogInterface dialog, int keyCode, public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) { KeyEvent event) {
int value = mapButton(keyCode, event); mapButton(keyCode, event);
isMapping = false; isMapping = false;
dialog.dismiss(); dialog.dismiss();
if (value != -1) { return getKeyCode(button, output);
String label = output.getText().toString();
if (label.contains(":")) {
label = label.substring(0, label.indexOf(":"));
}
output.setText(label + ": " + String.valueOf(value));
return true;
}
return false;
} }
}); });
builder.create(); builder.create();
@ -523,8 +499,7 @@ public class InputModFragment extends Fragment {
/** /**
* Assign the user button to the emulator button * Assign the user button to the emulator button
* *
* @param int * @param int The keycode generated by the button being assigned
* The keycode generated by the button being assigned
* @param keyevent * @param keyevent
* The keyevent generated by the button being assigned * The keyevent generated by the button being assigned
*/ */
@ -542,6 +517,7 @@ public class InputModFragment extends Fragment {
return keyCode; return keyCode;
} }
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
public boolean dispatchTouchEvent(MotionEvent ev) { public boolean dispatchTouchEvent(MotionEvent ev) {
if (isMapping) { if (isMapping) {
if ((ev.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) { if ((ev.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
@ -581,13 +557,47 @@ public class InputModFragment extends Fragment {
return dispatchTouchEvent(ev); return dispatchTouchEvent(ev);
} }
} }
private void updateController(String player) {
switchModifiedLayoutEnabled.setChecked(mPrefs.getBoolean(
"modified_key_layout" + player, false));
switchCompatibilityEnabled.setChecked(mPrefs.getBoolean(
"controller_compat" + player, false));
getKeyCode("a_button", a_button_text);
getKeyCode("b_button", b_button_text);
getKeyCode("x_button", x_button_text);
getKeyCode("y_button", y_button_text);
getKeyCode("l_button", l_button_text);
getKeyCode("r_button", r_button_text);
getKeyCode("dpad_up", dpad_up_text);
getKeyCode("dpad_down", dpad_down_text);
getKeyCode("dpad_left", dpad_left_text);
getKeyCode("dpad_right", dpad_right_text);
getKeyCode("start_button", start_button_text);
getKeyCode("select_button", select_button_text);
}
private void remKeyCode(final String button, final TextView output) { private boolean getKeyCode(final String button, final TextView output) {
mPrefs.edit().remove(button + player).commit(); int keyCode = mPrefs.getInt(button + player, -1);
String label = output.getText().toString(); if (keyCode != -1) {
if (label.contains(":")) { String label = output.getText().toString();
label = label.substring(0, label.indexOf(":")); if (label.contains(":")) {
label = label.substring(0, label.indexOf(":"));
}
output.setText(label + ": " + String.valueOf(keyCode));
return true;
} else {
String label = output.getText().toString();
if (label.contains(":")) {
label = label.substring(0, label.indexOf(":"));
}
output.setText(label);
return false;
} }
output.setText(label); }
private void remKeyCode(final String button, TextView output) {
mPrefs.edit().remove(button + player).commit();
getKeyCode(button, output);
} }
} }

View File

@ -141,10 +141,6 @@ public class GL2JNIView extends GLSurfaceView
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean soundEndabled = prefs.getBoolean("sound_enabled", true); boolean soundEndabled = prefs.getBoolean("sound_enabled", true);
ethd = new EmuThread(soundEndabled); ethd = new EmuThread(soundEndabled);
if (!soundEndabled) {
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
// Ensures priority is not placed on disabled sound thread
}
touchVibrationEnabled = prefs.getBoolean("touch_vibration_enabled", true); touchVibrationEnabled = prefs.getBoolean("touch_vibration_enabled", true);
@ -587,6 +583,14 @@ public class GL2JNIView extends GLSurfaceView
} }
} }
public void fastForward(boolean enabled) {
if (enabled) {
ethd.setPriority(Thread.MIN_PRIORITY);
} else {
ethd.setPriority(Thread.NORM_PRIORITY);
}
}
class EmuThread extends Thread class EmuThread extends Thread
{ {
AudioTrack Player; AudioTrack Player;

View File

@ -38,6 +38,13 @@ public class OnScreenMenu {
private File sdcard = Environment.getExternalStorageDirectory(); private File sdcard = Environment.getExternalStorageDirectory();
private String home_directory = sdcard + "/dc"; private String home_directory = sdcard + "/dc";
private int frames = Config.frameskip;
private boolean screen = Config.widescreen;
private boolean limit = Config.limitfps;
private boolean audio;
private boolean masteraudio;
private boolean boosted = false;
public OnScreenMenu(Activity context, SharedPreferences prefs) { public OnScreenMenu(Activity context, SharedPreferences prefs) {
if (context instanceof GL2JNIActivity) { if (context instanceof GL2JNIActivity) {
this.mContext = (GL2JNIActivity) context; this.mContext = (GL2JNIActivity) context;
@ -46,6 +53,8 @@ public class OnScreenMenu {
if (prefs != null) { if (prefs != null) {
this.prefs = prefs; this.prefs = prefs;
home_directory = prefs.getString("home_directory", home_directory); home_directory = prefs.getString("home_directory", home_directory);
masteraudio = prefs.getBoolean("sound_enabled", true);
audio = masteraudio;
} }
vmuLcd = new VmuLcd(mContext); vmuLcd = new VmuLcd(mContext);
vmuLcd.setOnClickListener(new OnClickListener() { vmuLcd.setOnClickListener(new OnClickListener() {
@ -162,12 +171,9 @@ public class OnScreenMenu {
private View fullscreen; private View fullscreen;
private View framelimit; private View framelimit;
private View audiosetting; private View audiosetting;
private View fastforward;
private View fdown; private View fdown;
private View fup; private View fup;
private int frames = Config.frameskip;
private boolean screen = Config.widescreen;
private boolean limit = Config.limitfps;
private boolean audio;
public ConfigPopup(Context c) { public ConfigPopup(Context c) {
super(c); super(c);
@ -188,17 +194,16 @@ public class OnScreenMenu {
fullscreen = addbut(R.drawable.widescreen, new OnClickListener() { fullscreen = addbut(R.drawable.widescreen, new OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
if (screen) { if (screen) {
JNIdc.widescreen(1);
screen = true;
((ImageButton) fullscreen)
.setImageResource(R.drawable.normal_view);
} else {
JNIdc.widescreen(0); JNIdc.widescreen(0);
screen = false; screen = false;
((ImageButton) fullscreen) ((ImageButton) fullscreen)
.setImageResource(R.drawable.widescreen); .setImageResource(R.drawable.widescreen);
} else {
JNIdc.widescreen(1);
screen = true;
((ImageButton) fullscreen)
.setImageResource(R.drawable.normal_view);
} }
dismiss();
} }
}); });
if (screen) { if (screen) {
@ -233,20 +238,18 @@ public class OnScreenMenu {
if (limit) { if (limit) {
JNIdc.limitfps(0); JNIdc.limitfps(0);
limit = false; limit = false;
((ImageButton) audiosetting) ((ImageButton) framelimit)
.setImageResource(R.drawable.frames_limit_on); .setImageResource(R.drawable.frames_limit_on);
} else { } else {
JNIdc.limitfps(1); JNIdc.limitfps(1);
limit = true; limit = true;
((ImageButton) audiosetting) ((ImageButton) framelimit)
.setImageResource(R.drawable.frames_limit_off); .setImageResource(R.drawable.frames_limit_off);
} }
dismiss();
} }
}); });
if (limit) { if (limit) {
((ImageButton) audiosetting) ((ImageButton) framelimit)
.setImageResource(R.drawable.frames_limit_off); .setImageResource(R.drawable.frames_limit_off);
} }
hlay.addView(framelimit, params); hlay.addView(framelimit, params);
@ -255,31 +258,83 @@ public class OnScreenMenu {
new OnClickListener() { new OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
if (audio) { if (audio) {
((ImageButton) audiosetting)
.setImageResource(R.drawable.mute_sound);
if (mContext instanceof GL2JNIActivity) {
((GL2JNIActivity) mContext).mView
.audioDisable(false);
}
} else {
((ImageButton) audiosetting)
.setImageResource(R.drawable.enable_sound);
if (mContext instanceof GL2JNIActivity) { if (mContext instanceof GL2JNIActivity) {
((GL2JNIActivity) mContext).mView ((GL2JNIActivity) mContext).mView
.audioDisable(true); .audioDisable(true);
} }
((ImageButton) audiosetting)
.setImageResource(R.drawable.enable_sound);
audio = false;
} else {
if (mContext instanceof GL2JNIActivity) {
((GL2JNIActivity) mContext).mView
.audioDisable(false);
}
((ImageButton) audiosetting)
.setImageResource(R.drawable.mute_sound);
audio = true;
} }
dismiss();
audio = true;
} }
}); });
audio = prefs.getBoolean("sound_enabled", true);
if (audio) { if (audio) {
((ImageButton) audiosetting) ((ImageButton) audiosetting)
.setImageResource(R.drawable.mute_sound); .setImageResource(R.drawable.mute_sound);
} }
if (!masteraudio) {
audiosetting.setEnabled(false);
}
hlay.addView(audiosetting, params); hlay.addView(audiosetting, params);
fastforward = addbut(R.drawable.star,
new OnClickListener() {
public void onClick(View v) {
if (boosted) {
if (audio) {
if (mContext instanceof GL2JNIActivity) {
((GL2JNIActivity) mContext).mView
.audioDisable(false);
}
}
audiosetting.setEnabled(true);
if (limit) {
JNIdc.limitfps(1);
}
framelimit.setEnabled(true);
if (mContext instanceof GL2JNIActivity) {
((GL2JNIActivity) mContext).mView
.fastForward(true);
}
boosted = true;
((ImageButton) fastforward)
.setImageResource(R.drawable.star);
} else {
if (audio) {
if (mContext instanceof GL2JNIActivity) {
((GL2JNIActivity) mContext).mView
.audioDisable(true);
}
}
if (limit) {
JNIdc.limitfps(0);
}
audiosetting.setEnabled(false);
if (mContext instanceof GL2JNIActivity) {
((GL2JNIActivity) mContext).mView
.fastForward(false);
}
framelimit.setEnabled(false);
boosted = false;
((ImageButton) fastforward)
.setImageResource(R.drawable.reset);
}
}
});
if (boosted) {
((ImageButton) fastforward)
.setImageResource(R.drawable.reset);
}
hlay.addView(fastforward, params);
hlay.addView(addbut(R.drawable.close, new OnClickListener() { hlay.addView(addbut(R.drawable.close, new OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
popups.remove(ConfigPopup.this); popups.remove(ConfigPopup.this);

View File

@ -5,6 +5,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import tv.ouya.console.api.OuyaController; import tv.ouya.console.api.OuyaController;
import tv.ouya.console.api.OuyaFacade;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@ -150,6 +151,8 @@ public class Gamepad {
PackageManager pMan = context.getPackageManager(); PackageManager pMan = context.getPackageManager();
if (pMan.hasSystemFeature(PackageManager.FEATURE_TELEVISION)) { if (pMan.hasSystemFeature(PackageManager.FEATURE_TELEVISION)) {
return true; return true;
} else if (OuyaFacade.getInstance().isRunningOnOUYAHardware()) {
return true;
} }
return false; return false;
} }