Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use camera flash/led as torch on a Samsung Galaxy Tab?

I'm facing to a problem with a Samsung Galaxy Tab. I want to use the camera flash as torch.

Does anyone know how to enable it ?

Hereby a code that works to enable/disable the camera flash on a HTC Desire but fails on Samsung Galaxy Tab.

FlashLight.java :

package com.example.FlashLight;

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

public class FlashLight extends Activity {
    private final static String LOG_TAG = "FlashLight";

    private Button mOnBtn;
    private Button mOffBtn;

    private Camera mCamera;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mOnBtn = (Button) findViewById(R.id.on_btn);
        mOnBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                processOnClick();
            }
        });

        mOffBtn = (Button) findViewById(R.id.off_btn);
        mOffBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                processOffClick();
            }
        });
   }

    @Override
    protected void onResume() {
        super.onResume();
        try{
            mCamera = Camera.open();
        } catch( Exception e ){
            Log.e(LOG_TAG, "Impossible d'ouvrir la camera");
        }
    }

    @Override
    protected void onPause() {
        if( mCamera != null ){
            mCamera.release();
            mCamera = null;
        }
        super.onPause();
    }

    private void processOffClick(){
        if( mCamera != null ){
            Parameters params = mCamera.getParameters();
            params.setFlashMode( Parameters.FLASH_MODE_OFF );
            mCamera.setParameters( params );
        }
    }

    private void processOnClick(){
        if( mCamera != null ){
            Parameters params = mCamera.getParameters();
            params.setFlashMode( Parameters.FLASH_MODE_TORCH );
            mCamera.setParameters( params );
        }
    }
}

AndroidManifest.xml :

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".FlashLight"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

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

layout/main.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button  
        android:id="@+id/on_btn"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Flash ON" />

    <Button  
        android:id="@+id/off_btn"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Flash OFF" />
</LinearLayout>

Thanks !

like image 750
Sly Avatar asked Feb 16 '11 14:02

Sly


People also ask

How do I use my camera flash as a torch light?

1 Tap on Camera icon from the Home screen. 2 Tap on the Switch camera icon to switch to the front camera as shown below. 3 Tap on the Flashlight icon to turn on the front flash.

Does Samsung tablet have torch light?

Swipe left on the "Shortcuts" bar.This should scroll through your Shortcut menu; the flashlight function is located here. If you swiped down with two fingers, you should see the Flashlight option on your screen, near the middle of the menu.

Does the Samsung tablet have a camera flash?

The Galaxy Tab A camera has three flash settings. To adjust or examine the flash settings, look at the Flash button on the left side of the screen. The button's icon lets you know what flash setting it is on.


2 Answers

You aren't doing anything wrong. In fact, you are doing everything correct. You are encountering a Device-Specific issue that is very prevalent in the Android world. I have found the following behavioral patterns for FLASH_MODE_TORCH:

  • Works fine in all cases
  • Works fine, but not with autofocus on
  • Doesn't work at all

Frustratingly, getSupportedFlashModes() will return FLASH_MODE_TORCH on nearly every device when only a handful actually support it.

Also, some device implementations swizzle the supported flash modes. If you go through Camera.Parameters you can try setting the flash mode to FLASH_MODE_ON, FLASH_MODE_AUTO or FLASH_MODE_RED_EYE and see whether any of them work. Note - this is a device-specific hack.

I have filed these types of bugs with Google regarding the DroidX and Nexus S. They closed it as a device-specific issue. I would say to report this to Samsung in hopes for a driver or firmware fix, but their Android support channels do not exist.

like image 176
Error 454 Avatar answered Sep 22 '22 12:09

Error 454


Took me a while but I think you're missing a startPreview() there.

After you do your Camera.open() and after you set the parametrs, do a mCamera.startPreview(). That should do the trick.

like image 24
JM Macariola Avatar answered Sep 21 '22 12:09

JM Macariola