以前、Android端末の画面キャプチャ方法を質問し、あれこれやっていくうちに描画されたボタンをタップするとスクショを撮るという処理をサービスで行うアプリケーションを作成しました(ボタンを最前面に描画させるため)。
(参考にしたサイト:http://techbooster.org/android/application/17026/)
上記URLのサイト通りにコードを記述し動作確認しました。実行中何度ボタンをタップしてもスクショを撮ることができることも確認しました。
本来の目的は画面の指定した座標の色の変化を検出することなので、私は手動で撮る処理から自動で連写するような処理に変更しました。行ったことは、回数を指定しスクショを撮る部分をfor文で回そうとしたのです。しかし、ループの2回目で撮る際にimageがnullになるためエラーで強制終了するようになりました。(acquireLatestImage()メソッドでnullを返しているみたいです)
サービスがActivityと同じスレッドで動くはずなので、for文でまわすとimagereaderが更新されずqueueが空のままなのだと考え、スクショを撮る処理を別スレッドで行うようにしました。そうすると連写することができました。
しかし、別スレッドにしたからといってqueueが常時空ではないという訳ではなく、たまにnullになってしまいます。そのときは仕方なくdo-whileでqueueに何かが入るまで待機させてます。そのため、連写する速さは一定ではありません。imagereaderの更新する時間がないのかと思い、適当にsleepさせて時間を稼いでも一定ではありません。
そこで、今回質問する内容は、
・imagereaderが持つqueueはどのタイミングで要素が追加されるのか
・連写の速さを一定に保つことは可能であるか
です。日本語が下手であるのと長文ですみません。回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/22 15:58 編集
2016/12/23 00:48
2016/12/23 01:28
2016/12/23 01:29