2016-11-09

旅行中

大変私的な話で恐縮ですが、現在フランスを旅行中です。
色々見て回ってます。

2016-10-01

Medolyプラグインのソースコードを公開しました

本日、MedolyプラグインのソースコードをBitbucketに公開しました。


Medoly Last.fm Scrobbler Plugin

Medoly Twitter Plugin

Medoly Lyrics Scraper Plugin


ライセンスはMITです。

元々ソースは公開するつもりでいたのですが、インターフェース部分の見直しをしてから公開しようと思っていました。ところが、その見直しを今までズルズルと先延ばしにしていたため、こんなタイミングになってしまいました。

もし興味があればどうぞご参考ください。


ちなみに、Last.fmプラグインとTwitterプラグインは、APIキーが含まれているソースファイルが欠けた状態になっています。Token.java.rename ファイルをを Token.java にリネームするとビルドできると思いますが、APIキーが含まれていないため、このままでは動作しません。動かしたい場合は、別途自分でLast.fmやTwitterのサイトからAPIキーを取得してコードに埋め込む必要があります。

元々、APIキーが含まれるソースコードをどうやって公開したものかと悩んでいたのですが、結局こんなやり方になってしまいました。どなたか、もっと上手い方法があれば教えていただけると幸いです。そこまでしてAPIキーを非公開にしても、アプリが偽装されるぐらいなのでそこまで大した影響はないかと思っているのですが、念のためです。所詮、apkファイルを展開されて強引に見ようと思えば見られる代物ですしね。


Bitbacketの公開サイトに課題も書き込めるようになっているので、もし何かバグとかあれば報告していただけると助かります。

ちなみに、Medoly本体は公開しないのかと思われそうですが、内部的に色々見せたくない恥ずかしいコードもあるので、もうしばらく先になりそうです…。

2016-09-28

インストール端末数が1000を超えました



去る9/17に、アプリのインストール数が1000を超えました。このインストール数というのは、同時にインストールされている端末の数を示すため、1つのアカウントが複数の端末に同時にインストールしても、その分加算されます。アンインストールすると減算されます。恐らく、ずっと使われていない端末は破棄されたものと判定されて減算されていっている模様ですが、詳細は不明です。
この数値は表に出てこないので、普通の人が目にする機会はあまり無いかと思いますが、個人的には同時に1000端末にインストールされているということに結構ビックリしています。
ちなみに、今までの総インストール回数は4101と書かれた方の数字で、この数字はGoogle Playの画面に大まかに表示される値です。よくダウンロード数と言われてる値はこちらの値です。

ちなみに、最初のリリースから現在までのインストール数推移のグラフは以下のような感じになります。



これからも少しずつ開発を続けていきたいと思いますので、どうぞよろしくお願いします。


2016-10-01 追記 

9/29に、Googleより次のアナウンスがありました。



 
[アクティブなインストール端末数] という新しい指標を導入します。当面の間、この指標は、9 月 1 日まで遡ったデータに基づき、アプリの [統計情報] ページに表示されます。
年内に、現在のすべてのレポートで [現在のインストール数(端末数)] と [現在のインストール ユーザー数] はこの新しい指標に置き換えられます。置き換えられた指標の履歴データは、グラフと CSV 形式のダウンロードで引き続きご利用になれます。

インストール数の指標が変更される理由

[アクティブなインストール端末数] には、過去 30 日間に 1 回以上オンラインになった端末(アクティブな端末)のうち、アプリがインストールされている端末の数が表示されます。
アプリの [現在のインストール数(端末数)] と [現在のインストール ユーザー数] のデータには、最後にアクティブだったのが数か月前まで遡る端末も含まれていました。[アクティブなインストール端末数] に切り替えることで、過去 30 日間に使用された端末のみを対象として、アプリの最近のユーザー エンゲージメントを確認できるようになります。

指標への影響

[現在のインストール数(端末数)] と [現在のインストール ユーザー数] の方がアクティビティの期間が長かったため、アプリの [アクティブなインストール端末数] の方がデータの値は小さくなる見込みです。

というわけで、せっかく 1000を超えたインストール数ですが、標準の指標ではなくなり、値のサポート自体も終了してしまうそうです。今後は30日以内に動作した端末を基準とする「アクティブなインストール数」が標準となるそうです。ちなみに、Medolyの現在値は825となります。



また1000になった辺りで何かお知らせするかと思います。

2016-09-25

Medoly Ver. 2.8.0, 2.8.1, 2.8.2


Ver. 2.8.0



2016-08-22 Ver.2.8.0
- プラグイン通信データ変更に伴う修正
- 検索画面のレイアウト変更
- 文字列検索でスペース区切りをAND検索に変更
- 数値キーから再生番号を指定する昨日追加
- Bluetoothレイテンシの初期値を0に変更
- 歌詞の文字サイズ初期値及び上限を変更
- 起動時にレジュームされない問題修正
- SDカード書き込み権限でエラーが発生する問題修正
- その他修正



複数の値のタグに対応


メディアのタグは、一つのタグに複数の値を持つ場合があります。本バージョンで複数の値を持つタグに対応しました。この変更のため、内部的なデータ構造を大幅に見直しています。
対応とは、プロパティ情報への複数の値の表示、プラグインへのデータ送信等です。検索については、Android標準のデータベースを利用しているため、現状では残念ながら対応不可能です。
またこの変更に伴い、設定画面の[機能]カテゴリに、以下の2項目が追加されています。

[プロパティの分割]
特定の文字列で分割し、プロパティを複数の値として扱います。対象の文字は「;」、「/」、「,」、「&」、改行の5種類です。

[プロパティの結合]
複数のプロパティを特定の文字列で結合します。対象の文字は分割と同じです。

「プロパティの分割」と「プロパティの結合」を両方してした場合は、値を分割した後に結合が行われます。

プラグイン通信データ変更に伴う修正


複数の値のタグに対応した事に伴い、プラグインとの通信周りを大幅に見直しました。そのため、本バージョンより前にリリースされたバージョンのプラグインは使用する事ができなくなります。


検索画面のレイアウト変更


検索画面のレイアウトを変更し、検索ボタンを左側に移動させました。 


何故このような変更を加えたのかというと、リストに表示されるスクロールのつまみとの競合対策です。検索画面の内容が長くなると、画面の右側に素早くスクロールするための「つまみ」アイコンが表示されます。画面右端のタップは、このつまみの操作が優先されてしまうため、画面右端にあるボタンが押しにくくなるという問題がありました。
最近、使用する端末のOSをAndroid 6.0に変更したところ、つまみに反応するタップ範囲が拡大されたためか、右端ボタンが完全に押せなくなってしまいました。そのため、ボタンを全部左側に寄せるように変更しました。
従来の操作に慣れていた方には申し訳ありませんが、よろしくお願いします。


文字列検索でスペース区切りをAND検索に変更



検索画面のテキスト検索フォームにおいて、スペースで区切りがあるとAND検索となるようにしました(従来はただの部分一致検索でした)。


数値キーから再生番号を指定する昨日追加


物理キーボードを接続し、キーボードから数値を入力してEnterを押すと、対応する再生キュー番号のメディアを再生する機能を追加しました。入力は、すべての画面で有効です。
入力時、タイトル部分に入力文字が表示されます。Escを押すか、2秒経過すると元の表示に戻ります。

タイトルに表示される番号

Bluetoothレイテンシの初期値を0に変更


Medolyでは、Bluetooth機器で再生する場合にレイテンシを設定することで、メディア再生と歌詞の表示のズレを補正することができます。従来、このレイテンシの値は、220msが初期値にになっていました。この値は、SBCコーデックにおけるレイテンシの値に合わせてあります。
ところが最近、端末のOSをAndroid 6.0に変更したところ、内部で自動的にレイテンシが補正されている様子で、レイテンシを設定すると再生と歌詞の表示が逆にズレてしまう事象が発生しました。そのため、レイテンシの初期値を0に変更しました。

歌詞の文字サイズ初期値及び上限を変更


歌詞の文字サイズの初期値を24sp、最大値を50spに変更しました。タブレットで表示させることも想定した場合、従来の初期値と上限は少し小さいように感じたためです。

起動時にレジュームされない問題修正


起動時に再生位置が元に戻らない場合がある問題を 修正しました。

SDカード書き込み権限でエラーが発生する問題修正


SDカードの書き込み権限がエラーとなる場合があったため、権限取得の処理を一部変更しました。

その他修正


その他諸々のエラー等を修正しました。



Ver.2.8.1



2016-09-25 Ver. 2.8.1
- 端末によってループが正しく実行されない問題修正
- 通知の背景を修正



端末によってループが正しく実行されない問題修正


ループが正しく動作しない場合がある問題を修正しました。これは、とあるループ条件が成立しない場合に発生し、端末によって条件が成立しない場合があることを確認しました。そのため、条件を外してループが動作するようにしました。


通知の背景を修正 


通知背景が白くなってしまい、文字が読めなくなる問題を修正しました。
公開の少し前にSDKのバージョンアップをしたのですが、それが影響してしまったようです。
ちなみに、新しいAndroidは基本的に背景が白色なので、それに合わせた方が良いのでしょうが、その辺は今後のバージョンで対応します。




[追加] Ver.2.8.2


頻繁な修正で申し訳ありません…。


2016-09-27 Ver. 2.8.2
- 新規インストール時に各種権限を取得するように変更
- Android 4.4において、設定画面で落ちる問題修正
- 一部設定の変更で落ちる問題修正


新規インストール時に各種権限を取得するように変更





実は、Ver.2.8.0 のリリースにおいて、ビルドターゲットのSDKバージョンをうっかり変更してしまったのですが、その影響でAndroid 6.0以降において新しく追加された権限の取得処理を、新たに追加しなくてはいけなくなりました。
これは、いくつかの権限についてユーザの承認を得るというもので、起動時に権限を要求するダイアログが表示されるようになります。ちなみに、既にインストール済の状態でバージョンアップされた方はそのまま利用できるのですが、アプリを新規にインストールすると権限がクリアされてしまうため、権限が必要になります。権限の承認が拒否されると、そのままプログラムを終了します。
具体的な権限は、外部ストレージへの読み書きと、電話の状態へのアクセスの2つです。外部ストレージはメディアファイルの読み込みや、プレイリストファイルの書き出し等に必要となるため、本アプリには絶対に必要な権限です。電話の状態へのアクセスは、電話がかかってきた時に再生を停止する機能に使用するので範囲は限定的なのですが、別々に作るのが面倒くさいので、起動時に一括で要求しています。
ちなみに、 最初はSDKバージョンを元に戻そうと思ったのですが、一度新しいバージョンにしてアプリを登録してしまうと、ダウングレードはできないようで…。迂闊にバージョン番号なんて弄るものではないな、と思い知りました。まぁやってしまったものは仕方ない、という事で、Android 6.0から追加された新しい権限取得の処理を追加しました。
ちなみに、Android 6.0未満の機種には影響ありません。

Android 4.4において、設定画面で落ちる問題修正


Android 4.4(もしくは、それ以下)において、設定画面で落ちる問題が発生していたため、修正しました。
これは、複数選択リストの MultiSelectListPreference において、初期値
 ( defaultValue )を指定していなかったため、画面構築時にInflateException が発生してクラッシュするというものです。Android 5.0以降は問題ないようです。ダミーの空の初期値を設定して対応しています。

一部設定の変更で落ちる問題修正


これは、設定変更時に変更をプレイヤーに通知する処理が入ってる一部設定項目で問題が起こっていました。プレイヤーにIntentで変更を通知する際に、パッケージ名を指定していないと、「Service Intent must be explicit」というエラーと共にアプリが落ちるという事象です。
ちなみにこれは、SDKバージョンを不用意に変更してしまった影響です…。






Medoly Ver. 2.8.0, 2.8.1


Ver. 2.8.0



2016-08-22 Ver.2.8.0
- プラグイン通信データ変更に伴う修正
- 検索画面のレイアウト変更
- 文字列検索でスペース区切りをAND検索に変更
- 数値キーから再生番号を指定する昨日追加
- Bluetoothレイテンシの初期値を0に変更
- 歌詞の文字サイズ初期値及び上限を変更
- 起動時にレジュームされない問題修正
- SDカード書き込み権限でエラーが発生する問題修正
- その他修正



複数の値のタグに対応


メディアのタグは、一つのタグに複数の値を持つ場合があります。本バージョンで複数の値を持つタグに対応しました。この変更のため、内部的なデータ構造を大幅に見直しています。
対応とは、プロパティ情報への複数の値の表示、プラグインへのデータ送信等です。検索については、Android標準のデータベースを利用しているため、現状では残念ながら対応不可能です。
またこの変更に伴い、設定画面の[昨日]カテゴリに、以下の2項目が追加されています。

[プロパティの分割]
特定の文字列で分割し、プロパティを複数の値として扱います。対象の文字は「;」、「/」、「,」、「&」、改行の5種類です。

[プロパティの結合]
複数のプロパティを特定の文字列で結合します。対象の文字は分割と同じです。

「プロパティの分割」と「プロパティの結合」を両方してした場合は、値を分割した後に結合が行われます。

プラグイン通信データ変更に伴う修正


複数の値のタグに対応した事に伴い、プラグインとの通信周りを大幅に見直しました。そのため、本バージョンより前にリリースされたバージョンのプラグインは使用する事ができなくなります。


検索画面のレイアウト変更


検索画面のレイアウトを変更し、検索ボタンを左側に移動させました。 


何故このような変更を加えたのかというと、リストに表示されるスクロールのつまみとの競合対策です。検索画面の内容が長くなると、画面の右側に素早くスクロールするための「つまみ」アイコンが表示されます。画面右端のタップは、このつまみの操作が優先されてしまうため、画面右端にあるボタンが押しにくくなるという問題がありました。
最近、使用する端末のOSをAndroid 6.0に変更したところ、つまみに反応するタップ範囲が拡大されたためか、右端ボタンが完全に押せなくなってしまいました。そのため、ボタンを全部左側に寄せるように変更しました。
従来の操作に慣れていた方には申し訳ありませんが、よろしくお願いします。


文字列検索でスペース区切りをAND検索に変更



検索画面のテキスト検索フォームにおいて、スペースで区切りがあるとAND検索となるようにしました(従来はただの部分一致検索でした)。


数値キーから再生番号を指定する昨日追加


物理キーボードを接続し、キーボードから数値を入力してEnterを押すと、対応する再生キュー番号のメディアを再生する機能を追加しました。入力は、すべての画面で有効です。
入力時、タイトル部分に入力文字が表示されます。Escを押すか、2秒経過すると元の表示に戻ります。

タイトルに表示される番号

Bluetoothレイテンシの初期値を0に変更


Medolyでは、Bluetooth機器で再生する場合にレイテンシを設定することで、メディア再生と歌詞の表示のズレを補正することができます。従来、このレイテンシの値は、220msが初期値にになっていました。この値は、SBCコーデックにおけるレイテンシの値に合わせてあります。
ところが最近、端末のOSをAndroid 6.0に変更したところ、内部で自動的にレイテンシが補正されている様子で、レイテンシを設定すると再生と歌詞の表示が逆にズレてしまう事象が発生しました。そのため、レイテンシの初期値を0に変更しました。

歌詞の文字サイズ初期値及び上限を変更


歌詞の文字サイズの初期値を24sp、最大値を50spに変更しました。タブレットで表示させることも想定した場合、従来の初期値と上限は少し小さいように感じたためです。

起動時にレジュームされない問題修正


起動時に再生位置が元に戻らない場合がある問題を 修正しました。

SDカード書き込み権限でエラーが発生する問題修正


SDカードの書き込み権限がエラーとなる場合があったため、権限取得の処理を一部変更しました。

その他修正


その他諸々のエラー等を修正しました。



Ver.2.8.1



2016-09-25 Ver. 2.8.1
- 端末によってループが正しく実行されない問題修正
- 通知の背景を修正



端末によってループが正しく実行されない問題修正


ループが正しく動作しない場合がある問題を修正しました。これは、とあるループ条件が成立しない場合に発生し、端末によって条件が成立しない場合があることを確認しました。そのため、条件を外してループが動作するようにしました。


通知の背景を修正 


通知背景が白くなってしまい、文字が読めなくなる問題を修正しました。
公開の少し前にSDKのバージョンアップをしたのですが、それが影響してしまったようです。
ちなみに、新しいAndroidは基本的に背景が白色なので、それに合わせた方が良いのでしょうが、その辺は今後のバージョンで対応します。

2016-08-23

Medoly Ver. 2.7.5

久しぶりの更新です。仕事や生活やイース8が忙しくて少し開発から離れてしまっていたのですが、少し開発に時間を戻していきたいと思います。


2016-08-22 Ver.2.7.5
- 出力デバイスの設定画面変更
- 設定画面に説明を追加
- 設定が保存されない問題修正


出力デバイスの設定画面変更




出力デバイスダイアログからレイテンシの設定ボタンを削除し、デバイス別ダイアログを開くボタンを追加しました。 このダイアログでは、表示上のデバイス名変更、自動再生の抑止チェック、レイテンシの設定があります。

デバイス名の設定は現在のところ、出力デバイスリストの表示上の名前が変わるだけです。
レイテンシの設定は従来と同様、デバイス別の再生遅延を設定し、同期歌詞の表示誤差を補正します。(再生遅延その物が変わるわけではありません)
そして今回、新たに「自動再生を抑止」の設定を追加しました。世の中にある一部のBluetoothデバイスは、接続すると勝手に再生開始命令を送ってきます。これにチェックを入れることで、この再生命令を無視するようになります。この設定は、接続後最初に送られてくる再生命令を無視する動作をしますので、自動的な再生を行わないデバイスでここにチェックを入れると、最初の再生操作が無視されるのでご注意ください。(ただし、Android画面上からの再生操作はこの設定を無視します。)



設定画面に説明を追加


設定画面の各項目に説明を追加しました。何となく、分かりやすくしたつもりです。


設定が保存されない問題修正


各種設定が保存されない場合がある問題を修正しました。
これは、以前のバージョンアップで設定の保存方法を大幅に変更しており、その際に設定保存のタイミングを調整した結果、アプリが途中で中断した際に長時間設定が保存されない場合が発生していました。設定保存のタイミングを調整して、細かく設定が保存されるように変更しました。


2016-05-16

Medoly Ver. 2.7.0, 2.7.1

2016-05-09 Ver. 2.7.0
- パラメータ保存機能追加
- 設定の保存処理を全体的に変更
- 表示タブの画面保持ボタンを表示スタイルボタンに変更
- 検索画面でフォルダ階層を戻った際に先頭に戻らないように変更
- Bluetoothで再生時間が正しく表示されない問題修正
- 共有メディアの生成キュー追加でエラーとなる問題修正
- 非同期歌詞をループさせるとスクロールが追従しない問題修正
その他諸々


2016-05-10 Ver. 2.7.1
- Android 4.2以前の機種でエラーが発生する問題を修正しました
- プレイリストが存在しない場合のエラーを修正しました


Ver. 2.7.0


パラメータ保存機能追加


今回追加したこの機能は、現在の再生パラメータを保存し、次回再生時に同じパラメータを適用するための機能です。再生パラメータとは以下のものを指します。
  • ループ種別(ループ無し/単体ループ/区間ループ)
  • ループ回数
  • 区間ループ位置(サンプリング位置)
  • アプリ音量(0~1.0)
  • アルバムアート表示状態(ON/OFF)
  • 歌詞表示状態(ON/OFF)
  • 歌詞同期状態(ON/OFF)
  • 歌詞オフセット(ms)
  • 歌詞サイズ(sp)
  • 表示スタイル(レイアウト、外観)
  • プラグインイベント状態(ON/OFF)
パラメータ保存機能では、これらの状態を保存しておくことができます。具体的には、以下のような利用を想定しています。

  • 区間ループの位置を保存する。
  • 音量の大きい曲の音量を抑える(音量を高める設定は、現在のところできません…)
  • 同期歌詞のズレを調整する
  • 特定のフォルダの曲に対し、Last.fmへの通知を行わないようにする
[設定方法]

パラメータを保存する最小の手順は以下の通りです。
  1. 曲を選択
  2. プロパティタブメニューの「パラメータ保存」を選択
  3. 「対象パラメータ」の項目タップし、保存対象となるパラメータにチェックを入れる
  4.  「OK」ボタンを押す。


パラメータ保存ダイアログ

パラメータ保存ダイアログでは、保存対象パラメータの選択と、パラメータの適用条件を設定します。
「対象パラメータ」は、保存対象となるパラメータです。現在設定されている値が保存されます(この画面でパラメータを変更することはできません)。
「プロパティ条件」は、このパラメータを適用する条件となるパラメータの値です。ここに加えられた全ての条件に一致するメディアに対して、自動的にパラメータが適用されます。初期値では、現在選択されているメディアのフォルダとファイル名が入力されています。例えばここで「アルバム」プロパティを対象にすれば、そのアルバム全てに同じパラメータが適用されることになります。
「追加」ボタンで条件の追加、「削除」ボタンで条件の削除ができます。また、条件をタップするとダイアログから条件の編集を行うことができます。

プロパティ条件ダイアログ
プロパティ条件ダイアログからは、プロパティの条件を設定することができます。プロパティの種別と、その値を入力しします。「一致条件」は「部分一致」「前方一致」「後方一致」「完全一致」「正規表現」から選択できます(動作の違いは名称の通りなので、詳細は省略します。正規表現はJavaの動作と同一です)。「あいまい一致」は、文字列を補正してある程度の相違を吸収します。どの程度補正されるかの詳細はどこか別の場所で説明するかもしれません。「否定一致」の場合は、このプロパティ条件に一致しない場合に条件が成立するようになります。

なお、こうして保存されたパラメータは、メイン画面右上のメニューから「パラメータ」を選択すると一覧表示することができます。

パラメータ一覧ダイアログ


この一覧では、現在適用対象の保存パラメータがハイライト表示されます。パラメータは複数同時に適用されることはありません(今のところは)。このリストは上の方が優先されるため、同一の条件のパラメータが複数存在した場合、上の方が優先されます。リスト左側のつまみで順序を変更することができます。つまみを横方向に動かすと項目が削除されます。
項目をタップすると、適用するパラメータを変更することができます。「編集」ボタンを押すとダイアログが開き、パラメータの条件を変更することができます(チェック項目は変更できません) 。

[適用パラメータの状態]

パラメータが適用された状態では、適用中パラメータに関連するアイコンや文字列等やが緑色に変わります。例えば、「アルバムアート表示状態がON」の状態となるパラメータが適用されている場合、メイン画面のアイコンが緑色になります。

アルバムアート表示ONのパラメータ適用中
この緑色が、パラメータ適用中であることを示します。この状態でアルバムアートの表示状態を切り替えると、現在の状態が上書きされます(パラメータ適用状態が解除されます)。

そんな感じで、パラメータ機能を簡単に解説してみましたが、思ってた以上に複雑な機能になってしまいました。本来これは、区間ループの保存をするための機能のみを持たせる予定だったのですが、構想が膨らんでこんな過剰な機能になってしまいました。ただ、汎用性に優れている分、応用が利きやすく、例えば将来的にイコライザの機能を持たせた場合、「○○のジャンルではこの音、○○のアルバムではこの音の設定にする」という感じの使い方もできるはずです。
現状、同時に一つのパラメータ設定しか適用されないことは課題として認識しています。 複数同時に適用される場面も想定されるはずですが、その辺を作るのが大変だったので妥協しているところです。ユーザ様からの要望があれば、同時に複数適用する処理も入れるかもしれません。ただ、機能が複雑すぎて誰も使わなかったらどうしよう…と思ってるのが正直なところです。
あと、作るの凄く大変だったので、とんでもなく時間かかりました…。
 

設定の保存処理を全体的に変更


 パラメータ保存機能を追加したことに伴い、パラメータの保持方法を大幅に変更しています。というか、全くの別物になっています(おかげでとんでもなく時間が かかりましたが…)。従来の設定値を新しい保存方法に移行させるための変換処理が行われています。なお、設定のエクスポート/インポートにも対応していま すが、旧設定をインポートした際も同様の変換処理が行われるため、一応インポートは出来るはずです。ただ、あまり真面目に検証していないため、出来れば今 回のバージョンで設定を再度エクスポートしておいていただけると助かります。
 

表示タブの画面保持ボタンを表示スタイルボタンに変更


表示タブに初期バージョンからずっと鎮座していた「画面の点灯」切替えボタンですが、今回このボタンを表示スタイル設定ダイアログを表示するためのボタンに変更しました。理由は、「そもそもこれ独立したボタンにするほど頻繁に使わないよね」っていう至極真っ当な感覚です。
この画面点灯の設定は、表示スタイルダイアログの中に組み込んでしまいました(それに伴い、ダイアログの内容が少し変更されています)。

 

検索画面でフォルダ階層を戻った際に先頭に戻らないように変更


これはずっと気になっていたのですが、以前は検索画面のストレージタブで、フォルダの階層を上に上がった際に、一覧の先頭まで戻ってしまっていました。そのため、ファイルやフォルダが大量に存在している場合に「フォルダを開く→一旦上位フォルダに戻る」という操作を行うと、一々上に戻されてしまって非常に苦痛でした。
そのため、フォルダの上位階層に移動した場合は、移動前のフォルダが画面の中央の位置に来る座標までスクロールさせるようにしました。これで比較的操作しやすくなったと思います。


Bluetoothで再生時間が正しく表示されない問題修正


AVRCPで再生タイトル等を表示させる事の出来るBluetooth機器、具体的にはカーナビやAVアンプ等になりますが、これらにおいて音楽の再生時間が正しく追従しないという問題がありましたので、そのバグ修正です。
ちなみに、Bluetooth機器に表示される現在の再生時間は随時送信しているわけではなく、特定のタイミング(シーク時など)で再生時間を送信し、あとは機器側が勝手にカウントアップしていくようになっています。


共有メディアの生成キュー追加でエラーとなる問題修正


これはユーザ様からの報告です。
外部のアプリから共有されたメディアの再生キュー登録に失敗する問題がありました。これは、いつの間にか紛れ込んだバグによるものでした。


非同期歌詞をループさせるとスクロールが追従しない問題修正


非同期歌詞をループさせた際、ループ位置が先頭に戻らない問題があったため、修正しました。



Ver. 2.7.1



Android 4.2以前の機種でエラーが発生する問題を修正しました



今回のパラメータ機能の追加に伴い、内部的な処理を大きく見直しました。その際、データベース読込み処理にも手を加えたのですが、その変更の一つがちょっと不味かったため、Android 4.2以前のAndroidでDB読込ができなくなるという問題が発生していました。

原因を簡単に説明します。AndroidのAPIに引数として与えられたURIがどのURIに属するかを判定するための「UriMatcher」というクラスがあります。ここには事前にURIのパスを登録する必要があります。このパスの先頭に「/」は不要なのですが、Android 4.4以降だと先頭に「/」が入っても自動的に省いてくれているようです。ところがそれより前のAndroidでは、「/」が挿入されているとURIが一致しなくなり、URI不一致エラーとなってしまいました。
今回、開発でAndroid 4.4、5.1、6.0で確認はしていたのですが、それより前のAndroidでの動作を確認していなかったため、発見が遅れてしまいました。


プレイリストが存在しない場合のエラーを修正しました


プレイリストが存在しない場合に、再生キューメニューの「プレイリスト操作」を開こうとするとエラーメッセージが表示されていたため、修正しました。まぁ、修正しても空のダイアログが表示されるだけなのですが…。