title: Android Camera Effects Not Working
body: <p>I'm trying to build an image editing app for android and I've just started and already I'm having trouble. Well I can take a picture and save to the sd card. But i try to do some effects the app is running but the effects don't show up in the preview. Heres the complete code that i use:</p>
  
  <pre><code>package com.example.camerademo;
  
  import java.io.IOException;
  
  import android.app.Activity;
  
  import android.hardware.Camera;
  
  import android.os.Bundle;
  
  import android.view.SurfaceHolder;
  
  import android.view.SurfaceView;
  
  
  
  public class MainActivity extends Activity implements 
  
  SurfaceHolder.Callback {
  
  SurfaceView cameraView;
  
  SurfaceHolder surfaceHolder;
  
  Camera camera;
  
  
  
  
  
  @Override
  
  public void onCreate(Bundle savedInstanceState) {
  
  super.onCreate(savedInstanceState);
  
  setContentView(R.layout.activity_main);
  
  cameraView = (SurfaceView) this.findViewById(R.id.CameraView);
  
  surfaceHolder = cameraView.getHolder();
  
  surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  
  surfaceHolder.addCallback(this);
  
  
  }
  
  
  
  
  
  @Override
  
  public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
  
      // TODO Auto-generated method stub
  
  
  
      camera.startPreview();
  
  
  }
  
  @Override
  
  public void surfaceCreated(SurfaceHolder holder) {
  
      // TODO Auto-generated method stub
  
      camera = Camera.open();
  
      try {
  
      camera.setPreviewDisplay(holder);
  
      Camera.Parameters parameters = camera.getParameters();
  
      parameters.setColorEffect(Camera.Parameters.EFFECT_NEGATIVE);
  
      camera.setParameters(parameters);
  
  
  
      }
  
      catch (IOException exception)
  
      {
  
      camera.release();
  
      }
  
      }
  
  
  
  @Override
  
  public void surfaceDestroyed(SurfaceHolder holder) {
  
      // TODO Auto-generated method stub
  
      camera.stopPreview();
  
      camera.release();
  
  }}
  </code></pre>
  
  <p>Can anyone please tell me what is wrong with my code for effects. Is the a any other way 
  of doing it?</p>
  
  <p>Heres the code i used to get the supported effects and loop through it.</p>
  
  <pre><code>List&lt;String&gt; colorEffects = parameters.getSupportedColorEffects();
  Iterator&lt;String&gt; cei = colorEffects.iterator();
  while (cei.hasNext())
  {
  String currentEffect = cei.next();
  if (currentEffect.equals(Camera.Parameters.EFFECT_NEGATIVE))
  {
  parameters.setColorEffect(Camera.Parameters.EFFECT_NEGATIVE);
  break;
  }
  }
  </code></pre>
  
  <p>This gives me a null pointer exception.. So i tried to see if colorEffects holds any data or effects. I used an if loop like this</p>
  
  <pre><code>if(colorEffects == null){
  editText.setText("Null");
  }
  </code></pre>
  
  <p>And it was null. Why? Is there some problem with the downloaded sdk. Should I download android 2.3 SDK. Currently i have 2.2 SDK downloaded. Btw even if just type</p>
  
  <pre><code>parameters.setColorEffect(Camera.Parameters.EFFECT_NEGATIVE);
  </code></pre>
  
  <p>without using getSupportedColorEffects() method it runs without errors but the effect doesn't show up in preview. </p>
  
  <p>Log Cat Information:</p>
  
  <pre><code>01-01 00:08:17.588: E/AndroidRuntime(297): FATAL EXCEPTION: main
  01-01 00:08:17.588: E/AndroidRuntime(297): java.lang.NullPointerException
  01-01 00:08:17.588: E/AndroidRuntime(297):  at com.example.camerademo.MainActivity.surfaceCreated(MainActivity.java:56)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.SurfaceView.updateWindow(SurfaceView.java:532)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.SurfaceView.dispatchDraw(SurfaceView.java:339)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.View.draw(View.java:6743)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.widget.FrameLayout.draw(FrameLayout.java:352)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.View.draw(View.java:6743)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.widget.FrameLayout.draw(FrameLayout.java:352)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1842)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewRoot.draw(ViewRoot.java:1407)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1163)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.os.Handler.dispatchMessage(Handler.java:99)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.os.Looper.loop(Looper.java:123)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at android.app.ActivityThread.main(ActivityThread.java:4627)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at java.lang.reflect.Method.invokeNative(Native Method)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at java.lang.reflect.Method.invoke(Method.java:521)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
  01-01 00:08:17.588: E/AndroidRuntime(297):  at dalvik.system.NativeStart.main(Native Method)
  </code></pre>
  
  <p>This error occurs when i enter this line of code:</p>
  
  <pre><code>List&lt;String&gt; colorEffects = parameters.getSupportedColorEffects();
      Iterator&lt;String&gt; cei = colorEffects.iterator();
      while (cei.hasNext())
      {
      String currentEffect = cei.next();
      if (currentEffect.equals(Camera.Parameters.EFFECT_NEGATIVE))
      {
      parameters.setColorEffect(Camera.Parameters.EFFECT_NEGATIVE);
      break;
      }
      }
  </code></pre>