Android開発のこと

MOTOACTVでGoogle Musicを便利に使いたい

完全に自分専用アプリ

画面を見なくても Google Music の再生停止をハードキーである MUSIC ボタンでやろう!

ついでに長押ししたら次の曲に飛ぼう!みたいな。

起動時に Wi-Fi を ON にしてるのはおまけです。

前提条件

/system/usr/keylayout/G2-keypad.kl

key 387 MEDIA WAKE_DROPPED

key 387 MEDIA_PLAY_PAUSE WAKE_DROPPED

あと当然 Google Music アプリは入れといてください。GoogleServiceFramework も入れてアカウントの設定がされてないとネットワークからのダウンロードができなくて意味無いです。

MUSIC ボタンを押した時に発生する com.motorola.music.KEY_DOWN_TRIGGERED と長押しした時に発生する com.motorola.android.HEADSET_KEY_LONG_PRESS をとっつかまえて何とかしてやろうじゃないかというおはなし。

再生停止は android.intent.action.MEDIA_BUTTON を sendBroadcast してます。

ウィジェットが発行する com.android.music.musicservicecommand.togglepause をパクって送ってたんですが、MusicPlaybackService が起動してないと反応してくれないので…

一方次の曲に飛ぶのは com.android.music.musicservicecommand.next でやってます。

元々の仕様に合わせてダブルクリックしたら曲飛ばしとかやろうと思ってたんですが面倒くs

個人的にはポケットに入ったままで止めたり曲を飛ばしたりできるようになったので大満足ですw

apk ファイルのダウンロードはこちら

以下一応動いてるけどエラーチェックとかしてないソース

[xml]















[/xml]

[java]
package jp8796.motoactv.musicbutton;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.KeyEvent;

public class MediaButtonIntentReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equalsIgnoreCase(“android.intent.action.BOOT_COMPLETED”)){
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
}
if(action.equalsIgnoreCase(“com.motorola.android.HEADSET_KEY_LONG_PRESS”)){
Intent next = new Intent(“com.android.music.musicservicecommand.next”);
next.putExtra(“cmd”, “next”);
context.sendBroadcast(next);
}else if(action.equalsIgnoreCase(“com.motorola.music.KEY_DOWN_TRIGGERED”)){
Intent startstop = new Intent(“android.intent.action.MEDIA_BUTTON”);
Bundle b = new Bundle();
KeyEvent ke = new KeyEvent(0,0×55);
b.putParcelable(“android.intent.extra.KEY_EVENT”, ke);
startstop.putExtras(b);
context.sendBroadcast(startstop);
/* Intent startstop = new Intent(“com.android.music.musicservicecommand.togglepause”);
startstop.putExtra(“cmd”, “togglepause”);
context.sendBroadcast(startstop);
*/
}
}

}
[/java]

なお、/system/app/G2Music.apk は適当に葬り去っといてください。

コメント

  1. masaya より:

    ようやく届きました。
    今週末は遊べそう。
    いろいろ参考にさせていただきます。

  2. Ken より:

    こんにちは。いつも参考にさせて頂いております。
    こちらの記事の「MOTOACTVMusicButton.apk」のリンクが切れております。
    もし可能でしたら再アップを是非お願い致します。

タイトルとURLをコピーしました