Ligar o led da camera do celular?

Bom dia pessoal, estou querendo ligar o led da camera do celular, mais nenhum codigo que testei funciona, fiz este teste aqui

[code]import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.app.Activity;
import android.view.Menu;

@SuppressLint({“NewApi”,“NewApi”} )
public class MainActivity extends Activity {

ImageButton btnSwitch;
 
private Camera camera;
private boolean isFlashOn;
private boolean hasFlash;
Parameters params;
MediaPlayer mp;

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // flash switch button
    btnSwitch = (ImageButton) findViewById(R.id.btnSwitch);

 
    // First check if device is supporting flashlight or not       
    hasFlash = getApplicationContext().getPackageManager()
            .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

    if (!hasFlash) {
        // device doesn't support flash
        // Show alert message and close the application
        AlertDialog alert = new AlertDialog.Builder(MainActivity.this)
                .create();
        alert.setTitle("Error");
        alert.setMessage("Sorry, your device doesn't support flash light!");
        alert.setButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // closing the application
                finish();
            }
        });
        alert.show();
        return;
    }

    // get the camera
    getCamera();
     
    // displaying button image
    toggleButtonImage();
     
     
    // Switch button click event to toggle flash on/off
    btnSwitch.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (isFlashOn) {
                // turn off flash
                turnOffFlash();
            } else {
                // turn on flash
                turnOnFlash();
            }
        }
    });
}

 
// Get the camera
private void getCamera() {
    if (camera == null) {
        try {
            camera = Camera.open();
            params = camera.getParameters();
        } catch (RuntimeException e) {
            Log.e("Camera Error. Failed to Open. Error: ", e.getMessage());
        }
    }
}

 
 // Turning On flash
private void turnOnFlash() {
    if (!isFlashOn) {
        if (camera == null || params == null) {
            return;
        }
        // play sound
        playSound();
         
        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_TORCH);
        camera.setParameters(params);
        camera.startPreview();
        isFlashOn = true;
         
        // changing button/switch image
        toggleButtonImage();
    }

}


// Turning Off flash
@SuppressLint("NewApi")
private void turnOffFlash() {
    if (isFlashOn) {
        if (camera == null || params == null) {
            return;
        }
        // play sound
        playSound();
         
        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_OFF);
        camera.setParameters(params);
        camera.stopPreview();
        isFlashOn = false;
         
        // changing button/switch image
        toggleButtonImage();
    }
}
 

 // Playing sound
 // will play button toggle sound on flash on / off
private void playSound(){
    if(isFlashOn){
        mp = MediaPlayer.create(MainActivity.this, R.raw.light_switch_off);
    }else{
        mp = MediaPlayer.create(MainActivity.this, R.raw.light_switch_on);
    }
    mp.setOnCompletionListener(new OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer mp) {
            // TODO Auto-generated method stub
            mp.release();
        }
    });
    mp.start();
}
 
/*
 * Toggle switch button images
 * changing image states to on / off
 * */
private void toggleButtonImage(){
    if(isFlashOn){
        btnSwitch.setImageResource(R.drawable.btn_switch_on);
    }else{
        btnSwitch.setImageResource(R.drawable.btn_switch_off);
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
}

@Override
protected void onPause() {
    super.onPause();
     
    // on pause turn off the flash
    turnOffFlash();
}

@Override
protected void onRestart() {
    super.onRestart();
}

@Override
protected void onResume() {
    super.onResume();
     
    // on resume turn on the flash
    if(hasFlash)
        turnOnFlash();
}

@Override
protected void onStart() {
    super.onStart();
     
    // on starting the app get the camera params
    getCamera();
}

@Override
protected void onStop() {
    super.onStop();
     
    // on stop release the camera
    if (camera != null) {
        camera.release();
        camera = null;
    }
}

}[/code]

Androidmanifest.xml

[code]<?xml version="1.0" encoding="utf-8"?>

<uses-sdk
    android:minSdkVersion="3"
    android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.CAMERA" />

<uses-feature android:name="android.hardware.camera" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="br.com.couldsys.flashligth.MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

[/code]

E nada de ligar, estou testando num samsung galaxy ace, e outros exemplos que fiz também não obtive sucesso.

Este codigo do exemplo acima peguei aqui neste link

Fiz passo a passo e não deu certo, não da erro nenhum chega a executar o aplicativo, mais não acendo de forma alguma o led.

Obrigado.

Adriano, você leu os comentários ao post do cara que escreveu o programa que você está tentando rodar?

Há várias pessoas dizendo que não funciona em alguns celulares (Galaxy Nexus, Motorola Defy etc.).

[quote=entanglement]Adriano, você leu os comentários ao post do cara que escreveu o programa que você está tentando rodar?

Há várias pessoas dizendo que não funciona em alguns celulares (Galaxy Nexus, Motorola Defy etc.).

[/quote]Então entanglement, não cheguei a ler, mais também nenhum exemplo que testei funciona, preciso de algum que funciona e não consegui achar.

Obrigado.

Bom, existe algum outro programa no Google Play que funcione nesse seu celular? Vai que ligar o led só funcione se você der alguma permissão esquisita…

[quote=entanglement]Bom, existe algum outro programa no Google Play que funcione nesse seu celular? Vai que ligar o led só funcione se você der alguma permissão esquisita…[/quote]Tem sim ja testei app do google paly que funciona.

Acabei de testar este mesmo codigo ai que não funciona no galaxy ace num galaxy s4 e no S4 funciona.

Vai entender isso.

O Galaxy Ace ta na versão 2.x e o Galaxy S4 na 4.x, talvez este recurso não funcione na versão do Galaxy Ace :wink: