0

私は自分のアプリケーションでカメラのフラッシュライトを使用しています。そのためのコーディングが完了しました。ライトのオン/オフで動作しています。しかし、2秒後にオフになります。オンボタンをもう一度押すと、強制的に閉じられました。これは私がこれに使用しているコードです。助けてください。

ユーザーがオンボタンライトをオンにしてから、ユーザーがオフボタンを押すまで、これが必要です。

private void processOffClick()  {

    //togglebutton.setButtonDrawable(R.drawable.offbutton);
    System.out.println("in off state");
    if( cam != null ){
        cam.stopPreview();
        cam.release();
    }
}
private void processOnClick()  {

    //togglebutton.setButtonDrawable(R.drawable.onbutton);
    System.out.println("in on state");       
    cam = Camera.open();     
    Parameters params = cam.getParameters();
    params.setFlashMode(Parameters.FLASH_MODE_ON);
    cam.setParameters(params);

    cam.startPreview();
    cam.autoFocus(new AutoFocusCallback() {
        public void onAutoFocus(boolean success, Camera camera) {
        }
    });      
}
4

3 に答える 3

1

行を入れます:

Parameters params = cam.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_ON);
cam.setParameters(params);

そのように processOnClick に入れる代わりに processOffClick に:

boolean clicked = false;
private void processOffClick()  {

  //togglebutton.setButtonDrawable(R.drawable.offbutton);
  clicked = false;
  System.out.println("in off state");
  if( cam != null ){
      cam.stopPreview();
      cam.release();
  }
}
private void processOnClick()  {
  clicked = true;
  //togglebutton.setButtonDrawable(R.drawable.onbutton);
  System.out.println("in on state");       
  cam = Camera.open();     
  Parameters params = cam.getParameters();
  params.setFlashMode(Parameters.FLASH_MODE_ON);

  while(clicked)  { 
     cam.setParameters(params);

     cam.startPreview();
        cam.autoFocus(new AutoFocusCallback() {
           public void onAutoFocus(boolean success, Camera camera) {
        }
     });
  } 
}

それはうまくいくかもしれません、私はコードをチェックしませんでした

while ループを追加して、クリックが解除されるまでフラッシュとフォーカスを保持するようにしました。

于 2011-11-14T12:48:07.287 に答える
1

私の経験によると、フラッシュモードは「TORCH」(サポートされている場合)である必要があり、プレビューを開始したときにのみ開始されます。ただし、カメラはデバイスによって動作が大きく異なり、常に機能記述子で宣伝されているとは限りません

于 2011-11-15T10:23:49.877 に答える
0

1.電源を入れます

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

2.電源を切ります

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

そして、AndroidManifest.xmlに次の権限を設定します。

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

これを参照してくださいhttp://www.mkyong.com/android/how-to-turn-onoff-camera-ledflashlight-in-android/

于 2012-10-16T12:12:38.850 に答える