2012-07-21 47 views
0

在我的應用程序,我有一個圖像按鈕,基本上打開和關閉閃光LED。該代碼第一次運行正常,即首先點擊它在LED上切換並在第二次點擊它將其關閉。但是,沒有發生第三次點擊。我正在測試Nexus S.Android:相機的startPreview方法不工作後,stopPreview

以下是ImageButton Click方法的代碼。

public void ToggleTorch(){ 
    final ImageButton tt = (ImageButton)findViewById(R.id.tt); 
    tt.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      if (isFlashOn){ 
       mycam.stopPreview(); 
       isFlashOn = false; 
      } else { 
       mycam.startPreview(); 
       isFlashOn = true; 
      } 
     } 
    }); 
} 

從我認爲,它必須做的事SurfaceView,我想是不是被破壞,同時呼籲stopPreview,但我不知道..

以下是代碼爲onCreate方法。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //Check if Flash Light is Available 
    Boolean has_flash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); 
    if(has_flash){ 
     setContentView(R.layout.activity_main); 
     SurfaceView preview = (SurfaceView)findViewById(R.id.pSv); 
     SurfaceHolder holder = preview.getHolder(); 
     holder.addCallback(this); 
     holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
     disableSleepMode(); 
     initFlashLight(); 
     ToggleTorch(); 
     screenTorchOn(); 
    } else { 
     setContentView(R.layout.activity_main); 
     disableSleepMode(); 
     screenTorchOn(); 
    } 
} 

任何幫助,將不勝感激。謝謝。

+0

什麼是downvote?有趣嗎? – Amyth 2012-07-25 14:30:17

+0

因爲ppl認爲別人應該瞭解Android設計不佳的API。 – zezba9000 2013-01-24 17:46:32

回答

1

而不是調用停止預覽釋放相機,並使相機實例爲空。要重新啓動相機,請重新初始化相機。創建兩個不同的方法來初始化相機,另一個方法釋放它。這將解決您的問題。

+1

感謝您的回覆,我正在使用camera.release進行活動銷燬。但是,我通過觸發開始預覽並停止預覽表面視圖代碼解決了問題,並且運行良好。 – Amyth 2012-07-25 14:29:51