Ligar o led da camera do celular?

5 respostas
A
Bom dia pessoal, estou querendo ligar o led da camera do celular, mais nenhum codigo que testei funciona, fiz este teste aqui
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;
        }
    }
 
}
Androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="br.com.couldsys.flashligth"
    android:versionCode="1"
    android:versionName="1.0" >

    <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>

</manifest>

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
http://www.androidhive.info/2013/04/android-developing-flashlight-application/

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.

5 Respostas

E

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.).

A

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.).

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.

E

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…

A

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…
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.

V

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:

Criado 24 de julho de 2013
Ultima resposta 24 de jul. de 2013
Respostas 5
Participantes 3