我創建一個基本上包含2 media players
的Android應用程序。其他播放來自互聯網(URL)的流的手機存儲器&中的音樂。Android:活動還調用其他服務的應用程序,這不叫
每個媒體播放器都在其單獨的activity
中定義。我正在使用Service
播放。 (即,當用戶按下播放按鈕時,服務開始播放&播放媒體)。
MusicPlayer是應用程序的默認活動&在包com.example.musicplayer
中。而流播放器是在不同的包com.example.streamplayer
。
問題:應用程序啓動時&我選擇視頻流播放器&按播放鍵,雖然URL流被播放,但我也注意到,其他媒體播放器即音樂播放器的onStartCommand
也被調用。
這意味着活動B正在調用服務A,即使它們都位於不同的包中。
音樂播放器活動&服務代碼
package com.example.musicplayer;
public class MusicPlayerActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
....
Intent service = new Intent(this, MusicService.class);
startService(service);
....
}
}
package com.example.musicplayer;
public class MusicService extends Service {
....
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
Toast.makeText(this, "Music Service onStartCommand()", Toast.LENGTH_LONG).show(); // This gets displayed even in the Stream Activty
return START_STICKY;
}
....
}
代碼流活動&服務:
package com.example.streamplayer;
public class StreamPlayer extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
....
Intent service = new Intent(this, StreamService.class);
service.putExtra("URL", url);
startService(service);
....
}
}
package com.example.streamplayer;
public class StreamService extends Service {
protected void startStream() {
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.reset();
mPlayer.setDataSource(url);
mPlayer.prepareAsync();
mPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
}
的Manifest.xml
注:清單文件,我也嘗試添加以指定哪個服務用於哪個意圖。 (不知道它的工作原理是這樣只)
<service
android:name=".MusicService"
android:enabled="true" >
<intent-filter>
<action android:name="com.example.musicplayer.MusicPlayerActivity" />
</intent-filter>
</service>
<service
android:name="com.example.streamplayer.StreamService"
android:enabled="true" >
<intent-filter>
<action android:name="com.example.streamplayer.StreamService" />
</intent-filter>
</service>
請建議如何確保錯誤的服務應該不會被調用?
前傳這個問題:here
謝謝
我已經定義了兩個服務...問題已更新。而且,你能告訴我應該採取什麼行動。我對這個元素有點困惑。謝謝 – reiley 2013-02-16 05:21:44