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 !
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 .
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.
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.");
}
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");
}
}
}