Audio Spectrum Monitor - Apps on Google Playを久しぶりにバージョンアップした。
けっこう前に公開して、少しバグを改修したくらいで、
しばらく放置していたがプログラミング熱が再開したので、
勢いにのって前々から追加したかった録音機能を追加した。
プログラミングに入る前に録音再生用のボタンのデザインとか配置とかに
けっこう悩んだ。
フリーのアイコンとか探してみたが、著作権表示とかしないといけないとか
制約があるので、結局自分で作ることに。
Androidの場合解像度別に画像を用意しないといけないのが結構めんどい。
ベクトル画像のsvgからバッチ処理で解像度別のpng画像を生成できないかと
調べてみたら、
Inkscapeで描いた画像をpngにバッチ変換する - Qiita
ここでやり方が載っていたので参考にさせてもらった。
おかけで画像の準備の効率をあげることができた。
録音、停止、再生、一時停止をボタンで制御するのだが、
たった4種類のボタンだけでも、わりと状態管理が大変でバグりやすい。
まじめにやるなら状態遷移図とか書くのだろうけど、
動かして修正を繰り返してとりあえず動くようになった。
適当なテストしかしてないのでまだバグはありそうだけど。
Androidで音声の再生はAudioTrackを使用したが、
これがまた、AudioRecordと同じくAPIのドキュメントだけでは動きが予想しにくい。
直しては試してでまともに動くようになるまでけっこう時間がかかった。
他にも、Vocal Pitch Monitor - Apps on Google Playで実装した機能を
いくつか取り込んだりと今回は結構な修正を行った。
そんなこんなで週末丸2日、食事以外をほぼコーディングに費やしてやっと完成しました。