【Xamarin】ZXingでカメラ起動中別ページを出すのに敗北した

こんにちは。ぶんじゃくです。

今回はまず言っておきますが「できなかったこと」を申し上げます。

よくある「~ができた」といった内容ではないのでご注意ください。

それでは、さっそくやっていきましょう。


XamarinでZXingカメラを使用中別ページを出したい、が

見出しの通りですが、詳細を。

XamarinのZXingでカメラを使用します。

カメラ起動中、別ページを出し、そのページを閉じる。

すると、元のカメラ起動画面に戻ってくるということがしたいわけです。

ところが、Androidのみカメラが止まってしまう問題にぶち当たりました。

iOS側は問題なく動作しています。

(単一Android機種だけの動作確認で、他端末で確認まではしていません。)

いろいろ試しましたが

結果、解決に至りませんでした。

情報を集めたところ、iOSだけ動かなくなる、というようなものはあったのですが…。

Navigation.PushAsyncでもNavigation.PushModalAsyncでもダメでした。

モーダルはいけそうな気がしたんですがね…。

別ページを閉じた際、元ページのOnAppearingは走っています。

そのため、考えられることと言えば、もう一度InitializeComponentを走らせる必要が?

(もちろん、馬鹿正直にOnAppearingなんかで呼べば例外で落ちます。)

一応最終手段として、Navigation.InsertPageBeforeで別ページを作りPopする

(つまり完全な画面遷移)

という方法はあり、これは動作するのですが、この動きではないんですよね…💦

それと、DisplayAlert等のアラートは問題なく動作します。

結局

動きとしてはモーダルが一番かっこいいわけで、この原因を調べていたんですがわかりませんでした。

結局、カスタムインターフェースを作り、AndroidとiOSそれぞれ独自にウィンドウを作ることにしました。

ページではなくウィンドウを出すだけなので、これなら裏でカメラが止まることもありません。

しかし、クロスプラットフォーム開発がウリのXamarinでこれだけのために独自実装するはめになったのは負けた気持ちです。

いつかリベンジしたいところです。


さて、いかがだったでしょうか。

できなかったこと、なので有益な情報ではないと思うのですが

そういうこともあったようだ

くらいに頭の片隅に入れておいてもらえれば幸いです。

それでは。