diff --git a/build.sh b/build.sh index 5fc5fb03..c7ba575f 100755 --- a/build.sh +++ b/build.sh @@ -1,10 +1,10 @@ #!/bin/sh -ndk-build NDK_TOOLCHAIN_VERSION=4.8 NDK_DEBUG=0 V=0 XASH_SDL=1 -j 8 APP_CFLAGS="-w -Wl,--no-undefined" APP_LDFLAGS="-Wl,--no-undefined" +ndk-build NDK_TOOLCHAIN_VERSION=4.8 NDK_DEBUG=0 V=0 XASH_SDL=0 -j 8 APP_CFLAGS="-w -Wl,--no-undefined" APP_LDFLAGS="-Wl,--no-undefined" sh gen-version.sh default-release rm assets/extras.pak 2>/dev/null python2 makepak.py xash-extras assets/extras.pak ant release jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../myks.keystore bin/xashdroid-release-unsigned.apk xashdroid rm bin/xashdroid-release.apk -/home/a1ba/.android/android-sdk-linux/build-tools/22.0.1/zipalign 4 bin/xashdroid-release-unsigned.apk bin/xashdroid-release.apk +#/home/a1ba/.android/android-sdk-linux/build-tools/22.0.1/zipalign 4 bin/xashdroid-release-unsigned.apk bin/xashdroid-release.apk diff --git a/project.properties b/project.properties index c052cd8f..4ab12569 100644 --- a/project.properties +++ b/project.properties @@ -11,4 +11,4 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-13 +target=android-19 diff --git a/res/layout/activity_launcher.xml b/res/layout/activity_launcher.xml index 2d0eb754..b83b2760 100644 --- a/res/layout/activity_launcher.xml +++ b/res/layout/activity_launcher.xml @@ -254,6 +254,15 @@ android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:text="@string/update_to_beta" /> + Cancel No updates was found Working... + Enable Immersive Mode(fullscreen, KitKat or higher) diff --git a/src/in/celest/xash3d/LauncherActivity.java b/src/in/celest/xash3d/LauncherActivity.java index 663c3ce8..0d479b0a 100644 --- a/src/in/celest/xash3d/LauncherActivity.java +++ b/src/in/celest/xash3d/LauncherActivity.java @@ -13,6 +13,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; +import android.view.WindowManager; import android.content.Intent; import android.content.ComponentName; @@ -63,6 +64,7 @@ public class LauncherActivity extends Activity { static ToggleButton resizeWorkaround; static CheckBox checkUpdates; static CheckBox updateToBeta; + static CheckBox immersiveMode; static SharedPreferences mPref; static Spinner pixelSpinner; static TextView tvResPath; @@ -82,7 +84,9 @@ public class LauncherActivity extends Activity { this.requestWindowFeature(Window.FEATURE_NO_TITLE); //super.setTheme( 0x01030005 ); if ( sdk >= 21 ) + { super.setTheme( 0x01030224 ); + } setContentView(R.layout.activity_launcher); @@ -101,14 +105,15 @@ public class LauncherActivity extends Activity { tabHost.addTab(tabSpec); mPref = getSharedPreferences("engine", 0); - cmdArgs = (EditText)findViewById(R.id.cmdArgs); + cmdArgs = (EditText) findViewById(R.id.cmdArgs); useVolume = (ToggleButton) findViewById( R.id.useVolume ); resPath = (EditText) findViewById( R.id.cmdPath ); - checkUpdates = (CheckBox)findViewById(R.id.check_updates); - updateToBeta = (CheckBox)findViewById(R.id.check_betas); - pixelSpinner = (Spinner) findViewById(R.id.pixelSpinner); + checkUpdates = (CheckBox)findViewById( R.id.check_updates ); + updateToBeta = (CheckBox)findViewById( R.id.check_betas ); + pixelSpinner = (Spinner) findViewById( R.id.pixelSpinner ); resizeWorkaround = (ToggleButton) findViewById( R.id.enableResizeWorkaround ); tvResPath = (TextView) findViewById( R.id.textView_path ); + immersiveMode = (CheckBox) findViewById( R.id.immersive_mode ); final String[] list = { "32 bit (RGBA8888)", @@ -121,31 +126,6 @@ public class LauncherActivity extends Activity { ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, list); adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); pixelSpinner.setAdapter(adapter); - Button selectFolderButton = ( Button ) findViewById( R.id.button_select ); - selectFolderButton.setOnClickListener(new View.OnClickListener(){ - @Override - public void onClick(View v) { - selectFolder(v); - } - }); - ((Button)findViewById( R.id.button_launch )).setOnClickListener(new View.OnClickListener(){ - @Override - public void onClick(View v) { - startXash(v); - } - }); - ((Button)findViewById( R.id.button_shortcut )).setOnClickListener(new View.OnClickListener(){ - @Override - public void onClick(View v) { - createShortcut(v); - } - }); - ((Button)findViewById( R.id.button_about )).setOnClickListener(new View.OnClickListener(){ - @Override - public void onClick(View v) { - aboutXash(v); - } - }); useVolume.setChecked(mPref.getBoolean("usevolume",true)); checkUpdates.setChecked(mPref.getBoolean("check_updates",true)); updateToBeta.setChecked(mPref.getBoolean("check_betas", false)); @@ -154,6 +134,15 @@ public class LauncherActivity extends Activity { pixelSpinner.setSelection(mPref.getInt("pixelformat", 0)); resizeWorkaround.setChecked(mPref.getBoolean("enableResizeWorkaround", true)); + if( sdk >= 19 ) + { + immersiveMode.setChecked(mPref.getBoolean("immersive_mode", true)); + } + else + { + immersiveMode.setVisibility(View.GONE); // not available + } + resPath.setOnFocusChangeListener( new View.OnFocusChangeListener() { @Override @@ -188,6 +177,10 @@ public class LauncherActivity extends Activity { editor.putInt("pixelformat", pixelSpinner.getSelectedItemPosition()); editor.putBoolean("enableResizeWorkaround",resizeWorkaround.isChecked()); editor.putBoolean("check_updates", checkUpdates.isChecked()); + if( sdk >= 19 ) + editor.putBoolean("immersive_mode", immersiveMode.isChecked()); + else + editor.putBoolean("immersive_mode", false); // just in case... editor.commit(); startActivity(intent); } diff --git a/src/in/celest/xash3d/XashActivity.java b/src/in/celest/xash3d/XashActivity.java index 163fbd1e..ef4703ac 100644 --- a/src/in/celest/xash3d/XashActivity.java +++ b/src/in/celest/xash3d/XashActivity.java @@ -57,6 +57,8 @@ public class XashActivity extends Activity { // Preferences public static SharedPreferences mPref = null; private static boolean mUseVolume; + private static boolean mEnableImmersive; + private static View mDecorView; // Audio private static Thread mAudioThread; @@ -68,6 +70,7 @@ public class XashActivity extends Activity { } // Setup + @Override protected void onCreate(Bundle savedInstanceState) { Log.v(TAG, "onCreate()"); super.onCreate(savedInstanceState); @@ -153,18 +156,41 @@ public class XashActivity extends Activity { mUseVolume = mPref.getBoolean("usevolume", false); if( mPref.getBoolean("enableResizeWorkaround", true) ) AndroidBug5497Workaround.assistActivity(this); + + // Immersive Mode is available only at >KitKat + mEnableImmersive = (sdk >= 19 && mPref.getBoolean("immersive_mode", true)); + mDecorView = getWindow().getDecorView(); } // Events + @Override protected void onPause() { Log.v(TAG, "onPause()"); super.onPause(); } + @Override protected void onResume() { Log.v(TAG, "onResume()"); super.onResume(); } + + @Override + public void onWindowFocusChanged(boolean hasFocus) + { + super.onWindowFocusChanged(hasFocus); + + if( mEnableImmersive && hasFocus ) + { + mDecorView.setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar + | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); + } + } public static native int nativeInit(Object arguments); public static native void nativeQuit(); @@ -206,6 +232,11 @@ public class XashActivity extends Activity { public static void toggleEGL(int toggle) { mSurface.toggleEGL(toggle); } + + public static boolean deleteGLContext() { + mSurface.ShutdownGL(); + return true; + } public static Context getContext() { return mSingleton; @@ -539,7 +570,6 @@ View.OnKeyListener { // EGL functions public boolean InitGL() { - try { EGL10 egl = (EGL10)EGLContext.getEGL(); @@ -664,6 +694,17 @@ View.OnKeyListener { mEGLSurface = null; } } + public void ShutdownGL() + { + mEGL.eglDestroyContext(mEGLDisplay, mEGLContext); + mEGLContext = null; + + mEGL.eglDestroySurface(mEGLDisplay, mEGLSurface); + mEGLSurface = null; + + mEGL.eglTerminate(mEGLDisplay); + mEGLDisplay = null; + } @Override