- Forum-Beiträge: 86
18.01.2020, 02:11:07 via Website
18.01.2020 02:11:07 via Website
Hallo zusammen,
ich möchte mit ein BroadcastReceiver die Information von der Spotify auslesen.
Nun wird kein Wert an die MainActivity übertragen, somit bleibt das Textview leer.
Der Code in der BroadcastSpotify.java ist von Spotify selber
BroadcastSpotify.java
public class BroadcastSpotify extends BroadcastReceiver {
static final class BroadcastTypes {
static final String SPOTIFY_PACKAGE = "com.spotify.music";
static final String PLAYBACK_STATE_CHANGED = SPOTIFY_PACKAGE + ".playbackstatechanged";
static final String QUEUE_CHANGED = SPOTIFY_PACKAGE + ".queuechanged";
static final String METADATA_CHANGED = SPOTIFY_PACKAGE + ".metadatachanged";
}
@Override
public void onReceive(Context context, Intent intent) {
// This is sent with all broadcasts, regardless of type. The value is taken from
// System.currentTimeMillis(), which you can compare to in order to determine how
// old the event is.
long timeSentInMs = intent.getLongExtra("timeSent", 0L);
String action = intent.getAction();
if (action.equals(BroadcastTypes.METADATA_CHANGED)) {
String trackId = intent.getStringExtra("id");
String artistName = intent.getStringExtra("artist");
String albumName = intent.getStringExtra("album");
String trackName = intent.getStringExtra("track");
int trackLengthInSec = intent.getIntExtra("length", 0);
Intent intentService = new Intent(context, MyService.class);
// add infos for the service which file to download and where to store
intentService.putExtra("trackId", trackId);
intentService.putExtra("artistName", artistName);
intentService.putExtra("albumName", albumName);
intentService.putExtra("trackName", trackName);
intentService.putExtra("trackLengthInSec", trackLengthInSec);
context.startService(intentService);
// Do something with extracted information...
} else if (action.equals(BroadcastTypes.PLAYBACK_STATE_CHANGED)) {
boolean playing = intent.getBooleanExtra("playing", false);
int positionInMs = intent.getIntExtra("playbackPosition", 0);
// Do something with extracted information
} else if (action.equals(BroadcastTypes.QUEUE_CHANGED)) {
// Sent only as a notification, your app may want to respond accordingly.
}
}
}
MyService.java
public class MyService extends IntentService {
public MyService() {
super("MyService");
}
public void onCreate() {
super.onCreate();
Log.i("sportify Server", ">>>onCreate() spotify");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, startId, startId);
Log.i("spotify LocalService", "Received start id " + startId + ": " + intent);
return START_STICKY;
}
@Override
protected void onHandleIntent(Intent intent) {
Log.i("SERVICE-Spotify", "Spotify");
String trackId = intent.getStringExtra("trackId");
String artistName = intent.getStringExtra("artistName");
String albumName = intent.getStringExtra("albumName");
String trackName = intent.getStringExtra("trackName");
String trackLengthInSec = intent.getStringExtra("trackLengthInSec");
Intent myIntent = new Intent(MyService.this, MainActivity.class);
myIntent.putExtra("TrackName",trackName);
myIntent.putExtra("AlbumName",albumName);
startActivity(myIntent);
MainActivity
public class MainActivity extends AppCompatActivity {
public static TextView mTextViewResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextViewResult = (TextView) findViewById(R.id.google);
Intent intent = getIntent();
String UserId=intent.getStringExtra("TrackName");
String UserName=intent.getStringExtra("AlbumName");
Toast.makeText(getApplicationContext(),UserId,Toast.LENGTH_SHORT).show();
Manifest
<receiver
android:name=".BroadcastSpotify"
android:enabled="true"
android:exported="true" >
<intent-filter>
<!-- Spotify -->
<action android:name="com.spotify.music.playbackstatechanged" />
<action android:name="com.spotify.music.metadatachanged" />
<action android:name="com.spotify.music.queuechanged" />
</intent-filter>
</receiver>
<service android:enabled="true" android:name="de.janoroid.spotifybroadcast.MyService" >
</service>
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.