2

非アクティビティ スレッド (デバイス上で実行されている Web サーバー) から写真を撮りたいと考えています。

これを行うために、サービスをアプリケーションにバインドし、それを呼び出して写真を撮り、完了したらビットマップを返す必要がありました。しかし、セキュリティ上の理由から、Androidはプレビューを表示せずに写真を撮ることを禁止しているため、それはできないようです(一部のデバイスでは、ここで受け入れられた回答に示されているようなダミーのプレビューがあっても)

次に、実際のプレビューを使用して写真を撮るアクティビティが必要でしたが、次の理由から、これを行う方法は考えられません。

  • startActivityForResult()私のWebサーバーはアクティビティではないため、呼び出すことができないため、ビットマップを取得できません。そのため、オーバーライドできませんonActivityResult()。(webServer にはアプリケーションのインスタンスの参照があるだけです)

  • Response オブジェクトはパーセル化できないため、Activity が応答する Intent とともに HttpRequest を渡すことはできませんか?

可能な限り最も論理的/エレガントな方法でそのようなことを行うにはどうすればよいですか?

4

1 に答える 1

2

これが個人的な使用のみを目的としており、多くのモバイル デバイスに Web サーバー (オープンで保護されていないサーバー ソケット) を配置することを真剣に検討していないことを心から願っています。もしそうなら、私はあなたが潤沢な法的弁護基金を持っていることを願っています.

そうは言っても:

ステップ #1: Web デーモン サービスを登録BroadcastReceiverするLocalBroadcastManager

ステップ #2: 必要に応じて、サービス コールstartActivity()で写真撮影アクティビティを呼び出します

ステップ #3: JPEG データを追加で、または事前に処理できることが確実な場合は静的データ メンバーとして、LocalBroadcastManagerWeb デーモン サービスを介してブロードキャストを送信する写真撮影アクティビティを作成します。Intent次の画像を撮影します。

を使用すると、 (およびその巨大なビットマップ エクストラ) を OS に送信してプロセスに戻す必要がLocalBroadcastManagerなくなります。Intent

于 2012-06-10T23:14:33.410 に答える