• スポンサードリンク

またまたGALAXY S5でAudioRecordが…

Android AudioRecord USB アプリ

今度はAndroid5にアップデートしたら、の話やねんけど。極悪仕様に磨きがかかってます。

以前の記事でGALAXY S5でAudioRecordを使った音声入力がうまく動かないってのとそのworkaroundを書いたんですけど、Android5にアップデートしたところ極悪仕様に更に磨きがかかってました(UAC対応機器を繋いでいる場合)。

磨きがかかったのは次の所

  • AudioRecord生成時点では例外生成せず、またAudioRecord#getStatusでも正常に初期化出来たことを示すSTATE_INITIALIZEDが返ってくるにもかかわらず、AudioRecord#startRecordingは内部エラーをログに出力、当然のようにAudioRecord#readもERROR_INVALID_OPERATIONを返す。
    いやいやそもそも#getStatusでSTATE_INITIALIZEDを返しといて#readでERROR_INVALID_OPERATION(初期化できてません)を返すっておかしいやろ。
    Android5に上げる前は#getStatusでエラーが帰ってきてたのに(TT)。
  • USBオーディオルーティングを無効にする設定が無い
    Android5.xでは設定画面の開発者向けオプションにUSBオーディオルーティングを無効にする設定が有る…はずなんですけど、Android5にアップデートしたAu版のGALAXY S5には有りません。試してないけどプログラムから直接叩けば設定できるかも

それでworkaroundは…もうこの辺りの機種を諦める^^
じゃなくて、「(UAC対応機器を繋いでいる場合は)音声入力ソースとして常にCAMCORDERを最初に試してみる」ですね。普通にDEFAULTやMICをこの機種に指定するとまともに動きません(●`ε´●)この辺りの機種ではUAC対応機器を繋ぐと#getStatueでのチェックはまったく役に立ちませので信用してはいけませ〜ん(●`ε´●)
だいたいからして、1秒に4000〜1万数千件のゴミログをlogCatに吐くってどんな端末やねん(-“-)動作検証しとらんやろ。あっそうそうUVC対応機器を接続しなければ1秒数十件ぐらいのログだから普通なんですけね。

とりあえず愚痴で〜す^^;

追記:
少なくともAu版のGALAXY S5ではAndroid5に上げてもUSBオーディオルーティングは常時無効で端末内蔵マイクからの音声しか入力できませんでした。手持ちの他のAndroid5.x端末だと音声入力出来るUAC機器を繋ぐとUAC機器からの音声入力に自動的に切り替わるのに。
開発者向けオプションにUSBオーディオルーティングを無効にする設定が無いという事と関係有るのかもしれません。

« »

  • スポンサードリンク