Android 3.1 以降には、ユーザーが手動でアプリを少なくとも 1 回開くまで、ブロードキャスト レシーバーが登録されない新しいセキュリティ機能があることが判明しました。UI を開く必要のないサービスのみのアプリを構築しようとしていたため、インテント リスナーの試みがすべて機能しなくなりました。
スプラッシュ スクリーン アクティビティを修正したところ、すべてが期待どおりに機能するようになりました。私は現在、プレーヤー固有のインテントのリストを照合する作業を行っていますが、似たようなものを構築しようとしている人にとっては、com.android.music.playstatechanged が最良のスタートと思われます。これは、音楽が開始、一時停止、または再開されたときにデフォルト プレーヤー (Google Play ミュージック) によってトリガーされ、再生状態と一時停止状態を区別するためのブール値の「再生中」プロパティを含む追加データがバンドルされます。
基本的に、これは私が現在使用しているコア レシーバーです。楽しむ!
public class MainReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Start the service when music plays, stop the service when music ends.
if(intent.hasExtra("playing")) {
if(intent.getBooleanExtra("playing", false)) {
Intent service = new Intent(context, MainService.class);
context.startService(service);
} else {
Intent service = new Intent(context, MainService.class);
context.stopService(service);
}
}
}
}