@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); PreferenceManager.setDefaultValues(this, R.xml.preferences, false); settingsFragment = new SettingsFragment(); sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); sharedPreferences.registerOnSharedPreferenceChangeListener(this); // Debug // setContentView(R.layout.title); mGLSurfaceView = new MyGLSurfaceView(this); // Create an OpenGL ES 2.0 context mGLSurfaceView.setEGLContextClientVersion(2); mGLSurfaceView.setPreserveEGLContextOnPause(true); // mGLSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); setContentView(mGLSurfaceView); // The app user object mUser = new User(); mStarMapperRenderer = new StarMapperRenderer(this, mUser); // Set the StarMapperRenderer for drawing on the GLSurfaceView mGLSurfaceView.setRenderer(mStarMapperRenderer); // Retrieving location mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria locCriteria = new Criteria(); // gps locCriteria.setAccuracy(Criteria.ACCURACY_FINE); locCriteria.setBearingRequired(false); locCriteria.setAltitudeRequired(false); locCriteria.setCostAllowed(true); locCriteria.setSpeedRequired(false); locCriteria.setPowerRequirement(Criteria.POWER_LOW); String locProvider = mLocationManager.getBestProvider(locCriteria, true); Location loc = mLocationManager.getLastKnownLocation(locProvider); mUser.setGeoLocation((float) loc.getLatitude(), (float) loc.getLongitude()); mUser.setGeomagneticField(); mUser.setZenith(); // Initializing touch variables mPreviousX1 = 0; mPreviousY1 = 0; mPreviousX2 = 0; mPreviousY2 = 0; mPointerIndex = 0; mCurrentTouchState = TouchState.INIT; mZoomer = new Zoom(); // Initializing auto sensors mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mAccelerometerSensor = null; mMagneticFieldSensor = null; mAccelerometerModel = null; mMagneticFieldModel = null; // Check for necessary sensors if ((mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) == null) || (mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) == null)) { // phone doesn't have appropriate sensors, only use manual mode mUseAutoSensorMode = false; } else { // phone has sensors, initialize them mAccelerometerSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); mMagneticFieldSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); mUseAutoSensorMode = true; mAccelerometerModel = new AccelerometerModel(mUser, mStarMapperRenderer, mGLSurfaceView); mMagneticFieldModel = new MagneticFieldModel(mUser, mStarMapperRenderer, mGLSurfaceView); } if (mAccelerometerSensor != null) { mSensorManager.registerListener( mAccelerometerModel, mAccelerometerSensor, SensorManager.SENSOR_DELAY_FASTEST); } if (mMagneticFieldSensor != null) { mSensorManager.registerListener( mMagneticFieldModel, mMagneticFieldSensor, SensorManager.SENSOR_DELAY_FASTEST); } // ****** DEBUG ****** // mUseAutoSensorMode = false; // flinger flinger = new GestureDetector( this, new Flinger( new FlingListener() { public void fling(float distanceX, float distanceY) { float radsPerPixel = mStarMapperRenderer.mFovYRad / mStarMapperRenderer.mScreenHeight; changeMapX(-distanceX * radsPerPixel); changeMapY(-distanceY * radsPerPixel); mStarMapperRenderer.mLookX = mUser.getLookX(); mStarMapperRenderer.mLookY = mUser.getLookY(); mStarMapperRenderer.mLookZ = mUser.getLookZ(); mStarMapperRenderer.mUpX = mUser.getNormalX(); mStarMapperRenderer.mUpY = mUser.getNormalY(); mStarMapperRenderer.mUpZ = mUser.getNormalZ(); } })); }