* Fix issue 476

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9442 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
Sha..om 13 years ago
parent 4ee09fa52e
commit 3cdeb6ed4d
  1. 290
      engine/src/android/com/jme3/system/android/JmeAndroidSystem.java

@ -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…
Cancel
Save