2011-04-28 20 views
0

拍了幾張照片後,我的相機剛剛變黑。對此有何建議?我的自定義相機拍了幾張照片後發生崩潰爲什麼?

SurfaceView cameraView; 
SurfaceHolder surfaceHolder; 
Camera camera; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.camera); 

    cameraView = (SurfaceView)this.findViewById(R.id.CameraView); 
    surfaceHolder = cameraView.getHolder(); 
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    surfaceHolder.addCallback(this); 

    cameraView.setFocusable(true); 
    cameraView.setFocusableInTouchMode(true); 
    cameraView.setClickable(true); 

    cameraView.setOnClickListener(this); 
} 
public void onClick(View v){ 
    camera.takePicture(null, null, this); 
} 

@Override 
public void onPictureTaken(byte[] data, Camera camera) { 
    try{ 
     OutputStream imageFileOS = new FileOutputStream(String.format("/sdcard/Galmix/%d.jpg",System.currentTimeMillis())); 
     imageFileOS.write(data); 
     imageFileOS.flush(); 
     imageFileOS.close(); 
    } catch(FileNotFoundException e){ 
     Toast t = Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT); 
     t.show(); 
    } catch (IOException e) { 
     Toast t = Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT); 
     t.show(); 
    } 
    camera.startPreview(); 
} 

@Override 
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) { 
    camera.startPreview(); 
} 

@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    camera = Camera.open(); 
    try{ 
     camera.setPreviewDisplay(holder); 
     Camera.Parameters parameters = camera.getParameters(); 

     parameters.setPictureSize(640, 480); 

     if(this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE){ 
      parameters.set("orientation", "portrait"); 
      camera.setDisplayOrientation(90); 
     } 
     camera.setParameters(parameters); 
    } catch(IOException e){ 
     camera.release(); 
    } 
} 

@Override 
public void surfaceDestroyed(SurfaceHolder holder) { 
    camera.stopPreview(); 
    camera.release(); 
} 
+0

請告訴我們代碼。 – Mudassir 2011-04-28 03:52:18

+1

電池耗盡? – Squonk 2011-04-28 03:54:18

+0

我認爲如果手機的電池耗盡,則不會發布此問題。 – 2011-04-28 04:19:47

回答

0

檢查以確保您保存的圖像正確保存。我有一個類似的問題,由於我的保存代碼中的一個錯誤,我得到一個NullPointerException並且終止了我的相機活動。對於更多細節,你將不得不張貼代碼。

+0

我已上傳代碼。感謝您的幫助。 – 2011-04-28 07:00:55

相關問題