FLASH_MODE_TORCH工作/不工作

时间:2013-01-03 17:14:32

标签: android infinity flashlight

我想使用以下代码构建一个手电筒应用程序。 这是在朋友的HTC Desire HD上工作,但它不在我的RAZR和朋友的Galaxy Nexus上。 我也尝试了使用focus_mode_infinity的解决方案,但仍然没有成功。

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;

    } 

} 


});
}}

2 个答案:

答案 0 :(得分:0)

我认为RAZR不支持FLASH_MODE_TORCH,对于一个应用程序报告同一问题的客户(Flash不闪烁),我遇到了同样的问题。 我建议你在设置参数之前检查它是否受支持:

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

答案 1 :(得分:0)

设置摄像机参数后,使用以下方法:

camera.startPreview();

此处相机是您的相机对象。