package ru.net.jimm; import android.app.Activity; import android.content.Context; import android.content.pm.PackageManager; import android.hardware.Sensor; import android.hardware.SensorManager; import android.provider.Settings; import org.microemu.android.util.AndroidLoggerAppender; import org.microemu.log.Logger; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.util.Locale; /** * Created with IntelliJ IDEA. * <p/> * Date: 27.04.13 12:44 * * @author vladimir */ public class Environment { public static void initLogger() { Logger.removeAllAppenders(); Logger.setLocationEnabled(false); Logger.addAppender(new AndroidLoggerAppender()); System.setOut(new PrintStream(new OutputStream() { StringBuilder line = new StringBuilder(); @Override public void write(int oneByte) throws IOException { if (((char) oneByte) == '\n') { if (line.length() > 0) { Logger.debug(line.toString()); line.setLength(0); } } else { line.append((char) oneByte); } } })); System.setErr(new PrintStream(new OutputStream() { StringBuilder line = new StringBuilder(); @Override public void write(int oneByte) throws IOException { if (((char) oneByte) == '\n') { if (line.length() > 0) { Logger.debug(line.toString()); line.setLength(0); } } else { line.append((char) oneByte); } } })); } public static void setup(Activity activity) { System.setProperty("microedition.platform", "microemu-android"); System.setProperty("microedition.configuration", "CLDC-1.1"); System.setProperty("microedition.profiles", "MIDP-2.0"); System.setProperty("microedition.locale", Locale.getDefault().toString()); System.setProperty("device.manufacturer", android.os.Build.BRAND); System.setProperty("device.model", android.os.Build.MODEL); System.setProperty("device.software.version", android.os.Build.VERSION.RELEASE); // photo if (hasCamera(activity)) { System.setProperty("video.snapshot.encodings", "yes"); } if (hasAccelerometer(activity)) { System.setProperty("device.accelerometer", "yes"); } } private static boolean hasAccelerometer(Activity activity) { boolean defValue = false; try { SensorManager sensorManager = (SensorManager) activity.getSystemService(Context.SENSOR_SERVICE); if (null == sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)) { return false; } defValue = true; return 1 == Settings.System.getInt(activity.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION); } catch (Throwable e) { return defValue; } } private static boolean hasCamera(Activity activity) { try { return (activity.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)); } catch (Throwable e) { return false; } } }