【发布时间】:2015-11-07 00:47:07
【问题描述】:
我正在尝试向我的应用程序添加一项功能,该功能从 Spotify 接收广播数据/意图操作并使用该数据执行某些操作。但是,我不确定如何进行。在之前的问题的帮助下,我已经能够拼凑出以下代码,但是这些问题并未详细介绍如何实际启动数据接收。我有一个广播接收器:
<receiver
android:name=".Receiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.spotify.music.playbackstatechanged"/>
<action android:name="com.spotify.music.metadatachanged"/>
<action android:name="com.spotify.music.queuechanged"/>
</intent-filter>
</receiver>
我有一个广播接收器类(全部设置):
public class Receiver 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 METADATA_CHANGED = SPOTIFY_PACKAGE + ".metadatachanged";
}
@Override
public void onReceive(Context context, Intent intent) {
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);
//send data to main class?
} else if (action.equals(BroadcastTypes.PLAYBACK_STATE_CHANGED)) {
boolean playing = intent.getBooleanExtra("playing", false);
int positionInMs = intent.getIntExtra("playbackPosition", 0);
//send data to main class?
}
}
}
我的主要活动中也有以下方法:
public void mute(AudioManager audioManager){
audioManager.setStreamMute(am.STREAM_SYSTEM, true);
}
public void unMute(AudioManager audioManager){
audioManager.setStreamMute(am.STREAM_SYSTEM,false);
}
我想在接收和分析来自我的 Receiver 类的广播数据后调用它。
总结:
所以现在我不确定如何在我的主要活动中实际开始从 Spotify 获取数据(我是否必须手动“呼叫”我的接收器,或者它是否会在我的主要活动中自动在后台收听广播)活动正在运行)。
非常感谢详细的解释,并将获得奖励。
【问题讨论】:
标签: java android android-intent broadcastreceiver spotify