2015-09-25

Medoly Ver. 2.3.0, 2.3.1

2015-08-26 Ver. 2.3.0
- 検索結果を非同期で表示するように変更
- タップ処理のバグ修正


検索結果を非同期で表示するように変更


検索画面を非同期で表示させるようにしたため、DBの読込み中でもタブの切り替えや画面の切り替えといった操作ができるようになりました。
先日、自分の携帯端末に入ってる曲の数が1万曲を越えました。それぐらいの曲数があると、検索画面で多数の曲を一覧表示させると、しばらく画面が固まったような状態になっていました。そのため、検索画面の処理を大幅に見直して、非同期で表示させて一覧が表示されるまでの操作も受け付けるようにすることで、画面が固まる状態を回避できるようにしました。
ちなみに、一覧の読込み中は「Loading...」という文字が表示されますが、検索結果が100件以下の場合は(一々出るのが鬱陶しいので)表示しないような処理が入ってます。100件という数字は適当です。速度的にはもっと大きくても良かった気もしますが、何となく切りが良かったので。もっとこう、表示速度を測定して自動チューニングとか出来れば良いのですが、そこまでしなくても良いかなぁ…と。


タップ処理のバグ修正


各種画面のタップ処理、特にダブルタップの処理に共通した処理に、自分の勘違いがあったため、全体的に見直してます。表面上は特に変化が無いです。APIの使い方が間違ってて、余計な処理が行われていたので、コードを正しい処理に書き直しています。




2015-09-05 Ver. 2.3.1
- SYLT読み込み処理修正
- メイン画面からフォルダ指定で開けない問題修正
- 区間ループが発生しない問題修正
- 区間ループが上限を超えて設定できる問題修正
- 検索画面のスワイプ処理修正


SYLT読み込み処理修正


これはユーザ様からの要望です。一部の曲でSYLT歌詞の読込が出来ないという報告がありました。調べて見ると、これはSYLTの問題ではなく、MP3タグのバージョン取得が上手く動作していないことが問題でした。従来は、タグ取得ライブラリが取得したタグのインスタンスを判別して、自動的にバージョンを振り分けていたのですが、これがMP3のID3 v2.4の場合にうまく動作せず、v2.3と判別してしまう場合があり、その結果タグが取得できなくなるということがわかりました。
これに対し、ライブラリが返してくるバージョン番号を見てバージョンを判別させるように処理を変更しました。

メイン画面からフォルダ指定で開けない問題修正


検索結果の非同期表示処理において、一部修正が漏れがあり、フォルダ指定でフォルダの検索結果が開けない問題が発生していたため、その修正を行いました。


区間ループが発生しない問題修正


区間ループ(ABループ)の処理で、一度ループが発生した後にループが再度発生しないことがある問題を修正しました。これについては、Googleが用意しているAPIの仕様を上手く把握できていないため、正しい実装ができていませんでした。正直なところ、今でもあまり把握できてません…。


区間ループが上限を超えて設定できる問題修正


区間ループでA地点、B地点の指定が上限・下限をオーバーして指定できてしまう問題があったため、修正しました。


検索画面のスワイプ処理修正


検索画面のスワイプ処理を一部見直しました。タップ処理周りの見直しです。動作的にはあまり変化はありません。スワイプの反応が微妙に変わったぐらいです。


Medoly Ver. 2.2.5

2015-08-17 Ver. 2.2.5
- 出力デバイス選択ダイアログ追加  (アクションバーメニューより)
- デバイス選択ダイアログ追加に伴う権限追加
- 同期歌詞が頻繁に先頭までスクロールしてしまう問題修正
- オフセット値が2重に加算されていた問題修正



出力デバイス選択ダイアログ追加  (アクションバーメニューより)


アクションバーのメニューボタンを押した時に出るメニュー項目に、「出力デバイス」という項目を追加しています。これは、音声の出力先デバイスを選択するための機能です。
音声の出力先として選べるのは、標準状態で「通常」「スピーカー」「ヘッドセット」の3種類です。「通常」は何も選択されてない状態で、端末の設定に従います。「スピーカー」「ヘッドセット」は、ヘッドセットの接続状態に関わらずそれぞれ出力先を切り替えます。…が、これを選択して出力した場合、普通の再生とは異なる状態ため、再生音量が小さくなったりします。そんなわけで、機能として実装はしてみましたが、用が無ければ使わない方が良いような気がします(多分)。また、これらは端末によっては切り替えられません。理由は知りませんが、切換そのものが無効になります。通話機能を持たないタブレット端末で無効となる可能性があるようです。 現状、NVIDIAのShield Tabletで切り替えられない事を確認しています。
それよりもこの機能の真骨頂は、Bluetoothデバイスの切換です。メニュー上にBluetoothのA2DP接続が行われたデバイスが一覧表示されるため、切り替えたいデバイスを選択すると、選択したデバイスからの再生に切り替わります。複数のBluetoothデバイスを持っていて、頻繁に切換を行う際に使用することを想定しています。ちなみに、ここで切り替えた設定は端末の全ての音声出力に影響しますのでご注意ください。
この機能自体はメディアプレイヤーとはほぼ独立しているため、単独のアプリでも良かったかもしれませんが、プレイヤーから呼び出せた方が私にとって便利なのでプレイヤーに組み込んでみました。

 
出力デバイスダイアログ



デバイス選択ダイアログ追加に伴う権限追加


上記の出力デバイス選択機能の追加に伴い、以下の権限が追加されています。
  • MODIFY_AUDIO_SETTINGS (音声設定変更)
  • BLUETOOTH_ADMIN (Bluetooth管理)


同期歌詞が頻繁に先頭までスクロールしてしまう問題修正



同期歌詞を再生すると、スクロール位置がすぐに先頭に戻ってしまう問題が発生していたため、修正しました。これは、Ver. 2.2.2の「メイン画面のサイズ変更時に座標がずれる問題修正」で発生したものです。


オフセット値が2重に加算されていた問題修正


いつの間にやら、歌詞のオフセット値が2重に加算されている問題が発生していたため、修正しました。調べて見ると、歌詞の表示誤差設定を追加した時から発生していたので、大分長いこと放置していたようです…。
これは、単純にオフセットの加算処理を間違ってただけです。 現状、歌詞の表示方正をするための4種類ぐらいのパラメータを組み合わせてるので、色々ゴチャゴチャになってます。

2015-09-24

Medoly Ver. 2.2.2

2015-07-04 Ver. 2.2.2
- プラグインダイアログのレイアウト修正
- メイン画面のサイズ変更時に座標がずれる問題修正
- 外部通知の設定ON/OFFが反転していた問題修正
- 歌詞読込みエラー修正

プラグインダイアログのレイアウト修正

メイン画面のアクションバー左上のメニューから開くプラグインダイアログの画面レイアウトを変更しました。従来は、アプリの起動やアプリ情報のボタンが上側にありましたが、それを下側に移動させています。理由は、プラグインの各種実行ボタンの方が利用頻度が高いと思われるため、そちらを上側に持って来たかったためです。


メイン画面のサイズ変更時に座標がずれる問題修正

メイン画面において、表示タブ上のダブルタップによる画面最大化や、ピンチアウトによる画面の拡大の際、座標がずれる問題が問題がありました。これは、ViewPagerでタブを実装した時から存在し、ずっと悩んでいたのですが、ようやく原因が分かりました。
画面を拡大した際に周囲の枠を取り払うのですが、内部的にはその枠の分だけ、内部のViewPagerの座標を補正してやる必要があります。ところが、ViewPagerは座標の取り方が「最初にどのページを表示させたか」で変わってきます。例えば、再生キューのタブを最初に表示させると、再生キュータブの左端が0、表示タブの左端が(画面横幅サイズ+ タブの隙間)、プロパティタブの左端が(画面横幅サイズ + タブの隙間)x2のような座標になります。ところが、最初に表示したタブが表示タブの場合、表示タブの左端が0となり、再生キュータブの左端はマイナスになります。この座標のズレが、サイズ変更の補正のズレとなっていました。
表示タブが最初に表示されるのは、ウィジェットからアルバムアートをタップして起動した時です。それ以外は通常再生キュータブから開始されるため、座標ズレの原因の特定が困難になっていました。
ちなみに、通常タブの切り替えはタブのインデックスで行うので座標はずれないのですが、現在選択されている他部と同一のタブインデックスを指定しても、座標の補正は行われないため、手動で座標の補正を行っています。


外部通知の設定ON/OFFが反転していた問題修正

設定のON/OFFの意味が逆転しており、初期状態で外部に再生状態の通知が行われるようになっていました…。単純にデバッグ不足です。


歌詞読込みエラー修正

歌詞読み込み時にエラーが発生する場合があったため、その修正です。