BETA

音声認識PG-2

投稿日:2020-01-29
最終更新:2020-01-29

今日知ったこと

  1. Androidのストレージには内部ストレージと外部ストレージがある。
    外部ストレージにファイルを書き込む際には権限の設定が必要。
    内部ストレージはアプリケーション専用の領域で、端末の利用者からは見えない領域らしい。

ファイルの保存もうまくいかないのは権限、或いはディレクトリパスの指定が問題なのかな?と思ったが違うっぽい。
ファイルのパス指定の際
/storage/emulated/0/Download/sample.wav
のようにファイル名まで指定しなければいけないという所で意外性を感じた。
配置するディレクトリまでのパスでいいと思っていたので...

外部ストレージ関連の権限については以下の通り

Read:READ_EXTERNAL_STORAGE   
WRITE:WRITE_EXTERNAL_STORAGE  
※WRITE権限はREAD権限を内包している。  
  1. Android6以降は権限設定だけではダメ
    端末の設定からアプリに権限を付けてあげないとダメらしい。
    ちょっと不便...。
    今回はこれがエラーの原因となっていた。

             //インスタンス生成  
             mediaRecorder = new MediaRecorder();  
    
             //マイクからの音声を録音する  
             mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);  
    
             //ファイルへの出力フォーマット  
             mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);  
    
             //音声のエンコーダーはDEFAULTに  
             mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);  
    
             //ファイルの保存先を指定  
             mediaRecorder.setOutputFile(directoryPath + "/sample.wav");  
    
             //録音の準備  
             mediaRecorder.prepare();  
    
             //録音開始  
             mediaRecorder.start();

    エラーを見ると、setAudioSourceのところでRuntimeExceptionとなっていた。

とりあえずマイクで音声取るところまでは無事動いた。よかった~
明日はボタンをもう一個配置して、画面を作りこんでこう。
Android6以降ではマニフェストで権限を与えるだけではダメ、っていう質問が見つからなかったらまだまだハマってた...。
こういった設定周りの事も勉強していかないと。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

日々勉強になったことをアウトプットしていきます。 しばらくはAndroid、Kotlin、Javaあたりで。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう