* Fix issue 476
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9442 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
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…
x
Reference in New Issue
Block a user