2014-09-27

総ダウンロード数が500を越えた

Medolyは現在の所、総ダウンロード数が528、総インストール数が151。



アプリ情報




インストール数



総ダウンロード数

ちなみに、総ダウンロード数が500を越えると、Google Playに表示されるアプリの「インストール」項目が100~500 → 500~1000に切り替わるので、記念してここで書いてみた次第。

Google Play 情報


まぁ、ダウンロード数はさておき、これからものんびり作っていきます。

Medoly Ver. 1.6.5, 1.6.6, 1.6.7

ここ最近の変更について解説

2014-09-22 Ver. 1.6.5

- ギャップレス再生対応 (Android 4.1 以降)
- メイン画面点灯の設定追加(デフォルトで再生時のみ点灯とする)
- オーディオフォーカス処理の設定追加
- 曲戻し時に再生キューを未再生状態とする(設定で切換可)
- 本バージョンより、 android.permission.WAKE_LOCK パーミッションが追加されています

ギャップレス再生対応 (Android 4.1 以降)

このバージョンから、ギャップレス再生に対応しました。ライブ音源収録CD等の、連続した音楽がトラックで分割されている曲について、切れ目無く再生することができます。対応はAndroid 4.1以降となります。ただし、端末によっては対応されていない場合があります。AndroidのMediaPlayer標準のギャップレス再生方式を使用していますので、他のアプリでギャップレス再生できなければ、本アプリでも出来ないと思います、多分。
ギャップレス再生に対応するに当たり、内部の処理をかなり大きく見直しています。今までは、曲の切換をした際にMediaPlayerオブジェクトに対してファイルをセットし直すという処理を行っていました。今回の変更では、現在再生しているMediaPlayerオブジェクトに加え、次の曲をセットしたMediaPlayerオブジェクトの2種類を用意し、曲の切換時にMediaPlayerオブジェクトを入れ替えるという処理を行っています(入れ替えた時に、更に次のMediaPlayerオブジェクトを作成しています)。
これは、ギャップレス再生に対応する上で必要な変更なのですが、この結果として内部の処理を大幅に見直す必要がありました。
そんなわけで、かなり入念に確認をしたつもりなのですが、今回の変更で問題が発生する可能性は高いです。何かあれば、ご報告頂けると幸いです。


テストに使ってた曲


メイン画面点灯の設定追加(デフォルトで再生時のみ点灯とする)

今まで、メイン画面の点灯にチェックを入れると、メイン画面を表示している時は常に画面が点灯する(消灯しない)動作となっていましたが、これを設定画面で「常に点灯」「再生中のみ点灯」「歌詞表示中のみ点灯」「歌詞再生中のみ点灯」という4種類から選択できるようにしました。デフォルトは「再生中のみ点灯」となります。
これは、点灯状態で携帯を放置すると画面が表示されたままバッテリーを大きく消耗してしまうためです。これにより、電池が尽きてしまう状況に何度か遭遇したため、再生中のみ点灯するオプションを追加した次第。

オーディオフォーカス処理の設定追加

設定画面に、オーディオフォーカス(音声フォーカス)についてのオプションを追加しました(これに伴い、一部設定を削除しました)。オーディオフォーカスとは、アプリが音声についての各種操作を受け付けるために必要な設定です。これは、Android上で動作する何れか一つのアプリが持っており、アプリがオーディオフォーカスを取得すると、別のアプリのオーディオフォーカスが外れる、という動作をします。リモコンのボタンや、ロック画面のコントロールを受け付けるのは、オーディオフォーカスを持つアプリとなります。
今回、本アプリがオーディオフォーカスを取得するタイミングと、オーディオフォーカスが外れた場合の動作についての設定を追加しました。
オーディオフォーカスを取得するタイミングは、「取得しない」「アプリ起動時」「再生開始時」「アプリ起動時&再生開始時」の4種類から選択します。デフォルトは「アプリ起動時」です。「取得しない」とすると、オーディオフォーカスを取得しないためリモコン関係の設定は無効になります。「アプリ起動」とすると、アプリを起動した時にオーディオフォーカスを取得しますが、音楽再生中に別のアプリにフォーカスを奪われると、アプリを再起動するまでリモコン操作を受け付けなくなります。
オーディオフォーカスが外れる場合、一時的に外れる場合と、永続的に外れる場合があり、それぞれについての動作を設定できます。動作は、「再生を停止する」「音量を下げる」「何もしない」の3種類から選択します。それぞれ、メッセージを表示することができます。

曲戻し時に再生キューを未再生状態とする(設定で切換可)

本アプリは、曲を再生すると曲が「再生済」状態となります。従来はこの状態から曲戻しをすると、再生済状態のままとなっていました。今回の変更では、曲戻しをすると未再生状態に戻されます。
この理由は、一度「曲戻し」をした後に「曲送り」をすると、再生済みの曲がスキップされるため、「曲戻し」前の曲には戻る事ができなかったためです。聞きたい曲を探して曲送りを連打する→行きすぎたので曲戻しをする→やっぱり行きすぎた先の曲も聞きたい、という事がしょっちゅうあったので、このような動作に変更しました。


本バージョンより、 android.permission.WAKE_LOCK パーミッションが追加されています

今まで、MediaPlayerオブジェクトに setWakeModeでWakeModeを設定していなかったのですが、今回、PowerManager.PARTIAL_WAKE_LOCK を設定するようにしました。この変更に伴い、android.permission.WAKE_LOCKパーミッションが必要となっています。
正直、これの効果はよく分かっていません。ただ、これが無いと音楽再生中にアプリが中断してしまうことがあるようです(私の環境では発生していないのですが)。再生を維持させるための設定のようなのですが、効果を確認する方法がわかりません。まぁ、おまじないみたいなものと考えています。


2014-09-24 Ver. 1.6.6

- リモート操作が復帰しない場合がある問題修正
- 曲切換時に再生キューがスクロールしない問題修正
- 終了時にメディア状態が保存されない問題修正
- 設定文言一部修正


リモート操作が復帰しない場合がある問題修正

音声フォーカスの取得処理がおかしかったバグの修正です。

曲切換時に再生キューがスクロールしない問題修正

曲が切り替わった際に、再生キューの自動スクロールをしてもスクロールが発生しないバグの修正。ギャップレス再生の対応に伴い、処理を入れ忘れました。

終了時にメディア状態が保存されない問題修正

メニューの「終了」から終了させた場合、メディアの再生位置等が保存されない問題があったので修正。これは既存バグ。

設定文言一部修正    

設定画面の文言を一部修正しています。


2014-09-26 Ver. 1.6.7

- 単体再生時の曲送り・曲戻し動作を修正


単体再生時の曲送り・曲戻し動作を修正

単体再生時、曲送りを押した際に次メディアがあっても「メディアがありません」と言われてしまう問題修正。ギャップレス再生対応に伴うバグです。

2014-09-16

再生履歴の日付表示について

再生履歴に表示される「x日前」という日付表示について、言い訳っぽい話。

再生履歴の一覧は、日付毎に見出しがつきます。2日前なら「2日前」、1週間以上前なら「x月x日」という日付で表現されます。
ところが、本日再生分と1日前再生分のタイトルは、恐らくAndroidのバージョンによって変わってきます。 どこから変わってくるのかよく分かりませんが、Android 4.4 (CyanogenMod 11)では、「今日」「昨日」と表示され、Android 4.1 (SOL22)、Android 4.0.4 (ISW13HT) の場合は、「0日前」「1日前」と表示されてしまいます。
これは、DateUtilsのgetRelativeTimeSpanStringメソッドの挙動です。「今日」「昨日」と表示されるのが、本来正しい表示かと思います。とりあえず、バージョンや端末によって違ってくるかと思いますが、「0日前」と表示されたところで動作に影響があるわけではないので、この辺の表示はとりあえずこのままの方向で。



SOL22 (Android 4.1)

CyanogenMod11 (Android 4.4)

2014-09-14

Medoly Ver. 1.6.0, 1.6.1, 1.6.2


Ver. 1.6.0 変更履歴


2014-08-07 Ver. 1.6.0
- ロック画面コントロール追加 (設定でON/OFF切換)
- 通知バーからコントロール可能に変更
- 再生履歴のディスク番号が正しく表示されない問題修正
- 再生履歴が正しくチェックされない問題修正


ロック画面コントロール追加 (設定でON/OFF切換)


ロック画面へのコントロールを追加しまいた。Android 4.0以降の対応となります。
設定画面でON/OFFできます。ロック画面コントロールのデザインはこちらからは制御できず、端末の機能に依存します。「ロック画面をこうしたい」という場合は、端末メーカーまでご要望をお伝え頂ければ…。




通知バーからコントロール可能に変更

シンプルな通知バーだったものを、コントロール可能な通知バーに変更しました。Android 4.0以降の対応となります。



再生履歴のディスク番号が正しく表示されない問題修正

再生履歴のトラック番号が正しく表示されなかった問題を修正しました。昔からある潜在的な問題でした。

再生履歴が正しくチェックされない問題修正

チェック項目の表示処理が間違っていました。



Ver. 1.6.1 変更履歴

2014-08-07 Ver. 1.6.1
- 通知バーで文字が重なる問題修正

通知バーで文字が重なる問題修正

通知バーのコントロールを作成した際、レイアウトの問題で文字が長いと文字同士が重なる問題があったため、修正しました。

Ver. 1.6.2 変更履歴

2014-08-07 Ver. 1.6.2
- 歌詞のスクロール処理を修正

歌詞のスクロール処理を修正

歌詞が正しくスクロールされない問題を修正しました。

Medoly Ver. 1.5.5, 1.5.6, 1.5.7, 1.5.8


Ver. 1.5.5 変更履歴

2014-08-01 Ver. 1.5.5
- メイン画面拡大機能追加
- ヘッドセットボタンの複数回押しによるメディア切換機能追加
- 歌詞の行末尾にタイムタグがある場合のアクティブ化処理を変更
- 共有されたAndroid DB未登録メディアを再生キュー登録可能に変更
- アルバムアート背景を白に設定できなくなっていた問題修正
- 再生履歴のスクロールで落ちる場合がある問題修正
- 再生履歴にトラック番号表示するよう修正
- サムネイル読込み処理修正
- アプリ起動時に再生キューが現在メディアにスクロールしない問題修正


メイン画面拡大機能追加

表示タブのメニューに「メイン画面の拡大」項目を追加しました。メイン画面下部のコントロール領域と、Androidの通知バーを非表示にします。とにかく表示領域だけを大きく取りたい用途向けです。どのような用途を想定しているかと言うと、歌詞やアルバムアートだけを表示させたり、HDMI等で外部出力した際に、操作部分を隠して表示部分だけを大きくしたい場合等です。
まぁ、思いつきで追加した機能なので、もう少し色々検討するかもしれません。こういう事もできますよ、という実験みたいなものなので。


ヘッドセットボタンの複数回押しによるメディア切換機能追加

今までもヘッドセットのボタンを押すと、再生・停止を切り替えることができましたが、2回押しで次の曲、3回押しで前の曲に切り替える機能を追加しました。
iPhoneのように、「2回押し+押しっぱなし」で早送り、「3回押し+押しっぱなし」で巻き戻し…という機能はありません。ボタンを押しっぱなしにするとAndroid標準の音声検索が起動してしまうため、実装することができませんでした。キーを横取りできるかもしれませんが、そこまで頑張る必要はないかなぁ…と。
この機能を利用するには、設定画面よりONにします。複数回押しを検出させるために、ボタンを押した際の反応を少し遅らせていますので、使わない場合はOFFの方が良いでしょう。



歌詞の行末尾にタイムタグがある場合のアクティブ化処理を変更

歌詞の表示について。細かい話かもしれないけど、こだわる人には多分重要な変更。
タイムタグが設定された同期歌詞において、1行の末尾にタイムタグがある場合。例えば以下のような感じ。

[00:00:00]
[00:10:00]あ[00:11:00]い[00:12:00]う[00:13:00]え[00:14:00]お[00:15:00]
[00:20:00]

この場合、今までは開始10秒で2行目の歌詞がアクティブ状態になり、20秒で3行目がアクティブになるまで、2行目がアクティブ状態となっていました。
今回の変更で、 15秒で2行目が非アクティブ状態となり、3行目がアクティブになる20秒まではアクティブ行が存在しない状態になります。
これにより、ボーカルの切れ目等を表現できるようになります。

 

共有されたAndroid DB未登録メディアを再生キュー登録可能に変更

今までは、Android DBに登録された曲しか再生することができなかったのですが、未登録曲も再生できるようになりました。未登録曲は、他のアプリから本アプリに対して「共有」させることで再生キューに登録され、再生できるようになります。ただし、この曲はプレイリストに登録することはできません。Androidのプレイリスト仕様上不可能です。一応、独自プレイリストも作れるようにしてはあるので、時間がある時にでも実装してみます。


アルバムアート背景を白に設定できなくなっていた問題修正

アルバムアートの背景は白・黒で切り替えられるようになっていますが、白くできなくなっていたので修正しました。ボタンの背景画像を弄った際に誤って修正していました。






再生履歴のスクロールで落ちる場合がある問題修正

再生履歴のリストについての問題です。サムネイルの取得に失敗していました。


再生履歴にトラック番号表示するよう修正

再生履歴のアルバム名にトラック番号を表示するようにしました。


サムネイル読込み処理修正

サムネイル読込み処理を修正しました…が、これは後のバージョンで再度修正されています。


アプリ起動時に再生キューが現在メディアにスクロールしない問題修正

アプリ起動時に、再生キューがスクロールしない問題を修正…したつもりが、あまり修正されていません。調査中です。


Ver. 1.5.6 変更履歴

2014-08-02 Ver. 1.5.6
- サムネイル表示にアニメーション追加
- 再生履歴の表示が遅くなる問題修正
- 余分なスクロール処理を省略するように修正


サムネイル表示にアニメーション追加

サムネイル表示時に、短時間のフェードインアニメーションを追加しています。
サムネイル表示の際に、キャッシュから取得する場合と、アルバムアートから取得する場合があります。この2パターンの取得は当然表示までの時間差があります。スクロールしていった場合、キャッシュ画像は画面に入った段階で表示済みになりますが、画像は一旦サムネイルに落とし込むため、表示に時間がかかります。そのため、表示タイミングに差が生まれて違和感がありました。そのため、一律で短時間のフェードインアニメーションを追加することで差異を少なくして、違和感を緩和させています。
…この違和感は、私だけかもしれません。


再生履歴の表示が遅くなる問題修正


再生履歴ダイアログにリストを表示した場合、サムネイルが1枚読込まれる度に画面全体のレイアウトが再読込され、全ての表示項目にgetViewメソッドが呼ばれ、表示が非常に遅くなっていました。これはリストの高さを固定していないことで発生する事象です。

参考: [Android] ListViewのlayoutをwrap_contentで指定しない | Developers.IO

通常のActivity上で行う分には発生しにくいと思いますが、ダイアログに表示した場合、高さにmatch_parentを指定するだけではダメで、ダイアログに表示するビューの高さを固定しないと割と簡単に発生します。 これの原因を突き止めるのは割と苦労しました…。



余分なスクロール処理を省略するように修正

スクロール処理が複数回発生していたポイントがあるので、それを修正しました。



Ver. 1.5.7 変更履歴

2014-08-03 Ver. 1.5.7
- サムネイルの更新処理を修正
- 再生履歴ダイアログの末尾が見えない問題修正
- シャッフル再生において正しくシャッフルされていなかった問題修正

サムネイルの更新処理を修正

サムネイルの取得・更新処理を修正しました。バグ修正です。


再生履歴ダイアログの末尾が見えない問題修正

Ver.1.5.6でダイアログの高さを固定しましたが、固定した高さがおかしく、最後の行が途中で切れてしまう問題があったので、固定の高さを修正しました。

シャッフル再生において正しくシャッフルされていなかった問題修正


シャッフルの処理が、ずっと処理を間違ってました。再生キューをクリアせず、曲の追加・削除を繰り返すとシャッフルがどんどんズレていくという問題があったため、修正しました。


Ver. 1.5.8 変更履歴


2014-08-03 Ver. 1.5.8

- リストのサムネイル読込み時に落ちる問題修正


リストのサムネイル読込み時に落ちる問題修正

タイトルの通り。バグ修正です。

Medoly ver. 1.5.0

1.5.0という、ちょっと節目っぽいバージョンだったので、この時は結構更新を頑張りました。

変更内容



2014-07-19 Ver. 1.5.0
- 再生履歴機能追加
- タブメニューのデザイン変更
- 再生順メニューのデザイン及び挙動変更
- 通常再生/シャッフル再生切換時の処理を高速化
- タブタップ時の色替え追加
- ハードウェアキーの早送り・巻き戻し対応
- サムネイルの非表示設定追加
- 設定項目一部修正
- 内蔵アルバムアートが共有できなくなっていた問題修正
- キューを削除した場合に落ちる場合がある問題修正
- 歌詞の先頭空白行でスクロールしない問題修正
- ボタン背景やアイコンデザインをいくつか修正
- 内部の処理をいくつか修正



再生履歴機能追加

再生キュータブのメニューから呼び出します。再生済み曲のリストを表示し、再生順と逆順で表示されます。
一瞬でも再生すると追加されます。再生履歴上に存在する曲を再生した場合、過去の履歴は削除され、新たに先頭に追加されます。 
再生履歴の曲を選択し、「開く」ボタンを押すと再生キューに追加します。再生キューに曲が存在する場合は、再生キューの末尾に追加するか、再生キューをクリアして新たに追加するかの確認ダイアログが表示されます。(プレイリストを開く場合と同様)
設定画面で、保存履歴数を0~999で変更を行うことができます。多くすると、リストが開くまで時間がかかるかもしれません。 0にすると、タブメニューの項目自体表示されなくなります。
とりあえず簡易的なもので、それほど高機能なものではありません。




タブメニューのデザイン変更

タブのメニューを丸みを帯びた吹き出しのようなデザインに変更しました。機能的な変更はありません。今まではAndroid標準の「PopupMenu」というクラスを利用していたのですが、これは表示位置やデザインの調整ができないため、メニューが下に表示されてしまう等の問題がありました。これを「PopupWindow」クラスに変更することで、表示位置を調整できるようにすると共に、メニューを自由にデザインできるように修正しました。 (逆に自分で色々作り込まないといけなくなるので、ちょっと面倒でした。)


再生順メニューのデザイン及び挙動変更

再生順メニューも、タブメニュー同様に変更しました。また、ここのメニューはチェックを切り替えてもメニューが閉じません。閉じるには、枠外をタップします。この挙動の変更は、再生順「通常」・再生完了「停止」から、再生順「単体」・再生完了「リピート」に切り替えたいと思う場合、複数のチェック切換が必要になるため、一々ポップアップメニューが閉じられてしまうと作業が繁雑になってしまうためです。

通常再生/シャッフル再生切換時の処理を高速化

本アプリは、曲の再生順を全て自前で制御しています。
そのため、再生順の「通常」と「シャッフル」を切り替えるとDB上の再生キューの再生シーケンス番号を更新する処理が走ります。 この時の処理を変更(無駄な処理を排除)して、更新を高速化しました。
再生キューに多数の曲が登録されていると、流石に処理が一瞬止まってしまうのはご了承ください。(もしかしたら改善策はあるかもしれません。)



タブタップ時の色替え追加

メイン画面のタブをタップした際に、タブをハイライトするようにしました。操作に対する視覚的なフィードバックを与えるという、UIの改善です。

ハードウェアキーの早送り・巻き戻し対応

早送り・巻き戻しのハードウェアキー(リモコンのキー)に対応しました。
…対応してるはずです。「はず」というのは、早送り・巻き戻しのボタンを持ってるリモコンを持ち合わせていないので、テストしていないためです。 早送り・巻き戻しを押した時と同様の処理をしているので、動くはずです。…理論上は。

サムネイルの非表示設定追加

サムネイルを非表示に出来るようにしました。設定画面から変更します。設定を変更すると、再生キュー、検索画面、再生履歴のサムネイルを非表示にします。非表示にすると、スクロールが高速になります。もちろん、サムネイルが表示されなくなるので、曲を探す際の視認性は悪くなります。何はともあれ動作速度が欲しい人向け。

設定項目一部修正

設定項目を一部見直しました。
細かい内容は忘れました…。

内蔵アルバムアートが共有できなくなっていた問題修正

プロパティタブから内蔵アルバムアートを「共有」できるようにしたつもりできたが、出来ていませんでした。バグ修正です。

キューを削除した場合に落ちる場合がある問題修正

バグ修正です。

歌詞の先頭空白行でスクロールしない問題修正

同期歌詞で歌詞の先頭が空白だった場合、初期位置が先頭に来ない問題があったため、修正しました。

ボタン背景やアイコンデザインをいくつか修正

歌詞・アルバムアート表示タブに表示されるボタンの背景の修正です。
このボタンは元々曰く付きで、Androidでデフォルトで用意されている「Holo」というテーマ標準のボタンは、透明度が高すぎて単純に配置しただけでは背景のアルバムアート画像が透けすぎてボタンが見えにくいという難点がありました。これを変更する方法が分からず、ボタンの後ろにもう1枚オブジェクトを重ねて不透明化するという荒技をやっていました。
…が、いい加減何とかしようと思って調べたもののやっぱり分からない…というか、多分設定から変更するような方法は無いと思うので、 ボタン背景画像の差し替えを行いました。
以下のサイトから、Holoと同様のイメージを生成できます。




内部の処理をいくつか修正

細々したバグや挙動の修正です。
何やったかは忘れましたが、変更履歴に書いたので、多分何かやったのでしょう。


Medoly ver. 1.4.7

ちょっと時間が出来たので、凄い久しぶりに過去の更新内容詳細についてまとめていきたいと思います…。

変更内容


2014-07-01 Ver. 1.4.7
- ウィジェットに再生アイコンを表示するよう変更
- 画像読込み処理修正
- 検索画面の状態保存処理一部修正
- 再生中の曲情報が更新されない場合がある問題修正


ウィジェットに再生アイコンを表示するよう変更

これ。



画像読込み処理修正

画像の読込み処理を直して、大きな画像を読込んだ時に余分なメモリを消費しないようにしました。

検索画面の状態保存処理一部修正

検索画面を再表示した際に、閉じる前の状態に戻す処理が一部おかしかったので修正。

再生中の曲情報が更新されない場合がある問題修正

タイトルの通り。バグの修正です。