2011-05-26 123 views
17

我正在做一個相機項目,在拍攝一張照片後,相機凍結,您必須完成活動並再次調用以拍攝另一張照片,我如何才能將照片凍結爲1 -2秒,然後再用表面視圖再次拍攝相機。視頻相同我正在使用媒體記錄器,視頻按停止視頻保存和屏幕仍然活着,但我不能再次視頻我不得不重新開始活動?拍攝一張照片後,Android相機凍結

有人有解決方案嗎?

+1

抓獲後能你展示一些代碼plz? – PedroAGSantos 2011-05-26 13:43:11

+0

@subspider你使用星系來檢查相機功能嗎? – includeMe 2011-05-26 14:05:36

+0

這裏同樣的問題。 @dsc是啊我正在使用銀河s – stoefln 2011-10-10 14:57:40

回答

3

在後臺執行任何圖像處理AsyncTask。這將允許您的UI活動繼續並拍攝另一張照片。

編輯:我無法刪除接受的答案,所以請參閱下面的stoefin的答案。在爲他拍攝下一張照片之前打電話camera.startPreview()

+3

這不是爲什麼相機凍結 - stoefln的答案是正確的;預覽需要重新啓動。 – elijah 2012-01-31 00:32:12

56

我找到了解決方案:拍攝照片後,預覽顯示將停止。要拍攝更多照片,請先撥打camera.startPreview()

+0

這是正確的答案。謝謝!! – elijah 2012-01-31 00:31:20

+1

剛開始預覽並不適合我。但是,如下面的答案中所述,停止和啓動預覽工作正常。 – shshnk 2015-10-29 11:18:05

+0

嘿,即使我先調用'startPreview()',相機也無法打開。如果你幫助我,我會非常感激! https://stackoverflow.com/questions/47483990/can-only-open-camera-once – 2017-11-25 17:05:58

0

相機被凍結,因爲你沒有重新啓動相機的預覽,因此通過捕捉圖像,你應該停止預覽並再次啓動它後調用camera.startpreview()

15

重新啓動它。

mCamera.stopPreview(); 
mCamera.startPreview(); 

它會正常工作。

+0

即使我這樣做,相機無法打開。如果你幫助我,我會非常感激! https://stackoverflow.com/questions/47483990/can-only-open-camera-once – 2017-11-25 17:06:14

1

camera.startpreview();答案沒有對我的情況下工作,但下面的代碼解決了這個問題對我來說,希望能夠幫助別人too.I使用一個線程來延遲關閉和相機的開啓相片是由500毫秒

private void start_camera() { 
    try { 
     camera = Camera.open(); 
     // camera.lock(); 
    } catch (RuntimeException e) { 
     Log.e(tag, "init_camera: " + e); 
     return; 
    } 
    Camera.Parameters param = camera.getParameters(); 
    param = camera.getParameters(); 
    Camera.Size size = param.getSupportedPreviewSizes().get(0); 
    param.setPreviewSize(size.width, size.height); 
    camera.setParameters(param); 
    try { 
     camera.setPreviewDisplay(surfaceHolder); 
     camera.startPreview(); 
     previewRunning = true; 
    } catch (Exception e) { 
     Log.e(tag, "init_camera: " + e); 
     return; 
    }} 
private void captureImage() { 
    camera.takePicture(shutterCallback,null,jpegCallback); 
    Thread restart_preview=new Thread(){public void run(){ 
     try { 
      Thread.sleep(500); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

     camera.release(); 
     camera=null; 
     start_camera(); 
    }}; 
    restart_preview.start();} 
相關問題