我已經看了很多關於從服務發送消息到活動的帖子,但我無法得到它的工作。我的接收器永遠不會被調用。如果活動不在前臺,這有什麼關係?沒有收到從我的服務到我的活動廣播
這是我的場景 - 我正在運行Web服務器作爲服務。當網絡服務器收到一個鏈接到播放列表的URL時,我需要發送一條消息給我的作爲媒體播放器的活動。媒體播放器將讀取播放列表並開始播放歌曲,視頻等。
我不希望服務啓動媒體播放器活動的新實例,因爲它有時可能會發送類似快進或暫停的命令。
從我的Web服務器服務:
private void sendMessage() {
Log.d("juice NonoHTTPD sender", "Sending message from Hub Web Server to Hub Player");
Intent intent = new Intent();
intent.putExtra(HubPlayer.ACTIVITY_PARAM_HOST, sAppHost);
intent.putExtra(HubPlayer.ACTIVITY_PARAM_PORT, sAppPort);
intent.putExtra(HubPlayer.ACTIVITY_PARAM_TYPE, sAppType);
intent.putExtra(HubPlayer.ACTIVITY_PARAM_URL, sAppPath);
intent.setAction("com.jigawattlabs.hubplayer.play");
appContext.sendBroadcast(intent);
}
從我的活動:
public class HubPlayer extends Activity implements
OnBufferingUpdateListener, OnCompletionListener,
OnPreparedListener, OnVideoSizeChangedListener, SurfaceHolder.Callback
{
private IntentFilter intentFilter = new IntentFilter("com.jigawattlabs.hubplayer.play");
MyBroadcastReceiver mReceiver = new MyBroadcastReceiver();
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.mediaplayer_2);
registerReceiver(mReceiver , intentFilter);
}
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
extras = intent.getExtras();
sHost = extras.getString(ACTIVITY_PARAM_HOST);
sPort = extras.getString(ACTIVITY_PARAM_PORT);
sType = extras.getString(ACTIVITY_PARAM_TYPE);
sXMLURL = extras.getString(ACTIVITY_PARAM_URL);
DebugMsg("received broadcast in MyBroadcastReceiver.");
processInputRequest();
}
}
}
即使它似乎並沒有必要把這個清單,因爲我註冊內的廣播接收器我的代碼,我還添加了一個意圖過濾器:
<activity android:label="Media Hub Player" android:launchMode="singleTask"
android:screenOrientation="unspecified"
android:name=".HubPlayer" >
<intent-filter>
<action android:name="com.jigawattlabs.hubplayer.play" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
在此先感謝。
**如果活動不在前臺?**這很重要嗎?很可能。如果您需要一種情況,即「活動」不在前臺,但您需要播放/控制音樂,則應將「MediaPlayer」託管在「服務」中。 – Squonk
查看logcat(使用「詳細」過濾)並查看廣播意圖是否正在發送。另請參閱是否有任何權限錯誤或其他錯誤。 –
如果我只需要播放音樂,MediaPlayer會很好,但我還需要顯示照片和視頻。所以我需要UI線程上的東西。除了我自己的調試語句外,我在logcat中看不到任何東西。我認爲發送消息會啓動活動,如果它尚未運行,但也許這不是一個有效的假設。 –