2013-01-03 165 views
0

我想使用下面的代碼構建一個手電筒應用程序。 它正在研究朋友的HTC Desire HD,但它不在我的RAZR和朋友的Galaxy Nexus上。 我也嘗試了focus_mode_infinity的解決方案,但仍然沒有成功。FLASH_MODE_TORCH工作/不工作

package com.example.flashlight; 

import android.app.Activity; 
import android.hardware.Camera; 
import android.hardware.Camera.Parameters; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 

Camera camera = null; 
Parameters parameters; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



    final Button OnOff = (Button)findViewById(R.id.Switch); 


    OnOff.setOnClickListener(new Button.OnClickListener() { 




@Override 
public void onClick(View arg0) { 



    if(camera == null) { 
     camera = Camera.open(); 
     camera.startPreview(); 
     parameters = camera.getParameters(); 
     parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); 
     parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY); 
     camera.setParameters(parameters); 

    } 
    else { 
     parameters.setFlashMode(Parameters.FLASH_MODE_OFF); 
     parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
     camera.setParameters(parameters); 
     camera.release(); 
     camera = null; 

    } 

} 


}); 
}} 

回答

0

我覺得FLASH_MODE_TORCH不被支持的RAZR,我有同樣的問題與客戶報告爲一個應用程序相同的問題(閃光燈不閃爍)。 我建議你是設置參數,檢查其是否支持前:

camera.startPreview(); 

這裏相機的Camera對象:

List<String> flashModes = parameters.getSupportedFlashModes(); 
if (flashModes.contains(Parameters.FLASH_MODE_TORCH)) { 
    // Mode supported good to go 
} 
+0

這不起作用。例如:Galaxy S3 mini,支持的閃光模式:[自動,宏,固定]。 FLASH_MODE_TORCH和FLASH_MODE_OFF仍然正常工作。 –

0

設置相機的參數,使用下面的方法之後。