git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9442 75d07b2b-3a1a-0410-a2c5-0572b91ccdca3.0
parent
4ee09fa52e
commit
3cdeb6ed4d
@ -1,145 +1,145 @@ |
|||||||
package com.jme3.system.android; |
package com.jme3.system.android; |
||||||
|
|
||||||
import android.app.Activity; |
import android.app.Activity; |
||||||
import android.os.Environment; |
import android.os.Environment; |
||||||
import android.util.Log; |
import android.util.Log; |
||||||
import com.jme3.asset.AndroidAssetManager; |
import com.jme3.asset.AndroidAssetManager; |
||||||
import com.jme3.asset.AssetManager; |
import com.jme3.asset.AssetManager; |
||||||
import com.jme3.audio.AudioRenderer; |
import com.jme3.audio.AudioRenderer; |
||||||
import com.jme3.audio.android.AndroidAudioRenderer; |
import com.jme3.audio.android.AndroidAudioRenderer; |
||||||
import com.jme3.system.AppSettings; |
import com.jme3.system.AppSettings; |
||||||
import com.jme3.system.JmeContext; |
import com.jme3.system.JmeContext; |
||||||
import com.jme3.system.JmeContext.Type; |
import com.jme3.system.JmeContext.Type; |
||||||
import com.jme3.system.JmeSystemDelegate; |
import com.jme3.system.JmeSystemDelegate; |
||||||
import com.jme3.system.Platform; |
import com.jme3.system.Platform; |
||||||
import com.jme3.util.JmeFormatter; |
import com.jme3.util.JmeFormatter; |
||||||
import java.io.File; |
import java.io.File; |
||||||
import java.net.URL; |
import java.net.URL; |
||||||
import java.util.logging.Handler; |
import java.util.logging.Handler; |
||||||
import java.util.logging.Level; |
import java.util.logging.Level; |
||||||
import java.util.logging.Logger; |
import java.util.logging.Logger; |
||||||
|
|
||||||
public class JmeAndroidSystem extends JmeSystemDelegate { |
public class JmeAndroidSystem extends JmeSystemDelegate { |
||||||
|
|
||||||
private static Activity activity; |
private static Activity activity; |
||||||
|
|
||||||
static { |
static { |
||||||
try { |
try { |
||||||
System.loadLibrary("bulletjme"); |
System.loadLibrary("bulletjme"); |
||||||
} catch (UnsatisfiedLinkError e) { |
} catch (UnsatisfiedLinkError e) { |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
@Override |
@Override |
||||||
public AssetManager newAssetManager(URL configFile) { |
public AssetManager newAssetManager(URL configFile) { |
||||||
logger.log(Level.INFO, "Creating asset manager with config {0}", configFile); |
logger.log(Level.INFO, "Creating asset manager with config {0}", configFile); |
||||||
return new AndroidAssetManager(configFile); |
return new AndroidAssetManager(configFile); |
||||||
} |
} |
||||||
|
|
||||||
@Override |
@Override |
||||||
public AssetManager newAssetManager() { |
public AssetManager newAssetManager() { |
||||||
logger.log(Level.INFO, "Creating asset manager with default config"); |
logger.log(Level.INFO, "Creating asset manager with default config"); |
||||||
return new AndroidAssetManager(null); |
return new AndroidAssetManager(null); |
||||||
} |
} |
||||||
|
|
||||||
@Override |
@Override |
||||||
public boolean showSettingsDialog(AppSettings sourceSettings, boolean loadFromRegistry) { |
public boolean showSettingsDialog(AppSettings sourceSettings, boolean loadFromRegistry) { |
||||||
return true; |
return true; |
||||||
} |
} |
||||||
|
|
||||||
@Override |
@Override |
||||||
public JmeContext newContext(AppSettings settings, Type contextType) { |
public JmeContext newContext(AppSettings settings, Type contextType) { |
||||||
initialize(settings); |
initialize(settings); |
||||||
return new OGLESContext(); |
return new OGLESContext(); |
||||||
} |
} |
||||||
|
|
||||||
@Override |
@Override |
||||||
public AudioRenderer newAudioRenderer(AppSettings settings) { |
public AudioRenderer newAudioRenderer(AppSettings settings) { |
||||||
return new AndroidAudioRenderer(activity); |
return new AndroidAudioRenderer(activity); |
||||||
} |
} |
||||||
|
|
||||||
@Override |
@Override |
||||||
public void initialize(AppSettings settings) { |
public void initialize(AppSettings settings) { |
||||||
if (initialized) { |
if (initialized) { |
||||||
return; |
return; |
||||||
} |
} |
||||||
|
|
||||||
initialized = true; |
initialized = true; |
||||||
try { |
try { |
||||||
// JmeFormatter formatter = new JmeFormatter();
|
// JmeFormatter formatter = new JmeFormatter();
|
||||||
// Handler consoleHandler = new AndroidLogHandler();
|
// Handler consoleHandler = new AndroidLogHandler();
|
||||||
// consoleHandler.setFormatter(formatter);
|
// consoleHandler.setFormatter(formatter);
|
||||||
//
|
//
|
||||||
// Logger log = Logger.getLogger("");
|
// Logger log = Logger.getLogger("");
|
||||||
// for (Handler h : log.getHandlers()) {
|
// for (Handler h : log.getHandlers()) {
|
||||||
// log.removeHandler(h);
|
// log.removeHandler(h);
|
||||||
// }
|
// }
|
||||||
// log.addHandler(consoleHandler);
|
// log.addHandler(consoleHandler);
|
||||||
Logger log = Logger.getLogger(JmeAndroidSystem.class.getName()); |
Logger log = Logger.getLogger(JmeAndroidSystem.class.getName()); |
||||||
boolean bIsLogFormatSet = false; |
boolean bIsLogFormatSet = false; |
||||||
do { |
do { |
||||||
log.setLevel(Level.ALL); |
log.setLevel(Level.ALL); |
||||||
if (log.getHandlers().length == 0) { |
if (log.getHandlers().length == 0) { |
||||||
log = logger.getParent(); |
log = log.getParent(); |
||||||
if (log != null) { |
if (log != null) { |
||||||
for (Handler h : log.getHandlers()) { |
for (Handler h : log.getHandlers()) { |
||||||
h.setFormatter(new JmeFormatter()); |
h.setFormatter(new JmeFormatter()); |
||||||
h.setLevel(Level.ALL); |
h.setLevel(Level.ALL); |
||||||
bIsLogFormatSet = true; |
bIsLogFormatSet = true; |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
} while (log != null && !bIsLogFormatSet); |
} while (log != null && !bIsLogFormatSet); |
||||||
} catch (SecurityException ex) { |
} catch (SecurityException ex) { |
||||||
logger.log(Level.SEVERE, "Security error in creating log file", ex); |
logger.log(Level.SEVERE, "Security error in creating log file", ex); |
||||||
} |
} |
||||||
logger.log(Level.INFO, "Running on {0}", getFullName()); |
logger.log(Level.INFO, "Running on {0}", getFullName()); |
||||||
} |
} |
||||||
|
|
||||||
@Override |
@Override |
||||||
public Platform getPlatform() { |
public Platform getPlatform() { |
||||||
String arch = System.getProperty("os.arch").toLowerCase(); |
String arch = System.getProperty("os.arch").toLowerCase(); |
||||||
if (arch.contains("arm")) { |
if (arch.contains("arm")) { |
||||||
if (arch.contains("v5")) { |
if (arch.contains("v5")) { |
||||||
return Platform.Android_ARM5; |
return Platform.Android_ARM5; |
||||||
} else if (arch.contains("v6")) { |
} else if (arch.contains("v6")) { |
||||||
return Platform.Android_ARM6; |
return Platform.Android_ARM6; |
||||||
} else if (arch.contains("v7")) { |
} else if (arch.contains("v7")) { |
||||||
return Platform.Android_ARM7; |
return Platform.Android_ARM7; |
||||||
} else { |
} else { |
||||||
return Platform.Android_ARM5; // unknown ARM
|
return Platform.Android_ARM5; // unknown ARM
|
||||||
} |
} |
||||||
} else { |
} else { |
||||||
throw new UnsupportedOperationException("Unsupported Android Platform"); |
throw new UnsupportedOperationException("Unsupported Android Platform"); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
@Override |
@Override |
||||||
public synchronized File getStorageFolder() { |
public synchronized File getStorageFolder() { |
||||||
//http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir
|
//http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir
|
||||||
//http://developer.android.com/guide/topics/data/data-storage.html
|
//http://developer.android.com/guide/topics/data/data-storage.html
|
||||||
|
|
||||||
String state = Environment.getExternalStorageState(); |
String state = Environment.getExternalStorageState(); |
||||||
if (Environment.MEDIA_MOUNTED.equals(state)) { |
if (Environment.MEDIA_MOUNTED.equals(state)) { |
||||||
// getExternalFilesDir automatically creates the directory if necessary.
|
// getExternalFilesDir automatically creates the directory if necessary.
|
||||||
// directory structure should be: /mnt/sdcard/Android/data/<packagename>/files
|
// directory structure should be: /mnt/sdcard/Android/data/<packagename>/files
|
||||||
// when created this way, the directory is automatically removed by the Android
|
// when created this way, the directory is automatically removed by the Android
|
||||||
// system when the app is uninstalled
|
// system when the app is uninstalled
|
||||||
storageFolder = activity.getApplicationContext().getExternalFilesDir(null); |
storageFolder = activity.getApplicationContext().getExternalFilesDir(null); |
||||||
logger.log(Level.INFO, "Storage Folder Path: {0}", storageFolder.getAbsolutePath()); |
logger.log(Level.INFO, "Storage Folder Path: {0}", storageFolder.getAbsolutePath()); |
||||||
|
|
||||||
return storageFolder; |
return storageFolder; |
||||||
} else { |
} else { |
||||||
return null; |
return null; |
||||||
} |
} |
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
public static void setActivity(Activity activity) { |
public static void setActivity(Activity activity) { |
||||||
JmeAndroidSystem.activity = activity; |
JmeAndroidSystem.activity = activity; |
||||||
} |
} |
||||||
|
|
||||||
public static Activity getActivity() { |
public static Activity getActivity() { |
||||||
return activity; |
return activity; |
||||||
} |
} |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue