2013-01-03 218 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

设置相机的参数,使用下面的方法之后。