@Override
  protected void onPause() {
    super.onPause();
    stopPreview();
    if (mCamera != null) {
      mCamera.release();
      mCamera = null;
    }

    if (mRenderer != null) {
      mRenderer.cleanup();
    }

    if (mRootViewGroup != null) {
      mRootViewGroup.removeAllViews();
    }

    cleanup();
  }
  @Override
  protected void onResume() {
    super.onResume();

    int screenw;
    int width;

    setContentView(R.layout.main);
    setTitle(getResources().getString(R.string.app_name));
    setTitleColor(0xFFFF5555);

    init();

    screenw =
        ((WindowManager) this.getSystemService(Context.WINDOW_SERVICE))
            .getDefaultDisplay()
            .getWidth();

    mTextDisplay[0] = (TextView) findViewById(R.id.text1);
    mTextDisplay[1] = (TextView) findViewById(R.id.text2);

    mRootViewGroup = (ViewGroup) mTextDisplay[0].getParent();

    width = (screenw * 1 / 2);

    for (int i = 0; i < mTextDisplay.length; i++) {
      mTextDisplay[i].setTextColor(mTextColor);
      mTextDisplay[i].setWidth(width);
      mTextDisplay[i].setText("");
    }
    mTextDisplay[0].setText("");

    updatePreferences();

    mToggleButtonStartStop = (ToggleButton) findViewById(R.id.startStopSwitch);
    mToggleButtonStartStop.setOnClickListener(
        new View.OnClickListener() {
          public void onClick(View view) {
            if (mToggleButtonStartStop.isChecked()) {
              startPreview();
            } else {
              stopPreview();
            }
          }
        });

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

    int cameraIndex =
        Integer.decode(
            prefs.getString(getResources().getString(R.string.shared_prefs_camera_list), "0"));

    mCamera = Camera.open(cameraIndex);

    mCamSurface = new CameraSurface(this, mCamera);
    mRootViewGroup.addView(mCamSurface);

    mRenderer = new CameraSampleRenderer(this);
    mGLSurface = mRenderer.getGLSurfaceView();
    mGLSurface.setZOrderMediaOverlay(true);
    mGLSurface.setVisibility(View.VISIBLE);
    mGLSurface.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
    mRootViewGroup.addView(mGLSurface);

    bringControlsToFront();

    startPreview();

    System.gc();
  }