title: WINDOW_SERVICE cannot be resolved to a variable
body: <p>I thought <code>WINDOW_SERVICE</code> was supposed to be a constant defined in <code>android.content.Context</code>.</p>
  
  <p><a href="http://developer.android.com/reference/android/content/Context.html#WINDOW_SERVICE">http://developer.android.com/reference/android/content/Context.html#WINDOW_SERVICE</a></p>
  
  <p>When I use it in the following segment of code it throws an error saying it cannot be resolved as a variable.</p>
  
  <p><code>Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();</code></p>
  
  <p>Here's the full code:</p>
  
  <pre><code>package com.commonsware.android.skeleton;
  
  import android.app.Activity;
  import android.content.Context;
  import android.hardware.Camera;
  import android.hardware.Camera.*;
  import android.os.Bundle;
  import android.view.Display;
  import android.view.Surface;
  import android.view.SurfaceHolder;
  import android.view.SurfaceView;
  import android.view.Window;
  import android.view.WindowManager;
  import android.widget.FrameLayout;
  import java.io.IOException;
  import java.util.List;
  
  // ----------------------------------------------------------------------
  
  public class SimpleBulbActivity extends Activity {
      private Preview mPreview;
      FrameLayout preview;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          // Hide the window title.
          requestWindowFeature(Window.FEATURE_NO_TITLE);
          setContentView(R.layout.main);
      }
  
      protected void onResume() {
          super.onResume();
          //Setup the FrameLayout with the Camera Preview Screen
          mPreview = new Preview(this);
          preview = (FrameLayout)findViewById(R.id.preview); 
          preview.addView(mPreview);
      }
  
  }
  
  // ----------------------------------------------------------------------
  
  class Preview extends SurfaceView implements SurfaceHolder.Callback {
      SurfaceHolder mHolder;
      Camera mCamera;
  
      Preview(Context context) {
          super(context);
  
          // Install a SurfaceHolder.Callback so we get notified when the
          // underlying surface is created and destroyed.
          mHolder = getHolder();
          mHolder.addCallback(this);
          mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
      }
  
      public void surfaceCreated(SurfaceHolder holder) {
          // The Surface has been created, acquire the camera and tell it where
          // to draw.
          mCamera = Camera.open();
          try {
             mCamera.setPreviewDisplay(holder);
          } catch (IOException exception) {
              mCamera.release();
              mCamera = null;
              // TODO: add more exception handling logic here
          }
      }
  
      public void surfaceDestroyed(SurfaceHolder holder) {
          // Surface will be destroyed when we return, so stop the preview.
          // Because the CameraDevice object is not a shared resource, it's very
          // important to release it when the activity is paused.
          mCamera.stopPreview();
          mCamera.release();
          mCamera = null;
      }
  
  
      private Size getOptimalPreviewSize(List&lt;Size&gt; sizes, int w, int h) {
          final double ASPECT_TOLERANCE = 0.05;
          double targetRatio = (double) w / h;
          if (sizes == null) return null;
  
          Size optimalSize = null;
          double minDiff = Double.MAX_VALUE;
  
          int targetHeight = h;
  
          // Try to find an size match aspect ratio and size
          for (Size size : sizes) {
              double ratio = (double) size.width / size.height;
              if (Math.abs(ratio - targetRatio) &gt; ASPECT_TOLERANCE) continue;
              if (Math.abs(size.height - targetHeight) &lt; minDiff) {
                  optimalSize = size;
                  minDiff = Math.abs(size.height - targetHeight);
              }
          }
  
          // Cannot find the one match the aspect ratio, ignore the requirement
          if (optimalSize == null) {
              minDiff = Double.MAX_VALUE;
              for (Size size : sizes) {
                  if (Math.abs(size.height - targetHeight) &lt; minDiff) {
                      optimalSize = size;
                      minDiff = Math.abs(size.height - targetHeight);
                  }
              }
          }
          return optimalSize;
      }
  
      public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
          // Now that the size is known, set up the camera parameters and begin
          // the preview.
          Camera.Parameters parameters = mCamera.getParameters();
  
          List&lt;Size&gt; sizes = parameters.getSupportedPreviewSizes();
          Size optimalSize = getOptimalPreviewSize(sizes, w, h);
          parameters.setPreviewSize(optimalSize.width, optimalSize.height);
  
          Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
  
          if(display.getRotation() == Surface.ROTATION_0)
          {
              parameters.setPreviewSize(h, w);                           
              mCamera.setDisplayOrientation(90);
          }
  
          if(display.getRotation() == Surface.ROTATION_90)
          {
              parameters.setPreviewSize(w, h);                           
          }
  
          if(display.getRotation() == Surface.ROTATION_180)
          {
              parameters.setPreviewSize(h, w);               
          }
  
          if(display.getRotation() == Surface.ROTATION_270)
          {
              parameters.setPreviewSize(w, h);
              mCamera.setDisplayOrientation(180);
          }
  
          mCamera.setParameters(parameters);
          mCamera.startPreview();
      }
  
  }
  </code></pre>