Nexus S Режим вспышки не работает - PullRequest
3 голосов
/ 27 декабря 2011

Я использую стоковую версию Nexus S Android 2.3. Всякий раз, когда я пытаюсь установить вспышку в режим горелки:

if (camera == null) {
    mCamera = camera = Camera.open();
}
final Parameters params = camera.getParameters();
params.setFlashMode(MODE_TORCH);
camera.setParameters(params);

ничего не происходит, вспышка вообще не работает. Этот кусок кода отлично работает на Nexus One.

Я нашел это - Как использовать вспышку камеры / светодиод в качестве фонарика на Samsung Galaxy Tab? , а также этот - http://forum.xda -developers.com / showthread.php? t = 923786 Кажется, никто из них не помогает.

Есть идеи, что мне не хватает?

1 Ответ

1 голос
/ 05 марта 2012
private Camera _camera;
protected static final String MODE_TORCH = Camera.Parameters.FLASH_MODE_TORCH;
protected static final String MODE_OFF = Camera.Parameters.FLASH_MODE_OFF;

private void initCamera(){
            if(this._camera == null){
            this._camera = Camera.open();
            this._camera.startPreview();
            }
    }

private void releaseCamera(){
        if(this._camera != null)
        {
            this._camera.stopPreview();
            this._camera.release();
        }

        this._camera = null;
    }

private void setCameraParameter(String value){
        if(this._camera != null){
            Camera.Parameters params = this._camera.getParameters();
            params.setFlashMode(value);
            this._camera.setParameters(params);
        }
    }

//To turn on just use:
private void turnOn(){
    initCamera();
    setCameraParameter(MODE_TORCH);
}

//to turn off just use:
private void turnOff(){
    setCameraParameter(MODE_OFF);
}

//To release resorces use:
private void releaseResources(){
   releaseCamera();
}

Это будет работать на Android 2.3. Для работы на Android 2.3 и 4.0.3 вам придется поиграть с SurfaceView и SurfaceHolder.

...