2014-01-18 81 views
0

我正嘗試使用手機的相機閃光燈來使用手電筒。我有一個在ON和OFF之間切換的按鈕,但由於某些原因,下面的代碼無法正常工作。我知道這裏有幾個問題,但他們都沒有給出正確的答案。僅在Android中開啓/關閉閃光燈

有人可以幫我嗎?

代碼到ON/OFF閃光燈:

camera = Camera.open(); 
    final Parameters p = camera.getParameters(); 

    flashon.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View arg0) 
     { 
      if (isFlashOn) 
      { 
       Log.e("Flash", "Flash is turned off!"); 
       p.setFlashMode(Parameters.FLASH_MODE_OFF); 
       camera.setParameters(p);      
       isFlashOn = false; 
       flashon.setText("Flash ON"); 
      } 
      else 
      { 
       Log.i("Flash", "Flash is turned on!"); 
       p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
       camera.setParameters(p);      
       isFlashOn = true; 
       flashon.setText("Flash OFF"); 
      } 
     } 
    }); 

以下是清單的詳細信息:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.FLASHLIGHT" /> 

等待您的答覆! 謝謝!

回答

0

當你這樣做時會發生什麼? 也許你有問題,因爲你將p設置爲final。

camera = Camera.open(); 
flashon.setOnClickListener(new OnClickListener() 
{ 
    public void onClick(View arg0) 
    { 
     if (isFlashOn) 
     { 
      Log.e("Flash", "Flash is turned off!"); 
      camera.setParameters(camera.getParameters().setFlashMode(Parameters.FLASH_MODE_OFF));      
      isFlashOn = false; 
      flashon.setText("Flash ON"); 
     } 
     else 
     { 
      Log.i("Flash", "Flash is turned on!"); 
      camera.setParameters(camera.getParameters().setFlashMode(Parameters.FLASH_MODE_TORCH));      
      isFlashOn = true; 
      flashon.setText("Flash OFF"); 
     } 
    } 
}); 
+1

我得到錯誤: 方法setParameters(Camera.Parameters)在型攝像機是不適用的參數(無效) – TheDevMan

0

試試這段代碼。這對我有用。

private Camera camera; 
private Parameters p; 

//initialize camera instance 
private void initCamera() { 
    try{ 
     camera = Camera.open(); 
     p=camera.getParameters(); 
    }catch (Exception e){ 
     camera = null; 
    } 
} 
//start flashing 
private void startFlashing() { 
    initCamera(); 
    if(camera!=null && this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)){ 
     p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
     camera.setParameters(p); 
     camera.startPreview();   
    }