新人日誌
- 2019年1月16日
- 他の話題
はじめまして、先週1月7日に入社したTanakaと申します。
研修でAndroid上のカメラから映像を取得し、ストレージに保存するアプリケーションを作成しました。
Google Open Sourceのコードを参考にし、Camera2 Apiを使いカメラから映像を取得し、
MediaRecorderでストレージに保存するというおおまかな処理の流れは読み取れたのですが、必要なパーミッションの承認要求でつまづきました。
AndroidManifestに必要なパーミッション(今回は撮影用のCAMERA、内部ストレージへの書き込み用のWRITE_EXTERNAL_STORAGE)を書き、
プログラム上のパーミッションが必要になるところで
requestPermissions("ここに必要なパーミッション")
でユーザーにパーミッションの承認を要求します。
さて、無事にパーミッションの承認要求ができたので保存していこう。
としたのですが、今度は書き出したファイルへのアクセスでつまづきました。
参考にしたコードでは
getExternalFilesDir(null)
とあり、アプリのプライベート・ディレクトリに保存されアクセスが面倒です。なので
getExternalStoragePublicDirectory(DIRECTORY_MOVIES)
として内部ストレージのMOVIESディレクトリに保存されるように変更。
これで分かりやすくなりました。
保存したファイルにアクセスしてみるとファイルサイズが0、保存に失敗していました。
MediaRecorder.stop()でエラーを吐いているみたいです。
MediaRecorderのsurfaceに
createCaptureRequest(TEMPLATE_RECORD)
でレコード用のリクエストを送ることを忘れていたようです。
これで無事に目的の動きをさせることができるようになりました。
まだまだ理解が足りていない部分もありますが参考にしたコードをもとに勉強していきたいと思います。
Tanaka
tanaka at 2019年01月16日 10:00:29