diff --git a/project/AndroidManifestTemplate.xml b/project/AndroidManifestTemplate.xml index 9f13ae286..97f4bb0f5 100644 --- a/project/AndroidManifestTemplate.xml +++ b/project/AndroidManifestTemplate.xml @@ -40,7 +40,7 @@ /> - + diff --git a/project/java/Clipboard.java b/project/java/Clipboard.java new file mode 100644 index 000000000..2e6c99d40 --- /dev/null +++ b/project/java/Clipboard.java @@ -0,0 +1,140 @@ +/* +Simple DirectMedia Layer +Java source code (C) 2009-2014 Sergii Pylypenko + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +package net.sourceforge.clonekeenplus; + +import android.os.Bundle; +import android.os.Build; +import android.os.Environment; +import android.util.DisplayMetrics; +import android.util.Log; +import android.content.Context; +import android.content.res.Resources; +import android.content.res.AssetManager; +import android.app.Activity; +import android.view.MotionEvent; +import android.view.KeyEvent; +import android.view.InputDevice; +import android.view.Window; +import android.view.WindowManager; +import android.widget.TextView; +import android.widget.Toast; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; +import android.content.ClipboardManager; +import android.content.ClipboardManager.OnPrimaryClipChangedListener; +import android.app.PendingIntent; +import android.app.AlarmManager; +import android.content.Intent; +import android.view.View; +import android.view.Display; + + +public abstract class Clipboard +{ + public static Clipboard get() + { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) + return NewerClipboard.Holder.Instance; + return OlderClipboard.Holder.Instance; + } + public abstract void set(final Context context, final String text); + public abstract String get(final Context context); + public abstract void setListener(final Context context, final Runnable listener); + + private static class NewerClipboard extends Clipboard + { + private static class Holder + { + private static final NewerClipboard Instance = new NewerClipboard(); + } + public void set(final Context context, final String text) + { + try { + ClipboardManager clipboard = (ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE); + if( clipboard != null ) + clipboard.setText(text); + } catch (Exception e) { + Log.i("SDL", "setClipboardText() exception: " + e.toString()); + } + } + public String get(final Context context) + { + String ret = ""; + try { + ClipboardManager clipboard = (ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE); + if( clipboard != null && clipboard.getText() != null ) + ret = clipboard.getText().toString(); + } catch (Exception e) { + Log.i("SDL", "getClipboardText() exception: " + e.toString()); + } + return ret; + } + public void setListener(final Context context, final Runnable listener) + { + Log.i("SDL", "Cannot set clipboard listener on Android 2.3 or older"); + ClipboardManager clipboard = (ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE); + clipboard.addPrimaryClipChangedListener(new OnPrimaryClipChangedListener() + { + public void onPrimaryClipChanged() + { + listener.run(); + } + }); + } + } + + private static class OlderClipboard extends Clipboard + { + private static class Holder + { + private static final OlderClipboard Instance = new OlderClipboard(); + } + public void set(final Context context, final String text) + { + try { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE); + if( clipboard != null ) + clipboard.setText(text); + } catch (Exception e) { + Log.i("SDL", "setClipboardText() exception: " + e.toString()); + } + } + public String get(final Context context) + { + String ret = ""; + try { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE); + if( clipboard != null && clipboard.getText() != null ) + ret = clipboard.getText().toString(); + } catch (Exception e) { + Log.i("SDL", "getClipboardText() exception: " + e.toString()); + } + return ret; + } + public void setListener(final Context context, final Runnable listener) + { + Log.i("SDL", "Cannot set clipboard listener on Android 2.3 or older"); + } + } +} + + diff --git a/project/java/Video.java b/project/java/Video.java index 746a05d88..abe426e78 100644 --- a/project/java/Video.java +++ b/project/java/Video.java @@ -57,8 +57,6 @@ import android.widget.TextView; import android.widget.Toast; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; -import android.content.ClipboardManager; -import android.content.ClipboardManager.OnPrimaryClipChangedListener; import android.app.PendingIntent; import android.app.AlarmManager; import android.content.Intent; @@ -570,16 +568,14 @@ abstract class DifferentTouchInput } } - class DemoRenderer extends GLSurfaceView_SDL.Renderer { public DemoRenderer(MainActivity _context) { context = _context; - clipboard = (ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE); - clipboard.addPrimaryClipChangedListener(new OnPrimaryClipChangedListener() + Clipboard.get().setListener(context, new Runnable() { - public void onPrimaryClipChanged() + public void run() { nativeClipboardChanged(); } @@ -818,24 +814,12 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer public String getClipboardText() // Called from native code { - String ret = ""; - try { - if( clipboard != null && clipboard.getText() != null ) - ret = clipboard.getText().toString(); - } catch (Exception e) { - Log.i("SDL", "getClipboardText() exception: " + e.toString()); - } - return ret; + return Clipboard.get().get(context); } public void setClipboardText(final String s) // Called from native code { - try { - if( clipboard != null ) - clipboard.setText(s); - } catch (Exception e) { - Log.i("SDL", "setClipboardText() exception: " + e.toString()); - } + Clipboard.get().set(context, s); } public void exitApp() @@ -1008,7 +992,6 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer private boolean mFirstTimeStart = true; public int mWidth = 0; public int mHeight = 0; - private ClipboardManager clipboard = null; int mOrientationFrameHackyCounter = 0; public static final boolean mRatelimitTouchEvents = true; //(Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO); diff --git a/project/jni/application/ballfield/AndroidAppSettings.cfg b/project/jni/application/ballfield/AndroidAppSettings.cfg index eef046bfd..cf9d10beb 100644 --- a/project/jni/application/ballfield/AndroidAppSettings.cfg +++ b/project/jni/application/ballfield/AndroidAppSettings.cfg @@ -213,7 +213,7 @@ FirstStartMenuOptions='SettingsMenu.DummyMenu' # Specify architectures to compile, 'all' or 'y' to compile for all architectures. # Available architectures: armeabi armeabi-v7a armeabi-v7a-hard x86 mips -MultiABI='armeabi-v7a armeabi' +MultiABI='armeabi-v7a' # Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower AppMinimumRAM=0 diff --git a/project/jni/application/xserver/AndroidAppSettings.cfg b/project/jni/application/xserver/AndroidAppSettings.cfg index db1ff557b..b340ce714 100644 --- a/project/jni/application/xserver/AndroidAppSettings.cfg +++ b/project/jni/application/xserver/AndroidAppSettings.cfg @@ -7,10 +7,10 @@ AppName="XServer XSDL" AppFullName=x.org.server # Application version code (integer) -AppVersionCode=11122 +AppVersionCode=11123 # Application user-visible version name (string) -AppVersionName="1.11.22" +AppVersionName="1.11.23" # Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' # If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu