@Override public boolean onOptionsItemSelected(MenuItem item) { boolean connect = false; switch (item.getItemId()) { case OPTION_CONNECT: connect = true; break; case OPTION_LOCK_LANDSCAPE: setLockLandscape(!item.isChecked()); item.setChecked(isLockLandscape()); break; case OPTION_ENABLE_REMOTE_VIEW: controlFragment.setRemoteEnabled(!item.isChecked()); item.setChecked(controlFragment.isRemoteEnabled()); break; case OPTION_EXIT: finish(); break; case OPTION_HELP: showHelp(); break; case OPTION_EXAGGERATION: showVerticalExaggerationDialog(); break; case OPTION_FLY_HOME: communicator.sendMessage(new FlyHomeMessage()); break; case OPTION_SEND_LOCATION: setSendLocation(!item.isChecked()); item.setChecked(isSendLocation()); break; case android.R.id.home: getSupportActionBar().selectTab(getSupportActionBar().getTabAt(0)); connect = communicator.getState() != State.CONNECTED; break; } if (connect) { connect(); } return super.onOptionsItemSelected(item); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Normally one shouldn't instantiate all these objects in the onCreate method, // as onCreate is called every time a configuration change occurs (orientation, // keyboard hidden, screen size, etc). But we are handling configuration changes // ourselves. // hide the status bar this.getWindow() .setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // get local Bluetooth adapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothAdapter == null) { Toast.makeText(this, R.string.bluetooth_unavailable, Toast.LENGTH_LONG).show(); finish(); return; } communicator = new AndroidCommunicator(this, bluetoothAdapter); communicator.addListener(this); remoteViewCommunicator = new SocketAndroidCommunicator(this); DatasetModelState datasetsState = new DatasetModelState(communicator, this); LayerModelState layersState = new LayerModelState(communicator, this); PlaceModelState placesState = new PlaceModelState(communicator, this); ItemModelState[] states = new ItemModelState[] {datasetsState, layersState, placesState}; for (ItemModelState state : states) { itemModelStates.put(state.getModel().getId(), state); ItemModelFragmentMenuProvider menuProvider = new EmptyMenuProvider(); if (state == placesState) { menuProvider = new PlacesMenuProvider(communicator); } menuProviders.put(state.getModel().getId(), menuProvider); } controlFragment = ControlFragment.newInstance(remoteViewCommunicator); datasetsFragment = ItemModelFragment.newInstance(datasetsState.getModel().getId(), false); layersFragment = ItemModelFragment.newInstance(layersState.getModel().getId(), false); flatLayersFragment = ItemModelFragment.newInstance(layersState.getModel().getId(), true); placesFragment = ItemModelFragment.newInstance(placesState.getModel().getId(), false); tabFragments = new Fragment[] { controlFragment, datasetsFragment, layersFragment, flatLayersFragment, placesFragment }; // create the tabs getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); int[] tabIds = new int[] { R.string.controls_tab, R.string.datasets_tab, R.string.layers_tab, R.string.flat_layers_tab, R.string.places_tab }; for (int i = 0; i < tabIds.length; i++) { ActionBar.Tab tab = getSupportActionBar().newTab(); tab.setTag(tabIds[i]); tab.setText(tabIds[i]); tab.setTabListener(this); getSupportActionBar().addTab(tab); } getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().setHomeButtonEnabled(true); // setup the shake sensor sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sensorListener.setOnShakeListener( new ShakeEventListener.OnShakeListener() { @Override public void onShake() { communicator.sendMessage(new ShakeMessage()); } }); // Acquire a reference to the system Location Manager LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // Define a listener that responds to location updates LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { if (isSendLocation()) { communicator.sendMessage( new LocationMessage( location.getLatitude(), location.getLongitude(), location.getAltitude(), location.getAccuracy(), location.getBearing())); } } public void onStatusChanged(String provider, int status, Bundle extras) {} public void onProviderEnabled(String provider) {} public void onProviderDisabled(String provider) {} }; locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); // locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, // locationListener); }