public class MainActivity extends Activity {
 
 Camera mCamera;
 
 private SurfaceHolder.Callback mSurfaceListener =
   new SurfaceHolder.Callback() {
  
  public void surfaceCreated(SurfaceHolder holder){
   mCamera = Camera.open();
   
   
   try{
    
    mCamera.setPreviewDisplay(holder);
    mCamera.setPreviewCallback(new PreviewCallback(){
      public void onPreviewFrame(byte[] data, Camera camera){
     }
    });
    
   } catch(Exception e){
              mCamera.release();
              mCamera = null;
              e.printStackTrace();
     }
    }
  
   public void surfaceDestroyed(SurfaceHolder holder) {
         
          mCamera.stopPreview();
          mCamera.release();
          mCamera = null;
      }
   
    public void surfaceChanged(SurfaceHolder holder,
            int format,
            int width,
            int height) {
         
           Camera.Parameters parameters = mCamera.getParameters();
          
           List<Size> sizes = parameters.getSupportedPreviewSizes();
           Size optimalSize = getOptimalPreviewSize(sizes,width,height);
           parameters.setPreviewSize(optimalSize.width, optimalSize.height);
           mCamera.setParameters(parameters);
           mCamera.startPreview();
       }
 };

   private Size getOptimalPreviewSize(List<Size> sizes, int w,
     int h) {
    // TODO Auto-generated method stub
    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;
       
       for(Size size : sizes){
        double ratio = (double) size.width / size.height;
        if(Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;
        if(Math.abs(size.height - targetHeight) < minDiff){
         optimalSize = size;
        minDiff = Math.abs(size.height - targetHeight);
       }
      }
     
      if(optimalSize == null){
       minDiff = Double.MAX_VALUE;
       for(Size size : sizes){
        if(Math.abs(size.height - targetHeight) < minDiff) {
         
         optimalSize = size;
         
         minDiff = Math.abs(size.height - targetHeight);
        }
       }
      }
    return optimalSize;
   }
  
 
 public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  
  setContentView(R.layout.activity_main);
  
  Window win = getWindow();
  win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
  
  SurfaceView surface = (SurfaceView) findViewById(R.id.SurfaceView01);
  
  SurfaceHolder holder = surface.getHolder();
  holder.addCallback(mSurfaceListener);
  holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
 
       }
}

 

 

이클립스에 코딩작업을하면 오류는 하나도 안뜨는데

run라면 실행이 안되고 액티비티자체도 안켜지고 stopped 라고 뜨네요 ㅜㅜ

 

왜 그러는건가요?

 

permission에서 접근 권한도 다 줬어요 ...ㅜㅜ

 

logcat

10-08 10:19:49.159: W/dalvikvm(635): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
10-08 10:19:49.201: E/AndroidRuntime(635): FATAL EXCEPTION: main
10-08 10:19:49.201: E/AndroidRuntime(635): java.lang.NullPointerException
10-08 10:19:49.201: E/AndroidRuntime(635):  at ex.beauty.page01Activity$1.surfaceCreated(page01Activity.java:35)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.SurfaceView.updateWindow(SurfaceView.java:543)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.SurfaceView.access$000(SurfaceView.java:81)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:169)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:671)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1818)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.Choreographer.doCallbacks(Choreographer.java:555)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.Choreographer.doFrame(Choreographer.java:525)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.os.Handler.handleCallback(Handler.java:615)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.os.Handler.dispatchMessage(Handler.java:92)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.os.Looper.loop(Looper.java:137)
10-08 10:19:49.201: E/AndroidRuntime(635):  at android.app.ActivityThread.main(ActivityThread.java:4745)
10-08 10:19:49.201: E/AndroidRuntime(635):  at java.lang.reflect.Method.invokeNative(Native Method)
10-08 10:19:49.201: E/AndroidRuntime(635):  at java.lang.reflect.Method.invoke(Method.java:511)
10-08 10:19:49.201: E/AndroidRuntime(635):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-08 10:19:49.201: E/AndroidRuntime(635):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-08 10:19:49.201: E/AndroidRuntime(635):  at dalvik.system.NativeStart.main(Native Method)

 

이게 다 빨간색이긴해요.... 왜 안되는걸까요?....