2012年05月16日

[Unity] WebcamTextureとフラッシュライト(Androidプラグイン)を同時使用するときの注意

「WebcamTextureで無事カメラ画像が取得できたー」と喜んでいたら、
以前出来ていたカメラのフラッシュライトの点灯が出来なくなりました(涙

■やりたいこと
⇒カメラ画像を表示しながら、フラッシュライトを点灯させる

■エラー内容
java.lang.RuntimeException: Fail to connect to camera service
⇒フラッシュライトを点灯しようとしたときに、「カメラが取得できません」と怒られる
※具体的には以下の箇所
------------------------------------------
※プラグイン側のプログラム(Java)
private Camera camera = null;
private Parameters parameters;
public void lightOn() {
if(camera == null) {
camera = Camera.open(); // <---ここでエラーが起きる
parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
}
}
------------------------------------------
原因を調べていたら、以前の記事にも関係しているかもしれないことに気づきました。

自分なりに調べて得た結論としては、

WebcamTextureがカメラ機能を専有しているときにプラグイン側がフラッシュライトを点灯しようとすると
占有権がバッティングする。
そのため、プラグイン側ではカメラ機能を専有できない = フラッシュライトを点灯できない。


ということで、フラッシュライトを点灯させる前に、WebcamTextureの「Stop()」メソッドを使ったら
無事フラッシュライトは点灯しました。
だけど、今度はカメラ画像の取得が止まります。

あっちを立てればこっちが立たず。。。
この辺は工夫で乗り切ろう。

UnityScriptの「Handheld」クラスにフラッシュライトの制御が追加されないかなー。
そうすれば、プラグインを使わなくて済むのに。
posted by be-style at 17:16| Comment(0) | Unity
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]