一ヶ月で順調に1万レコード増加。
一方俺の方は今開発中のアプリ作り始めて2ヶ月。
我ながらなんでそんなに時間が掛かるのか分からない、簡単な(別の言い方だとショボい)アプリ。でも色々実装工夫してると楽しいんだよね。
まさにコピペプログラマの醍醐味。
さすがに近日公開予定。作ってみたいアプリのアイデアは他にもいっぱいあるんだよね。簡単な(別の…)やつばっかりだけどね、HAHAHA!
16年6月14日(火)‡19時32分25秒 ‡
ただの自分向けメモ
最近は次のアプリ開発のためCamera2APIを勉強中。
googlesamplesのサンプルはAndroidStudioだと一発インポートですぐ動かせるんだけど、勉強のためあえて一から書き写してる。自分の中では写経と呼んでます。
で、ビデオ録画のサンプルのこれ写経して動かしてみたら、
録画終了ボタン押すとアプリごと落ちる。「java.lang.IllegalStateException: swapBuffers: EGL error: 0x300d」とか、「android.hardware.camera2.CameraAccessException: The camera device has encountered a serious error」とかでてるから、おま環の機種問題でこの端末(zenfone5)ではCamera2API使えないのかなと思ったんだけど、みんな大好きstackoverflowで解決策発見。リンク先のアンサー見れば解決策全部乗ってるんだけど、以下備忘のため書き残しておきます。一般的な機種ではこんなことにならないみたいだから、この対応のせいで逆に上手く動かない機種もあるかもしれない。後日それで嵌ったりしないため、こういう対応してるよってのを忘れないためです。
startRecordingVideo()で録画用にMediaRecorder.getSurface()で取得してCameraCaptureSessionに渡してるsurfaceは、MediaRecorder.stop()で自動的に破棄されるらしい。その時点でセッションが落ちて、それにつられてCameraDevice自体落ちる。なので録画プレビュー用のセッションをclosePreviewSession()で閉じようとしたところでCameraAccessExceptionでアプリ全体が死亡する。なのでCameraAccessExceptionが出る前に既にEGL errorでてアプリの処理は死んでるのね。これが原因。しかしこういう挙動をしない機種はどういう処理をしてるんだろうか。
で、対処としてはstopRecordingVideoではMediaRecorder.stop()をしないで、通常時のプレビューセッションのStateCallbackのonReadyでMediaRecorder.stop()とreset()をしています。
最初は録画用のプレビューセッションのStateCallback、onClosedでやろうとしたんだけど、何故かonClosedは走らず、MediaRecorderの多重起動で落ちちゃう。APIドキュメント(android.hardware.camera2.CameraCaptureSession)を読むと、onClosedは自分で閉じた場合には呼ばれないみたい。
This method is called when the session is closed.
A session is closed when a new session is created by the parent camera device, or when the parent camera device is closed
なので通常プレビューに戻ったときのonReadyでやってます。フラグはmIsRecordingVideoを流用。
以上備忘でした。もしこのエントリ読んで理解したい人がいたらサンプルコード併読してください。というか同じようにサンプル走らせて見て落ちて困ってる人しかこのエントリ見ないかw
16年4月29日(金)‡14時38分41秒 ‡
Script†ただの自分向けメモ
約1万件増えてる。相変わらず素晴らしい。
昨日、「20160309」は人類史に残る日付になりそうだとの声がネット上にチラホラ。
alphaGoスゴイ。少なくともSingularity「記念日」の一つであるのは間違いないと俺も思う。
受けたイ・セドル棋士もスゴイ。ダメージが残ることの無いように祈ります。
16年3月10日(木)‡14時28分31秒 ‡
ただの自分向けメモ†未分類