2

アドビのプレリリース フォーラムでこの質問をしたことがありますが、彼らは黙っているので、あなたの助けが必要です!

サーバーへのライブビデオストリーミング中にAndroidデバイスでフラッシュライトをオン/オフできるアプリケーションを作成する必要があります。

というわけで作って拡張。Java 関数は単純です。

 try{ 
   if (isOn){
     camera = Camera.open();
       Parameters params = camera.getParameters();
       params.setFlashMode(Parameters.FLASH_MODE_TORCH);
       camera.setParameters(params);
     } else {
        camera.release();
     }     
     } catch( Exception e ){
 }

前後カメラ付きのHTC Desire Sを使用しました。airアプリからストリーミングして(as3 camera = Camera.getCamera()を使って)この拡張機能を使おうとすると全く反応しません

だから私は回避策を見つけました:フラッシュでコードを次のように変更しました:

 camera = null;
 nativeExtension.turnFlashOn(true);
 camera = Camera.getCamera("1");

このコードは、背面カメラを使用する場合にのみ機能しますが、実際には前面カメラである引数「1」を渡す必要がありますが、この場合は背面カメラが使用されます。とにかく - それは正常に動作します。

しかし、背面カメラのみの HTC でこのアプリケーションを使用しようとすると、スタックしました... 背面カメラである「0」カメラしかないため、Camera.getCamera("1") を使用できません。したがって、このコードを使用すると:

 camera = null;
 nativeExtension.turnFlashOn(true);
 camera = Camera.getCamera("0");

私の画像は両側(Androidアプリと反対側)でフリーズし、フラッシュがオフの場合は正常になります

4

2 に答える 2

1

これは、ネイティブ拡張機能でまだカメラを開いているためだと思います。nativeExtension.turnFlashOn(false) を実行したときにのみ解放しています

カメラ リソースは、一度に 1 つのプロセスだけが保持できます。これが凍っている理由です。システムログ(logcat)を見ると、「カメラに接続できません」などのエラーが表示されると思いますフラッシュがオフの場合、camera.release()を実行したため、保持されておらず、ASが取得できます.

前面カメラを要求しているのに背面カメラを使用している AS で何が起こっているのかわかりません。あなたはあまり明確ではありません。いずれにしても、カメラ リソースを同時に保持する 2 つのプロセスが必要になるため、目的の結果が得られないため、これを行わないでください。

ネイティブ拡張機能からストリーミングを実行しないのはなぜですか? そうすれば、カメラとフラッシュを同時に使用でき、ネイティブで実行されるため、パフォーマンスが大幅に向上する可能性があります。Flex のカメラと録画ビデオのサポートは非​​常に貧弱です。私はそれを使用するつもりでしたが、最終的にすべてのカメラ プロセスを NE に移動することにしました。

お役に立てれば

于 2011-12-09T08:56:14.093 に答える
0

デバイスに 0、1、2 台のカメラがインストールされている場合は、このロジックを試してください

 camera = null;
 nativeExtension.turnFlashOn(true);
// get front camera
camera = Camera.getCamera("1");
// if no front cam try back
if (camera == null)
 camera = Camera.getCamera("0");
// if no cams try default cam
if (camera == null)
 camera = Camera.getCamera();
else {
  trace("Mobile device has no camera!");
}

このコードは、0、0、または 2 つのカムを備えたデバイスで機能します

于 2013-02-25T17:55:36.577 に答える