samsung pantalla musica for bloqueo android widget broadcastreceiver spotify

pantalla - Interceptar/Obtener datos enviados a Spotify Widget en Android



widget spotify wordpress (0)

Hola y Feliz Año Nuevo.

Tengo Spotify y quiero usar el título y el nombre de la canción en mi aplicación. (El objetivo final sería exportarlo a mi reloj de Liveview, para poder configurarlo con Spotify)

Como hay un widget de Spotify, simplemente me gustaría agregar un Broadcast Recevier para enviar los datos al widget.

Así que agrego un receptor Broadcast, y por lo que entiendo el concepto, esto debería ser suficiente y entonces debería ser capaz de obtener los datos que Spotify envía al widget.

De acuerdo con la Documentación, puede hacer todo con un Receptor de radiodifusión que podría hacer con un Administrador de widgets, por lo que creo que un Receptor de radiodifusión está bien.

Hice una entrada de registro de depuración y un brindis tan pronto como se llama a on_receive, por lo que debe haber al menos algo .

De los mensajes de error sé que si no tienes el widget, Spotify siempre intenta enviarle los datos, así que estoy bastante seguro de que el error está de mi parte.

Mi código como sigue:

(acortado por brevedad, más tarde como servicio o algo así, por ahora) La vista de texto mostrará más adelante el Título

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // für den Song IntentFilter iF = new IntentFilter(); iF.addCategory("ComponentInfo"); iF.addCategory("com.spotify.mobile.android.service.SpotifyIntentService"); iF.addCategory("com.spotify.mobile.android.service.SpotifyService"); iF.addAction("com.spotify.mobile.android.ui.widget.SpotifyWidget"); iF.addAction("ComponentInfo"); iF.addAction("com.spotify"); iF.addAction("com.spotify.mobile.android.service.SpotifyIntentService"); iF.addAction("com.spotify.mobile.android.service.SpotifyService"); iF.addAction("com.android.music.metachanged"); iF.addAction("com.android.music.playstatechanged"); iF.addAction("com.android.music.playbackcomplete"); iF.addAction("com.android.music.queuechanged"); iF.addAction("com.spotify.mobile.android.ui"); registerReceiver(mReceiver, iF); // albumtext = (TextView) findViewById(R.id.albumText); } private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.d("onReceive launched", "kekse"); String action = intent.getAction(); String cmd = intent.getStringExtra("command"); String com = intent.getStringExtra("ComponentInfo"); Log.d("mIntentReceiver.onReceive ", action + " / " + cmd+ " / "+ com); String artist = intent.getStringExtra("artist"); String album = intent.getStringExtra("album"); String track = intent.getStringExtra("track"); Log.d("Music",artist+":"+album+":"+track); Toast.makeText(context, "Command : "+cmd+"/n Artist : "+artist+" Album :"+album+"Track : "+track+" " , Toast.LENGTH_SHORT).show(); } };

Para completitud, aquí mi mi Manifiesto-Archivo

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.KarlheinzMeier.SpotifyController" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name="de.KarlheinzMeier.SpotifyControllerActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.ComponentInfo" /> </intent-filter> <receiver android:name="com.spotify.mobile.android.ui.widget.SpotifyWidget" android:label="Kekse"> <intent-filter> <action android:name="com.spotify.mobile.android.service.SpotifyService" /> <action android:name="com.spotify.mobile.android.service.SpotifyIntentService" /> </intent-filter> </receiver> </activity> </application> </manifest>

Saludos cordiales desde Alemania,

Karlheinz

PD: Sé que tan pronto como cambie el formato de datos interno, mi aplicación se romperá, ya que es solo para uso privado, no me importa, así que por favor no hablen de eso . Si hubiera un APi, lo tomaría, ya que no hay ninguno .....