diff --git a/shell/android/res/layout/toast_layout.xml b/shell/android/res/layout/toast_layout.xml new file mode 100755 index 000000000..b7b2059fc --- /dev/null +++ b/shell/android/res/layout/toast_layout.xml @@ -0,0 +1,79 @@ + + + + + + + + + + \ No newline at end of file diff --git a/shell/android/res/values/strings.xml b/shell/android/res/values/strings.xml index 6507a831e..3dee13085 100644 --- a/shell/android/res/values/strings.xml +++ b/shell/android/res/values/strings.xml @@ -7,6 +7,7 @@ Storage Path (location of *.gdi, *.chd or *.cdi images) Default Game Storage Please configure a home directory. + Please move BIOS to %1$s/data/ Please configure a game directory. Unsupported kernel version! Locate diff --git a/shell/android/src/com/reicast/emulator/FileBrowser.java b/shell/android/src/com/reicast/emulator/FileBrowser.java index ee5b427ae..48c8ae442 100644 --- a/shell/android/src/com/reicast/emulator/FileBrowser.java +++ b/shell/android/src/com/reicast/emulator/FileBrowser.java @@ -189,8 +189,9 @@ public class FileBrowser extends Fragment { File home = new File(mPrefs.getString(Config.pref_home, home_directory)); if (!home.exists() || !home.isDirectory()) { - Toast.makeText(getActivity(), R.string.config_home, - Toast.LENGTH_LONG).show(); + MainActivity.showToastMessage(getActivity(), + getActivity().getString(R.string.config_home), + Toast.LENGTH_LONG); } if (!ImgBrowse && !games) { @@ -401,6 +402,11 @@ public class FileBrowser extends Fragment { .fromFile(game) : Uri.EMPTY); home_directory = game.getAbsolutePath().substring(0, game.getAbsolutePath().lastIndexOf(File.separator)); + if (!DataDirectoryBIOS()) { + MainActivity.showToastMessage(getActivity(), + getActivity().getString(R.string.config_data, home_directory), + Toast.LENGTH_LONG); + } mPrefs.edit().putString("home_directory", home_directory.replace("/data", "")).commit(); JNIdc.config(home_directory.replace("/data", "")); @@ -498,11 +504,10 @@ public class FileBrowser extends Fragment { mPrefs.edit() .putString(Config.pref_home, heading).commit(); - File data_directory = new File(heading, - "data"); - if (!data_directory.exists() - || !data_directory.isDirectory()) { - data_directory.mkdirs(); + if (!DataDirectoryBIOS()) { + MainActivity.showToastMessage(getActivity(), + getActivity().getString(R.string.config_data, home_directory), + Toast.LENGTH_LONG); } JNIdc.config(heading); } @@ -529,4 +534,18 @@ public class FileBrowser extends Fragment { } v.invalidate(); } + + private boolean DataDirectoryBIOS() { + File data_directory = new File(home_directory, "data"); + if (!data_directory.exists() || !data_directory.isDirectory()) { + data_directory.mkdirs(); + File bios = new File(home_directory, "dc_boot.bin"); + boolean success = bios.renameTo(new File(home_directory + "/data", "dc_boot.bin")); + File flash = new File(home_directory, "dc_flash.bin"); + success = flash.renameTo(new File(home_directory + "/data", "dc_flash.bin")); + return success; + } else { + return true; + } + } } diff --git a/shell/android/src/com/reicast/emulator/MainActivity.java b/shell/android/src/com/reicast/emulator/MainActivity.java index 60a8bc55c..de410d26b 100644 --- a/shell/android/src/com/reicast/emulator/MainActivity.java +++ b/shell/android/src/com/reicast/emulator/MainActivity.java @@ -20,14 +20,18 @@ import android.os.Bundle; import android.os.Environment; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; +import android.util.DisplayMetrics; import android.util.Log; +import android.view.Gravity; import android.view.KeyEvent; +import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnSystemUiVisibilityChangeListener; import android.view.View.OnTouchListener; import android.view.WindowManager; +import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -635,4 +639,29 @@ public class MainActivity extends SlidingFragmentActivity implements intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } + + public static void showToastMessage(Context context, String message, + int duration) { + LayoutInflater inflater = (LayoutInflater) context + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View layout = inflater.inflate(R.layout.toast_layout, null); + + ImageView image = (ImageView) layout.findViewById(R.id.image); + image.setImageResource(R.drawable.ic_launcher); + TextView text = (TextView) layout.findViewById(R.id.text); + text.setText(message); + + DisplayMetrics metrics = new DisplayMetrics(); + WindowManager winman = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + winman.getDefaultDisplay().getMetrics(metrics); + final float scale = context.getResources().getDisplayMetrics().density; + int toastPixels = (int) ((metrics.widthPixels * scale + 0.5f) / 18); + + Toast toast = new Toast(context); + toast.setGravity(Gravity.BOTTOM, 0, toastPixels); + toast.setDuration(duration); + toast.setView(layout); + toast.show(); + } }