Android Autoのはじめ方
Yahoo! JAPAN 黒帯シリーズ 第3回 ~ 「Android技術黒帯」による車載用Androidプラットフォームの解説
ダウンロード MediaPlayerSample.zip(サンプルコード) (569.0 KB)
ダウンロード MessageSample.zip(サンプルコード) (125.1 KB)
ダウンロード バイナリファイル一式 (766.7 KB)
MediaSession.Callbackの作成
MediaSession.Callbackは、再生ボタンなどのボタンが押された時や、MediaItem.FLAG_PLAYABLEのフラグが付いたMediaItemが選択された時などのコールバックを受け取り、処理するクラスです。
/**
* ユーザーが特定の楽曲を指定した場合に呼ばれます。
*/
public void onPlayFromMediaId(String mediaId, Bundle extras) {
int index = -1;
final List<MediaSession.QueueItem> queue = mSession.getController().getQueue();
final int size = queue.size();
MediaSession.QueueItem queueItem = null;
for(int i = 0; i < size; i++) {
MediaSession.QueueItem item = queue.get(i);
if (mediaId.equals(item.getDescription().getMediaId())) {
index = i;
queueItem = item;
break;
}
}
if (queueItem != null) {
play(queueItem);
mPlayQueueIndex = index;
}
}
/**
* 楽曲を再生する場合に呼ばれます
* 一時停止からの復帰時にも呼ばれます。
*/
public void onPlay() {
PlaybackState state = mSession.getController().getPlaybackState();
if (state.getState() == PlaybackState.STATE_PAUSED) {
resume();
} else {
playFromQueue();
}
}
/**
* 楽曲が一時停止された場合に呼ばれます
*/
public void onPause() {
long position = 0L;
if (mMediaPlayer != null) {
mMediaPlayer.pause();
position = mMediaPlayer.getCurrentPosition();
}
setPlaybackState(PlaybackState.STATE_PAUSED, position, 0f);
}
/**
* 楽曲が停止された場合に呼ばれます
*/
public void onStop() {
if (mMediaPlayer != null) mMediaPlayer.reset();
setPlaybackState(PlaybackState.STATE_STOPPED, 0L, 0f);
}
/**
* 次の曲に進むボタンが押された場合に呼ばれます
*/
@Override
public void onSkipToNext() {
mPlayQueueIndex++;
if (mPlayQueueIndex >= getQueueSize()) {
mPlayQueueIndex = 0;
}
playFromQueue();
}
/**
* 前の曲に戻るボタンが押された場合に呼ばれます
*/
@Override
public void onSkipToPrevious() {
mPlayQueueIndex--;
if (mPlayQueueIndex < 0) {
mPlayQueueIndex = 0;
}
playFromQueue();
}
/**
* 楽曲を演奏し終えた際に呼ばれます。
* @param mp MediaPlayer
*/
@Override
public void onCompletion(MediaPlayer mp) {
// 今の楽曲の再生が終わりました。
if (mPlayQueueIndex < getQueueSize() -1) {
// キューが残っている場合は、次の楽曲を再生します
mPlayQueueIndex++;
playFromQueue();
} else {
// キューが残っていない場合は、停止します
mPlayQueueIndex = 0;
setPlaybackState(PlaybackState.STATE_STOPPED, 0L, 0f);
}
}
/**
* 楽曲を再生する準備が整った時に呼ばれます。
* @param mp MediaPlayer
*/
@Override
public void onPrepared(MediaPlayer mp) {
// 再生の準備が整ったので、実際に再生します。
mp.start();
setPlaybackState(PlaybackState.STATE_PLAYING, 0L, 1.0f);
}
動作を確認する
では、実際に動かしてみましょう。テストするためには、Android Auto用のシミュレータを端末にインストールする必要があります。シミュレータは、SDK Managerを通じて配布されています。
SDK Managerからダウンロードしたあとは、sdk/extras/google/simulators/に音楽再生アプリ用のシミュレータ(media-browser-simulator.apk)と、 メッセージ系アプリ用のシミュレータ(messaging-simulator.apk)が置かれますので、インストールしましょう。
adb install path/to/sdk/extras/google/simulators/media-browser-simulator.apk
シミュレータアプリを起動すると、このように表示されます。
ナビゲーションドロワーを開いて、Google Playミュージックから、作成したアプリを選択しましょう。このように表示され、選択していくと、音楽が再生されます。
この記事は参考になりましたか?
- Yahoo! JAPAN 黒帯シリーズ連載記事一覧
-
- ITエンジニアがUXデザインを実践するコツと心構え
- CrosswalkとMeteor.jsでチャットアプリを作成してみよう
- Android Autoのはじめ方
- この記事の著者
-
森 洋之(ヤフー株式会社)(モリ ヒロユキ)
ヤフー株式会社 ヤフオク!カンパニー開発本部 サービス開発部 黒帯 Android 技術1982年広島県生まれ。Androidアプリの個人開発などを経て、2012年ヤフー株式会社入社。「ヤフオク!」などのAndroidアプリ開発に携わる。2014年10月にAndroid技術の分野で黒帯に認定される。...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
