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();
+ }
}