天天看點

解決Android實作照相機程式時不能顯示攝像頭的問題

try {
				camera.setPreviewDisplay(surfaceHolder);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			// 開始預覽
			camera.startPreview();
           

上面兩行代碼不能放在初始化的Camera裡面,需要放在surfaceChanged()和surfaceCreated()方法内!!

public void surfaceChanged(SurfaceHolder holder, int format, int width,
	    int height){
			try {
				camera.setPreviewDisplay(surfaceHolder);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			// 開始預覽
			camera.startPreview();
	   }
	   @Override
	   public void surfaceCreated(SurfaceHolder holder){
	    // surface被建立時打開攝像頭
	    initCamera();
		try {
			camera.setPreviewDisplay(surfaceHolder);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// 開始預覽
		camera.startPreview();
	   }