2011-04-28 19 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

相关问题