OSDN Git Service

Add live wallpaper support
authorKazuhiko Kobayashi <chototsu_moushinp@yahoo.co.jp>
Sun, 29 Jul 2012 04:13:35 +0000 (13:13 +0900)
committerkobayasi <kobayasi@pscnet.co.jp>
Sat, 6 Jul 2013 01:37:50 +0000 (10:37 +0900)
engine/src/android/com/jme3/audio/android/AndroidAudioRenderer.java
engine/src/android/com/jme3/renderer/android/OGLESShaderRenderer.java
engine/src/android/com/jme3/system/JmeSystem.java
engine/src/android/com/jme3/system/android/OGLESContext.java

index b978e41..2d50b82 100644 (file)
@@ -86,10 +86,12 @@ public class AndroidAudioRenderer implements AudioRenderer, SoundPool.OnLoadComp
     private Listener listener;
     private boolean audioDisabled = false;
 
-    public AndroidAudioRenderer(Activity context) {
+    public AndroidAudioRenderer(Context context) {
         this.context = context;
         manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
-        context.setVolumeControlStream(AudioManager.STREAM_MUSIC);
+        if (context instanceof Activity) {
+            ((Activity)context).setVolumeControlStream(AudioManager.STREAM_MUSIC);
+        }
         am = context.getAssets();
     }
 
index faf4907..a90bc23 100644 (file)
@@ -37,6 +37,7 @@ import android.opengl.GLES11;
 import android.opengl.GLES20;
 import android.os.Build;
 import com.jme3.app.AndroidHarness;
+import com.jme3.app.Application;
 import com.jme3.asset.AssetManager;
 import com.jme3.asset.DesktopAssetManager;
 import com.jme3.asset.TextureKey;
@@ -270,7 +271,7 @@ public class OGLESShaderRenderer implements Renderer {
          */
         GLES20.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE, intBuf16);
         maxTexSize = intBuf16.get(0);
-        logger.log(Level.INFO, "Maximum Texture Resolution: {0}", maxTexSize);
+        logger.log(Level.INFO, "Maximum Texture Resolution: {0}"+ maxTexSize);
 
         GLES20.glGetIntegerv(GLES20.GL_MAX_CUBE_MAP_TEXTURE_SIZE, intBuf16);
         maxCubeTexSize = intBuf16.get(0);
@@ -1990,7 +1991,13 @@ public class OGLESShaderRenderer implements Renderer {
             if ( bmp.isRecycled() )
             {
             // We need to reload the bitmap
-            DesktopAssetManager assetManager = (DesktopAssetManager)((AndroidHarness)JmeSystem.getActivity()).getJmeApplication().getAssetManager();
+            DesktopAssetManager assetManager;
+            try {
+                assetManager = (DesktopAssetManager)((AndroidHarness)JmeSystem.getActivity()).getJmeApplication().getAssetManager();
+            } catch(ClassCastException ex) {
+                Application app = JmeSystem.getApplication();
+                assetManager = (DesktopAssetManager) app.getAssetManager();
+            }
             assetManager.deleteFromCache((TextureKey)tex.getKey());
             Texture textureReloaded = assetManager.loadTexture((TextureKey)tex.getKey());
             image.setEfficentData( textureReloaded.getImage().getEfficentData());
index bffcb20..0adf836 100644 (file)
@@ -1,7 +1,9 @@
 package com.jme3.system;\r
 \r
 import android.app.Activity;\r
+import android.content.Context;\r
 import android.content.res.Resources;\r
+import com.jme3.app.Application;\r
 import com.jme3.util.AndroidLogHandler;\r
 import com.jme3.asset.AndroidAssetManager;\r
 import com.jme3.asset.AssetManager;\r
@@ -23,7 +25,8 @@ public class JmeSystem {
     private static boolean initialized = false;\r
     private static boolean lowPermissions = false;\r
     private static Resources res;\r
-    private static Activity activity;\r
+    private static Context activity;\r
+    private static ThreadLocal<Application> app = new ThreadLocal<Application>();\r
 \r
     public static void initialize(AppSettings settings) {\r
         if (initialized) {\r
@@ -56,6 +59,9 @@ public class JmeSystem {
 \r
     public static JmeContext newContext(AppSettings settings, Type contextType) {\r
         initialize(settings);\r
+        if (settings.getRenderer().startsWith("LiveWallpaper")) {\r
+            \r
+        }\r
         return new OGLESContext();\r
     }\r
 \r
@@ -71,11 +77,18 @@ public class JmeSystem {
         return res;\r
     }\r
 \r
-    public static void setActivity(Activity activity) {\r
+    public static void setActivity(Context activity) {\r
         JmeSystem.activity = activity;\r
+        \r
+    }\r
+    public static void setApplication(Application app) {\r
+        JmeSystem.app.set(app);\r
+    }\r
+    public static Application getApplication() {\r
+        return app.get();\r
     }\r
 \r
-    public static Activity getActivity() {\r
+    public static Context getActivity() {\r
         return activity;\r
     }\r
 \r
index e74091e..e0c0388 100644 (file)
@@ -475,8 +475,12 @@ public class OGLESContext implements JmeContext, GLSurfaceView.Renderer
     public void destroy(boolean waitFor) 
     {
         needClose.set(true);
-        if (waitFor)
+        if (waitFor) {
             waitFor(false);
+        } else {
+            listener.destroy();
+            listener = null;
+        }
     }
            
     public void destroy()