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 !
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.
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.
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.
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:
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With