Android: LED no se enciende / apaga

Estoy tratando de escribir un pequeño widget de Android con un botón que enciende / apaga la linterna de la cámara. Lo sé, hay miles de cosas por ahí, pero quiero aprender Android (y los pequeños pasos parecen ser la mejor manera).

Ahora he leído la documentación oficial, algunos tutoriales gratuitos en la web y buscado aquí en stackoverflow para ello. Hasta ahora no tengo ningún error, LogCat dice que todo funciona como se desea. Pero cuando estoy probando la aplicación en mi Galaxy Nexus, el interruptor se enciende / apaga como debería, pero las levas LED no se enciende / apaga.

Aquí está mi código (sólo las partes donde el LED está realmente encendido / apagado):

if (isLightOn) { Log.d("receiver", "flashlight is on, disabling it"); if (camera != null) { param.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); camera.setParameters(param); camera.release(); camera = null; isLightOn = false; } } else { Log.d("receiver", "flashlight is off, enabling it"); camera = Camera.open(); if(camera == null) { Toast.makeText(context, R.string.no_camera, Toast.LENGTH_SHORT).show(); } else { // Set the torch flash mode param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); try { camera.setParameters(param); isLightOn = true; } catch (Exception e) { Toast.makeText(context, R.string.no_flash, Toast.LENGTH_SHORT).show(); } } } 

¿Alguna idea de por qué esto no funciona según lo previsto?

One Solution collect form web for “Android: LED no se enciende / apaga”

En general eche un vistazo aquí . Se explica correctamente.

EDITAR:

Qué está en el enlace:

  1. Encender

    camera = Camera.open (); Parámetros p = camera.getParameters (); p.setFlashMode (Parameters.FLASH_MODE_TORCH); camera.setParameters (p); camera.startPreview ();

  2. Apagar

    camera = Camera.open (); Parámetros p = camera.getParameters (); p.setFlashMode (Parameters.FLASH_MODE_OFF); camera.setParameters (p); camera.stopPreview ();

Y, ponga el siguiente permiso en AndroidManifest.xml.

PS Este proyecto está desarrollado en Eclipse 3.7, y probado con Samsung Galaxy S2 (Android 2.3.3).

  1. Disposición de Android Sólo un botón.

Archivo: res / layout / main.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/buttonFlashlight" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:text="Torch" /> </RelativeLayout> 
  1. Actividad Lea el código, un botón para encender / apagar la linterna, debe ser auto-explicativo.

     package com.mkyong.android; import android.app.Activity; import android.content.Context; import android.content.pm.PackageManager; 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 FlashLightActivity extends Activity { //flag to detect flash is on or off private boolean isLighOn = false; private Camera camera; private Button button; @Override protected void onStop() { super.onStop(); if (camera != null) { camera.release(); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button) findViewById(R.id.buttonFlashlight); Context context = this; PackageManager pm = context.getPackageManager(); // if device support camera? if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { Log.e("err", "Device has no camera!"); return; } camera = Camera.open(); final Parameters p = camera.getParameters(); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (isLighOn) { Log.i("info", "torch is turn off!"); p.setFlashMode(Parameters.FLASH_MODE_OFF); camera.setParameters(p); camera.stopPreview(); isLighOn = false; } else { Log.i("info", "torch is turn on!"); p.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(p); camera.startPreview(); isLighOn = true; } } }); } } 
  2. Permiso de Android Asigne permiso de CÁMARA.

Archivo: AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mkyong.android" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <application android:debuggable="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".FlashLightActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 
  • AsyncTask para actualizar widget - cómo acceder a textviews en onPostExecute ()?
  • ¿Es posible crear el widget como Google Play Música en la pantalla de bloqueo?
  • Desmarcando RadioButton - método alternativo
  • actualizar el widget android (utilizando tareas asíncronas) con una imagen de Internet
  • Actualización de un Widget a intervalos cortos utilizando API 19+
  • Android Widget usando Cordova
  • Widget de aplicación setImageViewUri no actualiza la imagen
  • Cómo construir un Widget Android Simple
  • Lollipop Android bloqueo de pantalla widget
  • Dos botones con PendingIntents - Widget
  • ¿Cómo implementar paneles expandibles en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.