Android 1.5 support
This commit is contained in:
parent
11a29ac213
commit
126433c42c
10 changed files with 141 additions and 83 deletions
|
@ -4,17 +4,21 @@
|
||||||
#APP_STL := stlport_static
|
#APP_STL := stlport_static
|
||||||
|
|
||||||
XASH_SDL ?= 0
|
XASH_SDL ?= 0
|
||||||
|
XASH_LEGACY ?= 0
|
||||||
ifeq ($(XASH_SDL),1)
|
ifeq ($(XASH_SDL),1)
|
||||||
APP_PLATFORM := android-12
|
APP_PLATFORM := android-12
|
||||||
else
|
else
|
||||||
|
ifneq ($(XASH_LEGACY),1)
|
||||||
APP_PLATFORM := android-8
|
APP_PLATFORM := android-8
|
||||||
|
else
|
||||||
|
APP_PLATFORM := android-3
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
CFLAGS_OPT := -O3 -fomit-frame-pointer -ggdb -funsafe-math-optimizations -ftree-vectorize -fgraphite-identity -floop-interchange -funsafe-loop-optimizations -finline-limit=1024
|
CFLAGS_OPT := -O3 -fomit-frame-pointer -ggdb -funsafe-math-optimizations -ftree-vectorize -fgraphite-identity -floop-interchange -funsafe-loop-optimizations -finline-limit=1024
|
||||||
CFLAGS_OPT_ARM := -mthumb -mfpu=neon -mcpu=cortex-a9 -pipe -mvectorize-with-neon-quad -DVECTORIZE_SINCOS -fPIC
|
CFLAGS_OPT_ARM := -mthumb -mfpu=neon -mcpu=cortex-a9 -pipe -mvectorize-with-neon-quad -DVECTORIZE_SINCOS -fPIC
|
||||||
CFLAGS_OPT_ARMv5 :=-march=armv6 -mfpu=vfp -marm -pipe
|
CFLAGS_OPT_ARMv5 :=-march=armv5te -marm -pipe -msoft-float
|
||||||
CFLAGS_OPT_X86 := -mtune=atom -march=atom -mssse3 -mfpmath=sse -funroll-loops -pipe -DVECTORIZE_SINCOS
|
CFLAGS_OPT_X86 := -mtune=atom -march=atom -mssse3 -mfpmath=sse -funroll-loops -pipe -DVECTORIZE_SINCOS
|
||||||
CFLAGS_HARDFP := -D_NDK_MATH_NO_SOFTFP=1 -mhard-float -mfloat-abi=hard -DLOAD_HARDFP -DSOFTFP_LINK
|
CFLAGS_HARDFP := -D_NDK_MATH_NO_SOFTFP=1 -mhard-float -mfloat-abi=hard -DLOAD_HARDFP -DSOFTFP_LINK
|
||||||
APPLICATIONMK_PATH = $(call my-dir)
|
APPLICATIONMK_PATH = $(call my-dir)
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/folder"
|
android:text="@string/folder"
|
||||||
android:id="@+id/button2"
|
android:id="@+id/button_fpicker_select"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:onClick="onFileClick" />
|
android:onClick="onFileClick" />
|
||||||
|
|
|
@ -224,7 +224,7 @@
|
||||||
|
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/button"
|
android:id="@+id/button_shortcut"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="10dp"
|
android:layout_marginBottom="10dp"
|
||||||
|
@ -263,7 +263,7 @@
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/button"
|
android:id="@+id/button_about"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="left"
|
android:layout_gravity="left"
|
||||||
|
|
|
@ -18,6 +18,7 @@ import android.widget.ImageView;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
import android.widget.Button;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
|
@ -32,15 +33,22 @@ public class FPicker extends Activity {
|
||||||
private File currentDir;
|
private File currentDir;
|
||||||
private FileArrayAdapter adapter;
|
private FileArrayAdapter adapter;
|
||||||
static ListView delta;
|
static ListView delta;
|
||||||
|
public static final int sdk = Integer.valueOf(Build.VERSION.SDK);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
if ( Build.VERSION.SDK_INT >= 21 )
|
if ( sdk >= 21 )
|
||||||
super.setTheme( 0x01030224 );
|
super.setTheme( 0x01030224 );
|
||||||
setContentView(R.layout.activity_fpicker);
|
setContentView(R.layout.activity_fpicker);
|
||||||
String path = Environment.getExternalStorageDirectory().toString();
|
String path = Environment.getExternalStorageDirectory().toString();
|
||||||
currentDir = new File(path);
|
currentDir = new File(path);
|
||||||
|
((Button)findViewById( R.id.button_fpicker_select )).setOnClickListener(new View.OnClickListener(){
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
onFileClick(v);
|
||||||
|
}
|
||||||
|
});
|
||||||
fill(currentDir);
|
fill(currentDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,12 +3,45 @@ import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
|
||||||
public class InstallReceiver extends BroadcastReceiver {
|
public class InstallReceiver extends BroadcastReceiver {
|
||||||
private static final String TAG = "XASH3D";
|
private static final String TAG = "XASH3D";
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent arg1) {
|
public void onReceive(Context context, Intent arg1) {
|
||||||
Log.d( TAG, "Install received, extracting PAK" );
|
Log.d( TAG, "Install received, extracting PAK" );
|
||||||
org.libsdl.app.SDLActivity.extractPAK( context, true );
|
if( context.getPackageName() == arg1.getData().getEncodedSchemeSpecificPart() )
|
||||||
|
extractPAK(context, true);
|
||||||
}
|
}
|
||||||
|
public static SharedPreferences mPref = null;
|
||||||
|
private static final int PAK_VERSION = 5;
|
||||||
|
public static void extractPAK(Context context, Boolean force) {
|
||||||
|
InputStream is = null;
|
||||||
|
FileOutputStream os = null;
|
||||||
|
try {
|
||||||
|
if( mPref == null )
|
||||||
|
mPref = context.getSharedPreferences("engine", 0);
|
||||||
|
if( mPref.getInt( "pakversion", 0 ) == PAK_VERSION && !force )
|
||||||
|
return;
|
||||||
|
String path = context.getFilesDir().getPath()+"/extras.pak";
|
||||||
|
|
||||||
|
is = context.getAssets().open("extras.pak");
|
||||||
|
os = new FileOutputStream(path);
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int length;
|
||||||
|
while ((length = is.read(buffer)) > 0) {
|
||||||
|
os.write(buffer, 0, length);
|
||||||
|
}
|
||||||
|
os.close();
|
||||||
|
is.close();
|
||||||
|
SharedPreferences.Editor editor = mPref.edit();
|
||||||
|
editor.putInt( "pakversion", PAK_VERSION );
|
||||||
|
editor.commit();
|
||||||
|
} catch( Exception e )
|
||||||
|
{
|
||||||
|
Log.e( TAG, "Failed to extract PAK:" + e.toString() );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ import in.celest.xash3d.hl.R;
|
||||||
|
|
||||||
public class LauncherActivity extends Activity {
|
public class LauncherActivity extends Activity {
|
||||||
// public final static String ARGV = "in.celest.xash3d.MESSAGE";
|
// public final static String ARGV = "in.celest.xash3d.MESSAGE";
|
||||||
|
public final static int sdk = Integer.valueOf(Build.VERSION.SDK);
|
||||||
static EditText cmdArgs;
|
static EditText cmdArgs;
|
||||||
static ToggleButton useVolume;
|
static ToggleButton useVolume;
|
||||||
static EditText resPath;
|
static EditText resPath;
|
||||||
|
@ -47,10 +48,10 @@ public class LauncherActivity extends Activity {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||||
//super.setTheme( 0x01030005 );
|
//super.setTheme( 0x01030005 );
|
||||||
if ( Build.VERSION.SDK_INT >= 21 )
|
if ( sdk >= 21 )
|
||||||
super.setTheme( 0x01030224 );
|
super.setTheme( 0x01030224 );
|
||||||
setContentView(R.layout.activity_launcher);
|
setContentView(R.layout.activity_launcher);
|
||||||
|
|
||||||
TabHost tabHost = (TabHost) findViewById(R.id.tabhost);
|
TabHost tabHost = (TabHost) findViewById(R.id.tabhost);
|
||||||
|
|
||||||
tabHost.setup();
|
tabHost.setup();
|
||||||
|
@ -60,13 +61,37 @@ public class LauncherActivity extends Activity {
|
||||||
tabSpec.setIndicator(getString(R.string.text_tab1));
|
tabSpec.setIndicator(getString(R.string.text_tab1));
|
||||||
tabSpec.setContent(R.id.tab1);
|
tabSpec.setContent(R.id.tab1);
|
||||||
tabHost.addTab(tabSpec);
|
tabHost.addTab(tabSpec);
|
||||||
|
|
||||||
tabSpec = tabHost.newTabSpec("tabtag2");
|
tabSpec = tabHost.newTabSpec("tabtag2");
|
||||||
tabSpec.setIndicator(getString(R.string.text_tab2));
|
tabSpec.setIndicator(getString(R.string.text_tab2));
|
||||||
tabSpec.setContent(R.id.tab2);
|
tabSpec.setContent(R.id.tab2);
|
||||||
tabHost.addTab(tabSpec);
|
tabHost.addTab(tabSpec);
|
||||||
|
|
||||||
Button selectFolder = ( Button ) findViewById( R.id.button_select );
|
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);
|
||||||
|
}
|
||||||
|
});
|
||||||
// if ( Build.VERSION.SDK_INT < 21 )
|
// if ( Build.VERSION.SDK_INT < 21 )
|
||||||
// selectFolder.setVisibility( View.GONE );
|
// selectFolder.setVisibility( View.GONE );
|
||||||
mPref = getSharedPreferences("engine", 0);
|
mPref = getSharedPreferences("engine", 0);
|
||||||
|
@ -77,7 +102,7 @@ public class LauncherActivity extends Activity {
|
||||||
resPath = ( EditText ) findViewById( R.id.cmdPath );
|
resPath = ( EditText ) findViewById( R.id.cmdPath );
|
||||||
resPath.setText(mPref.getString("basedir", getDefaultPath()));
|
resPath.setText(mPref.getString("basedir", getDefaultPath()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startXash(View view)
|
public void startXash(View view)
|
||||||
{
|
{
|
||||||
Intent intent = new Intent(this, org.libsdl.app.SDLActivity.class);
|
Intent intent = new Intent(this, org.libsdl.app.SDLActivity.class);
|
||||||
|
@ -88,7 +113,6 @@ public class LauncherActivity extends Activity {
|
||||||
editor.putBoolean("usevolume",useVolume.isChecked());
|
editor.putBoolean("usevolume",useVolume.isChecked());
|
||||||
editor.putString("basedir", resPath.getText().toString());
|
editor.putString("basedir", resPath.getText().toString());
|
||||||
editor.commit();
|
editor.commit();
|
||||||
editor.apply();
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import android.graphics.BitmapFactory;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
import in.celest.xash3d.hl.R;
|
import in.celest.xash3d.hl.R;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
|
import android.widget.Button;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FilenameFilter;
|
import java.io.FilenameFilter;
|
||||||
|
|
||||||
|
@ -17,12 +18,13 @@ public class ShortcutActivity extends Activity
|
||||||
{
|
{
|
||||||
static EditText name, gamedir, pkgname, argv;
|
static EditText name, gamedir, pkgname, argv;
|
||||||
String [] env = null;
|
String [] env = null;
|
||||||
|
public static final int sdk = Integer.valueOf(Build.VERSION.SDK);
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle bundle)
|
protected void onCreate(Bundle bundle)
|
||||||
{
|
{
|
||||||
super.onCreate(bundle);
|
super.onCreate(bundle);
|
||||||
//material dialog
|
//material dialog
|
||||||
if ( Build.VERSION.SDK_INT >= 21 )
|
if ( sdk >= 21 )
|
||||||
super.setTheme( 0x01030225 );
|
super.setTheme( 0x01030225 );
|
||||||
setContentView(R.layout.activity_shortcut);
|
setContentView(R.layout.activity_shortcut);
|
||||||
Intent intent=getIntent();
|
Intent intent=getIntent();
|
||||||
|
@ -30,6 +32,12 @@ public class ShortcutActivity extends Activity
|
||||||
pkgname = (EditText)findViewById(R.id.shortcut_pkgname);
|
pkgname = (EditText)findViewById(R.id.shortcut_pkgname);
|
||||||
gamedir = (EditText)findViewById(R.id.shortcut_gamedir);
|
gamedir = (EditText)findViewById(R.id.shortcut_gamedir);
|
||||||
argv = (EditText)findViewById(R.id.shortcut_cmdArgs);
|
argv = (EditText)findViewById(R.id.shortcut_cmdArgs);
|
||||||
|
((Button)findViewById( R.id.shortcut_buttonOk )).setOnClickListener(new View.OnClickListener(){
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
saveShortcut(v);
|
||||||
|
}
|
||||||
|
});
|
||||||
String argvs = intent.getStringExtra("argv");
|
String argvs = intent.getStringExtra("argv");
|
||||||
if( argvs != null )
|
if( argvs != null )
|
||||||
argv.setText(argvs);
|
argv.setText(argvs);
|
||||||
|
@ -43,7 +51,7 @@ public class ShortcutActivity extends Activity
|
||||||
if( names != null )
|
if( names != null )
|
||||||
name.setText(names);
|
name.setText(names);
|
||||||
env = intent.getStringArrayExtra("env");
|
env = intent.getStringArrayExtra("env");
|
||||||
|
|
||||||
//name.setText("Name");
|
//name.setText("Name");
|
||||||
}
|
}
|
||||||
public void saveShortcut(View view)
|
public void saveShortcut(View view)
|
||||||
|
@ -62,7 +70,7 @@ public class ShortcutActivity extends Activity
|
||||||
Intent wrapIntent = new Intent();
|
Intent wrapIntent = new Intent();
|
||||||
wrapIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
|
wrapIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
|
||||||
wrapIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name.getText().toString());
|
wrapIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name.getText().toString());
|
||||||
|
|
||||||
Bitmap icon = null;
|
Bitmap icon = null;
|
||||||
// Try find icon
|
// Try find icon
|
||||||
int size = (int) getResources().getDimension(android.R.dimen.app_icon_size);
|
int size = (int) getResources().getDimension(android.R.dimen.app_icon_size);
|
||||||
|
@ -91,7 +99,7 @@ public class ShortcutActivity extends Activity
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
File gamedirfile = new File(gamedirstring);
|
File gamedirfile = new File(gamedirstring);
|
||||||
String files[] = gamedirfile.list(icoFilter);
|
String files[] = gamedirfile.list(icoFilter);
|
||||||
icon = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(gamedirstring+"/"+files[0]), size, size, false);
|
icon = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(gamedirstring+"/"+files[0]), size, size, false);
|
||||||
|
|
|
@ -29,6 +29,7 @@ public class XashActivity extends Activity {
|
||||||
protected static XashActivity mSingleton;
|
protected static XashActivity mSingleton;
|
||||||
private static EngineSurface mSurface;
|
private static EngineSurface mSurface;
|
||||||
private static String mArgv[];
|
private static String mArgv[];
|
||||||
|
public static final int sdk = Integer.valueOf(Build.VERSION.SDK);
|
||||||
|
|
||||||
// Preferences
|
// Preferences
|
||||||
public static SharedPreferences mPref = null;
|
public static SharedPreferences mPref = null;
|
||||||
|
@ -270,7 +271,8 @@ public class XashActivity extends Activity {
|
||||||
class XashMain implements Runnable {
|
class XashMain implements Runnable {
|
||||||
public void run() {
|
public void run() {
|
||||||
// Runs SDL_main()
|
// Runs SDL_main()
|
||||||
XashActivity.createGLContext();
|
|
||||||
|
XashActivity.createGLContext();
|
||||||
|
|
||||||
XashActivity.nativeInit(XashActivity.getArguments());
|
XashActivity.nativeInit(XashActivity.getArguments());
|
||||||
|
|
||||||
|
@ -286,7 +288,7 @@ class XashMain implements Runnable {
|
||||||
Because of this, that's where we set up the SDL thread
|
Because of this, that's where we set up the SDL thread
|
||||||
*/
|
*/
|
||||||
class EngineSurface extends SurfaceView implements SurfaceHolder.Callback,
|
class EngineSurface extends SurfaceView implements SurfaceHolder.Callback,
|
||||||
View.OnKeyListener, View.OnTouchListener {
|
View.OnKeyListener {
|
||||||
|
|
||||||
// This is what SDL runs in. It invokes SDL_main(), eventually
|
// This is what SDL runs in. It invokes SDL_main(), eventually
|
||||||
private Thread mEngThread;
|
private Thread mEngThread;
|
||||||
|
@ -307,7 +309,10 @@ View.OnKeyListener, View.OnTouchListener {
|
||||||
setFocusableInTouchMode(true);
|
setFocusableInTouchMode(true);
|
||||||
requestFocus();
|
requestFocus();
|
||||||
setOnKeyListener(this);
|
setOnKeyListener(this);
|
||||||
setOnTouchListener(this);
|
if( XashActivity.sdk >= 5 )
|
||||||
|
setOnTouchListener(new EngineTouchListener_v5());
|
||||||
|
else
|
||||||
|
setOnTouchListener(new EngineTouchListener_v1());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called when we have a valid drawing surface
|
// Called when we have a valid drawing surface
|
||||||
|
@ -412,11 +417,10 @@ View.OnKeyListener, View.OnTouchListener {
|
||||||
|
|
||||||
int[] configSpec = {
|
int[] configSpec = {
|
||||||
EGL10.EGL_DEPTH_SIZE, 8,
|
EGL10.EGL_DEPTH_SIZE, 8,
|
||||||
EGL10.EGL_RED_SIZE, 8,
|
EGL10.EGL_RED_SIZE, 5,
|
||||||
EGL10.EGL_GREEN_SIZE, 8,
|
EGL10.EGL_GREEN_SIZE, 6,
|
||||||
EGL10.EGL_BLUE_SIZE, 8,
|
EGL10.EGL_BLUE_SIZE, 5,
|
||||||
EGL10.EGL_ALPHA_SIZE, 0,
|
EGL10.EGL_ALPHA_SIZE, 0,
|
||||||
EGL10.EGL_RENDERABLE_TYPE, 1,
|
|
||||||
EGL10.EGL_NONE
|
EGL10.EGL_NONE
|
||||||
};
|
};
|
||||||
EGLConfig[] configs = new EGLConfig[1];
|
EGLConfig[] configs = new EGLConfig[1];
|
||||||
|
@ -505,11 +509,18 @@ View.OnKeyListener, View.OnTouchListener {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Touch events
|
class EngineTouchListener_v1 implements View.OnTouchListener{
|
||||||
|
// Touch events
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
/* Ref: http://developer.android.com/training/gestures/multi.html */
|
XashActivity.nativeTouch(0, event.getAction(), event.getX(), event.getY());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class EngineTouchListener_v5 implements View.OnTouchListener{
|
||||||
|
// Touch events
|
||||||
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
final int touchDevId = event.getDeviceId();
|
final int touchDevId = event.getDeviceId();
|
||||||
final int pointerCount = event.getPointerCount();
|
final int pointerCount = event.getPointerCount();
|
||||||
int action = event.getActionMasked();
|
int action = event.getActionMasked();
|
||||||
|
@ -559,9 +570,7 @@ View.OnKeyListener, View.OnTouchListener {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -65,19 +65,18 @@ import android.content.*;
|
||||||
*/
|
*/
|
||||||
public class SDLActivity extends Activity {
|
public class SDLActivity extends Activity {
|
||||||
private static final String TAG = "SDL";
|
private static final String TAG = "SDL";
|
||||||
private static final int PAK_VERSION = 5;
|
|
||||||
|
|
||||||
// Keep track of the paused state
|
// Keep track of the paused state
|
||||||
public static boolean mIsPaused, mIsSurfaceReady, mHasFocus, mUseVolume;
|
public static boolean mIsPaused, mIsSurfaceReady, mHasFocus, mUseVolume;
|
||||||
public static boolean mExitCalledFromJava;
|
public static boolean mExitCalledFromJava;
|
||||||
|
|
||||||
/** If shared libraries (e.g. SDL or the native application) could not be loaded. */
|
/** If shared libraries (e.g. SDL or the native application) could not be loaded. */
|
||||||
public static boolean mBrokenLibraries;
|
public static boolean mBrokenLibraries;
|
||||||
|
|
||||||
// If we want to separate mouse and touch events.
|
// If we want to separate mouse and touch events.
|
||||||
// This is only toggled in native code when a hint is set!
|
// This is only toggled in native code when a hint is set!
|
||||||
public static boolean mSeparateMouseAndTouch;
|
public static boolean mSeparateMouseAndTouch;
|
||||||
|
|
||||||
private static Vibrator mVibrator;
|
private static Vibrator mVibrator;
|
||||||
|
|
||||||
// Main components
|
// Main components
|
||||||
|
@ -95,7 +94,7 @@ public class SDLActivity extends Activity {
|
||||||
|
|
||||||
// Preferences
|
// Preferences
|
||||||
public static SharedPreferences mPref = null;
|
public static SharedPreferences mPref = null;
|
||||||
|
|
||||||
// Arguments
|
// Arguments
|
||||||
public static String[] mArgv;
|
public static String[] mArgv;
|
||||||
/**
|
/**
|
||||||
|
@ -153,15 +152,15 @@ public class SDLActivity extends Activity {
|
||||||
Log.v("SDL", "Model: " + android.os.Build.MODEL);
|
Log.v("SDL", "Model: " + android.os.Build.MODEL);
|
||||||
Log.v("SDL", "onCreate():" + mSingleton);
|
Log.v("SDL", "onCreate():" + mSingleton);
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
// fullscreen
|
// fullscreen
|
||||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||||
if(Build.VERSION.SDK_INT >= 12) {
|
if(Build.VERSION.SDK_INT >= 12) {
|
||||||
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
|
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
|
||||||
WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
// keep screen on
|
// keep screen on
|
||||||
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
|
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
|
||||||
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||||
|
|
||||||
|
@ -205,7 +204,7 @@ public class SDLActivity extends Activity {
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Intent intent=getIntent();
|
Intent intent=getIntent();
|
||||||
String argv = intent.getStringExtra("argv");
|
String argv = intent.getStringExtra("argv");
|
||||||
if(argv == null) argv = mPref.getString("argv", "-dev 3 -log");
|
if(argv == null) argv = mPref.getString("argv", "-dev 3 -log");
|
||||||
|
@ -220,13 +219,13 @@ public class SDLActivity extends Activity {
|
||||||
String basedir = intent.getStringExtra("basedir");
|
String basedir = intent.getStringExtra("basedir");
|
||||||
if(basedir == null)
|
if(basedir == null)
|
||||||
basedir = mPref.getString("basedir","/sdcard/xash/");
|
basedir = mPref.getString("basedir","/sdcard/xash/");
|
||||||
|
|
||||||
setenv("XASH3D_BASEDIR", basedir, true);
|
setenv("XASH3D_BASEDIR", basedir, true);
|
||||||
setenv("XASH3D_ENGLIBDIR", getFilesDir().getParentFile().getPath() + "/lib", true);
|
setenv("XASH3D_ENGLIBDIR", getFilesDir().getParentFile().getPath() + "/lib", true);
|
||||||
setenv("XASH3D_GAMELIBDIR", gamelibdir, true);
|
setenv("XASH3D_GAMELIBDIR", gamelibdir, true);
|
||||||
setenv("XASH3D_GAMEDIR", gamedir, true);
|
setenv("XASH3D_GAMEDIR", gamedir, true);
|
||||||
|
|
||||||
extractPAK(this, false);
|
in.celest.xash3d.InstallReceiver.extractPAK(this, false);
|
||||||
setenv("XASH3D_EXTRAS_PAK1", getFilesDir().getPath() + "/extras.pak", true);
|
setenv("XASH3D_EXTRAS_PAK1", getFilesDir().getPath() + "/extras.pak", true);
|
||||||
String pakfile = intent.getStringExtra("pakfile");
|
String pakfile = intent.getStringExtra("pakfile");
|
||||||
if( pakfile != null && pakfile != "" )
|
if( pakfile != null && pakfile != "" )
|
||||||
|
@ -271,7 +270,7 @@ public class SDLActivity extends Activity {
|
||||||
}
|
}
|
||||||
|
|
||||||
if( mVibrator != null ) mVibrator.cancel();
|
if( mVibrator != null ) mVibrator.cancel();
|
||||||
|
|
||||||
SDLActivity.handlePause();
|
SDLActivity.handlePause();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,10 +321,10 @@ public class SDLActivity extends Activity {
|
||||||
and kills process while engine is writing config.
|
and kills process while engine is writing config.
|
||||||
it results in configuration loss, so we preferred to disable it
|
it results in configuration loss, so we preferred to disable it
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if( mVibrator != null ) mVibrator.cancel();
|
if( mVibrator != null ) mVibrator.cancel();
|
||||||
|
|
||||||
if (SDLActivity.mBrokenLibraries) {
|
if (SDLActivity.mBrokenLibraries) {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
// Reset everything in case the user re opens the app
|
// Reset everything in case the user re opens the app
|
||||||
|
@ -352,7 +351,7 @@ public class SDLActivity extends Activity {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
// Reset everything in case the user re opens the app
|
// Reset everything in case the user re opens the app
|
||||||
finish();
|
finish();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -511,23 +510,23 @@ public class SDLActivity extends Activity {
|
||||||
public static native int nativeRemoveJoystick(int device_id);
|
public static native int nativeRemoveJoystick(int device_id);
|
||||||
public static native String nativeGetHint(String name);
|
public static native String nativeGetHint(String name);
|
||||||
public static native int setenv(String key, String value, boolean overwrite);
|
public static native int setenv(String key, String value, boolean overwrite);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called by SDL using JNI.
|
* This method is called by SDL using JNI.
|
||||||
*/
|
*/
|
||||||
public static void flipBuffers() {
|
public static void flipBuffers() {
|
||||||
SDLActivity.nativeFlipBuffers();
|
SDLActivity.nativeFlipBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called by Xash3D engine using JNI
|
* This method is called by Xash3D engine using JNI
|
||||||
*/
|
*/
|
||||||
public void vibrate( short time ) {
|
public void vibrate( short time ) {
|
||||||
mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
|
mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
|
||||||
|
|
||||||
mVibrator.vibrate( time );
|
mVibrator.vibrate( time );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called by SDL using JNI.
|
* This method is called by SDL using JNI.
|
||||||
*/
|
*/
|
||||||
|
@ -1033,34 +1032,7 @@ public class SDLActivity extends Activity {
|
||||||
Log.e( TAG, "Failed to extract PAK:" + e.toString() );
|
Log.e( TAG, "Failed to extract PAK:" + e.toString() );
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
public static void extractPAK(Context context, Boolean force) {
|
|
||||||
InputStream is = null;
|
|
||||||
FileOutputStream os = null;
|
|
||||||
try {
|
|
||||||
if( mPref == null )
|
|
||||||
mPref = context.getSharedPreferences("engine", 0);
|
|
||||||
if( mPref.getInt( "pakversion", 0 ) == PAK_VERSION && !force )
|
|
||||||
return;
|
|
||||||
String path = context.getFilesDir().getPath()+"/extras.pak";
|
|
||||||
|
|
||||||
is = context.getAssets().open("extras.pak");
|
|
||||||
os = new FileOutputStream(path);
|
|
||||||
byte[] buffer = new byte[1024];
|
|
||||||
int length;
|
|
||||||
while ((length = is.read(buffer)) > 0) {
|
|
||||||
os.write(buffer, 0, length);
|
|
||||||
}
|
|
||||||
os.close();
|
|
||||||
is.close();
|
|
||||||
SharedPreferences.Editor editor = mPref.edit();
|
|
||||||
editor.putInt( "pakversion", PAK_VERSION );
|
|
||||||
editor.commit();
|
|
||||||
editor.apply();
|
|
||||||
} catch( Exception e )
|
|
||||||
{
|
|
||||||
Log.e( TAG, "Failed to extract PAK:" + e.toString() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1070,7 +1042,7 @@ class SDLMain implements Runnable {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
// Runs SDL_main()
|
// Runs SDL_main()
|
||||||
SDLActivity.nativeInit(SDLActivity.mArgv);
|
SDLActivity.nativeInit(SDLActivity.mArgv);
|
||||||
//Log.v("SDL", "SDL thread terminated");
|
//Log.v("SDL", "SDL thread terminated");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1278,7 +1250,7 @@ View.OnKeyListener, View.OnTouchListener, SensorEventListener {
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
|
|
||||||
/* Ref: http://developer.android.com/training/gestures/multi.html */
|
/* Ref: http://developer.android.com/training/gestures/multi.html */
|
||||||
|
|
||||||
final int touchDevId = event.getDeviceId();
|
final int touchDevId = event.getDeviceId();
|
||||||
final int pointerCount = event.getPointerCount();
|
final int pointerCount = event.getPointerCount();
|
||||||
int action = event.getActionMasked();
|
int action = event.getActionMasked();
|
||||||
|
|
|
@ -97,7 +97,7 @@
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
<!-- Android 2.3 -->
|
<!-- Android 2.3 -->
|
||||||
<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="9" />
|
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="9" />
|
||||||
|
|
||||||
<!-- OpenGL ES 1.1 -->
|
<!-- OpenGL ES 1.1 -->
|
||||||
<uses-feature android:glEsVersion="0x00010000" />
|
<uses-feature android:glEsVersion="0x00010000" />
|
||||||
|
|
Loading…
Add table
Reference in a new issue