Comment utiliser l'appareil photo flash / led comme torche sur un onglet Samsung Galaxy?

je suis confronté à un problème avec un onglet Samsung Galaxy. Je veux utiliser flash comme torche.

personne Ne sait comment l'activer ?

par la présente un code qui fonctionne pour activer / désactiver le flash de l'appareil photo sur un désir HTC mais qui échoue sur L'onglet Samsung Galaxy.

Lampe de poche.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>

mise en page/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>

Merci !

14
demandé sur Sly 2011-02-16 17:11:45

4 réponses

Vous ne faites rien de mal. En fait, vous faites tout corriger. Vous rencontrez un problème spécifique à L'appareil qui est très répandu dans le monde Android. J'ai trouvé les comportements suivants pour FLASH_MODE_TORCH:

  • Fonctionne très bien dans tous les cas
  • fonctionne bien, mais pas avec autofocus sur
  • ne fonctionne pas du tout

Frustrant, getSupportedFlashModes () retournera FLASH_MODE_TORCH sur presque tous les périphériques quand seulement une poignée le supporte.

aussi, certaines implémentations de périphériques ont balayé les modes flash pris en charge. Si vous passez par la caméra .Paramètres vous pouvez essayer de définir le mode flash à FLASH_MODE_ON, FLASH_MODE_AUTO ou FLASH_MODE_RED_EYE et voir si l'un d'eux fonctionne. Note-Ceci est un piratage spécifique à l'appareil.

j'ai déposé ces types de bogues avec Google concernant le DroidX et Nexus S. Ils l'ont fermé en tant que problème spécifique à l'appareil. Je dirais de Samsung dans l'espoir d'un pilote ou d'un firmware correctif, mais leur soutien Android canaux n'existent pas .

22
répondu Error 454 2017-05-23 12:16:59

m'a pris un peu de temps mais je pense que vous manquez un startPreview() là.

après avoir fait votre Camera.open() et après avoir paramétré, faites un mCamera.startPreview() . Cela devrait faire l'affaire.

7
répondu JM Macariola 2011-06-11 07:31:15

C'est comme ça que je l'ai fait marcher.

if (Build.MODEL.equals("GT-P1000")) {

            Log.d(FlashlightActivity.TAG, "This is Samsung Galaxy Tab.");

            params.setFlashMode(Parameters.FLASH_MODE_ON);
            camera.setParameters(params);
            camera.startPreview();
            camera.autoFocus(new AutoFocusCallback() {
                public void onAutoFocus(boolean success, Camera camera) {
                }
            });

            isLEDturnedOn = true;
            Log.d(FlashlightActivity.TAG, "LED turned ON.");

} 
2
répondu urSus 2012-08-17 16:31:02

C'est ainsi que j'allume et de la torche en lg Nexus 4 et Samsung Galaxy Ace 2.

public void changeTorch() {
            try {
                camera = Camera.open();
                // try to open the camera to turn on the torch
                Camera.Parameters param = camera.getParameters();
                param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                camera.setParameters(param);
                camera.startPreview(); // needed for some devices
                Log.v("BSW torch", "Torch ON");
            } catch (Exception e) {
                // if open camera fails, try to release camera
                Log.w("BSW torch", "Camera is being used trying to turn Torch OFF");
                try {
                    camera.release();
                } catch (Exception ex) {
                    Log.e("BSF torch", "Error releasing camera");
                }
            }
        }
2
répondu Freefri 2013-06-24 17:35:12