≒ jawiki/latest 20151020/ のページ数の件>1989570

10月は2回dump取りあったんだなー。ボランティアの皆さんには足を向けて寝られない。僕にできるのは時々の寄付だけだ。あー。

未だにAndroid入門。遅々として進まず、アプリ公開なんてまだ先の話。
ここ2~3日はMediaPlayerとAudioTrackのどっちを使うかで試行錯誤。
結局今はAudioTrackで組んでいくことになったんだけど、

  • MediaPlayer
    • メリット
      1. UIと親和性高い。
      2. 組むのが簡単。ネット上の情報も豊富
      3. メディアタイプを選ばない。mp3はもちろん、FLACもそのまま再生できる
    • デメリット
      1. 音データを細かく引っ張り出して処理するのが難しい。定番としては、Visualizerクラスを使う(それ以外の方法見つけられず)のだけど、各種eventListenerで拾って処理していくので、自前でThreadとか作らなくて良い分簡単なんだけど、当然データ取得タイミング(=データサイズ)を自由に設定できない。
      2. Visualizerで取得できるデータがいまいち。周波数もずれてるような。色々やっても400Hzが344Hzとか出る。そのズレの修正アルゴが分からない。それに最大値と最小値にも制限がある。簡単なイコライザー的な処理や、ヴィジュアライズ処理にならそれほどシビアに音の周波数拾わなくって良いんだろうけど。その結果一切GCが走らないのは大きなメリットだけどw
  • AudioTrack
    • メリット
      1. byte配列でデータをやり取りするので途中で抜きやすい。というかデータ処理部分は普通にFileInputStreamとか使うので自由度高い&Java使いには分かりやすい。
      2. 一応各種eventListenerも揃ってる。情報見つけるの難しいけど。
    • デメリット
      1. Waveファイルしか再生できない。それ以外のタイプは事前に変換処理必要。またメモリが圧迫される…
      2. AudioTrackの情報が少ない。2011年の情報とか未だに重宝するのはAndroid開発では珍しいと思う。
      3. GC走りまくり。(それはお前のプログラミング能力ががが)

ということで、現状の知識を整理。後で読み返して間違ってることがあったら実装内容変えよう。
しかし、今までもwebサイト構築はTomcat+DWRで基本やってきたんで、Java使ってきたと思ってたけど、Androidみたいに全部Javaで書いてると改めて発見することが多い。継承とかオブジェクト(クラス)志向とか知識としては持ってたけど、きっちり実践してたわけではない概念?をAndroidの場合ある意味強制されるからより理解が深まる感じ。以上。