Android 音楽アプリのシャッフルモード

Last edited on 2011/05/01 (日) - 15:16
音楽アプリの再生中画面

Android標準の音楽アプリにはシャッフル機能がありますが、オプションメニューには”すべてシャッフル”と”パーティーシャッフル”と2つあり、何が違うんだろうと思っていました。調べてみたところ、結論としてはランダムに再生するという点ではほぼ同じものです。

まずは Nexus OneのUser Guideを見てみます。再生画面のシャッフルボタンの説明では、次のように書かれています。

Touch to play the current playlist in shuffle mode (tracks are played in random order).
現在のプレイリストをシャッフルモードで(ランダムな順序で)再生する。

パーティーシャッフルの説明のところでは次のように書かれています。

When you turn on Party Shuffle, Music plays tracks from your microSD card in random order, until you turn Party Shuffle off.
パーティーシャッフルをONにすると、microSDのトラックをパーティーシャッフルがOFFになるまでランダムに再生します。

どっちも変わらないような気がします。よくわからないので、ソースコードを読みました。(ただし、AOSPではなくCyanogenMod の Music アプリです)

1. すべてシャッフル

DBからすべての音楽トラックデータを取得し、プレイリストを作成して、それをランダムに再生します。再生済みの曲のヒストリーを作っていて、1曲再生が終わるとまだ再生していない曲の中からランダムに選択して再生します。

2. パーティーシャッフル

DBからすべての音楽トラックデータを取得し、その中からランダムに数曲選んで短いプレイリストを作ります。プレイリストがなくなるとさらにランダムに数曲選んで追加することを繰り返します。プレイリストへの曲の追加時に、過去に再生したかどうか考慮していないので、microSDに入っている全トラックの数が少ないと同じ曲が選ばれることもあります。

3. 再生画面内のシャッフルモードトグルボタンを押したとき

現在のプレイリストをランダムに再生します。(トグルボタンなのでシャッフルモードON→OFFのときは通常再生に戻ります)

というようにほとんど同じ機能なのですが、それではパーティーシャッフルモードはなんのためにあるかというと………

パーティシャッフルモードは自動的に少しずつプレイリストを生成していくのですが、手動で曲をプレイリストに追加することもできるのです。つまり、「ねえ、この曲かけてくれない?」というリクエストに応えてトラックをプレイリストに挿入し、「OK、もうすぐかかるよ」という訳です。

上記で説明したことは、動作させながらプレイリストを参照するとわかりやすいです。現在のプレイリストを見るには、CM6の音楽アプリの場合は再生画面でジャケット画像をタッチです。