摩托罗拉RAZR上的Android手电筒

时间:2013-03-23 18:47:54

标签: android motorola flashlight

以下代码在Wildfire S上运行良好,但在Motorola RAZR上没有,它是如何实现的以及如何修复它。我看到很少有关于此的帖子但没有答案。

    if (camera==null)
        camera=Camera.open();
    camera_parameters = camera.getParameters();
    flash_mode = camera_parameters.getFlashMode();
    camera_parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
    camera.setParameters(camera_parameters);

    the_button = (ToggleButton) findViewById(R.id.flashlightButton);
    if (the_button.isChecked()){
        camera.startPreview();
        the_button.setKeepScreenOn(true);


public void onToggleClicked(View v) {       
    if (((ToggleButton) v).isChecked()) {
        camera.setParameters(camera_parameters);
        camera.startPreview();
        v.setKeepScreenOn(true);
    } else {
        camera.stopPreview();
        v.setKeepScreenOn(false);
    }
}



    <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.flash" />

1 个答案:

答案 0 :(得分:1)

无论出于何种原因,摩托罗拉Razr要求您在访问与相机相关的任何内容时使用SurfaceView。

    // Where CameraPreview is the class extending SurfaceView
    mPreview = new CameraPreview(this, mCamera);
    preview = (FrameLayout) findViewById(R.id.camera_preview);
    preview.addView(mPreview);

以上代码必须位于您用于设置Camera.Parameters

的活动中

以下是我的一个活动的代码片段,它将参数传递给相机并利用上面的代码创建一个SurfaceView

public void setFocusMacro() {

    if (mCamera == null) {
        // Create an instance of Camera
        mCamera = Camera.open();
        mParams = mCamera.getParameters();
        }

    mParams = mCamera.getParameters();
    mParams.setFocusMode(Camera.Parameters.FOCUS_MODE_MACRO);
    mParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
    mCamera.setParameters(mParams);
    }