我是Android新手。我正在为Media Player创建服务,以便即使我关闭应用程序也可以继续播放歌曲。我已经为Media Player创建了活动,它具有播放,暂停,下一个,上一个,搜索栏等所有功能,还包括oncompletionlistener。一切都很棒。但现在我希望所有这些都应该由服务来管理。
我创建了MyService类:
public class MyService extends Service {
public static MediaPlayer mp;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
mp = new MediaPlayer();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
但是在我的播放器活动中,我为Songlist创建了ArrayList,我正在使用currentsongIndex并通过它我保持所有功能,如下一个,上一个和所有..现在在服务中如何获得歌曲列表,这也是必需的我的活动?我应该在哪里创建MediaPlayer对象意味着在服务或活动?
对于MediaPlayer我已经提到http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/。对于我的媒体播放器代码,您可以参考此网站。谢谢。 让我感到疑惑。我感到很困惑。很快回复我..
答案 0 :(得分:7)
你走在正确的轨道上。我改编自SDK Samples;这就是我如何做到这一点并且效果很好。 从您的ArrayList(在您的活动中而不是从服务中)调用
onListItemClick
并启动启动音乐服务的意图:
startService(new Intent(MusicService.ACTION_PLAY));
在您的清单中,您需要添加:
<intent-filter>
<action android:name="com.blah.blah.action.PLAY" />
<xxx xxx>
</intent-filter>
当然,在您的音乐服务中,您需要收到意图:
public int onStartCommand(Intent intent, int flags, int startId) {
String action = intent.getAction();
if (action.equals(ACTION_PLAY))
processPlayRequest();
}
请务必添加Intents以进行跳过,快退,停止等。 如果这有帮助,请告诉我。
答案 1 :(得分:1)
让应用程序在后台运行应该由“服务”本身来处理
请尝试以下示例http://www.vogella.com/articles/AndroidServices/article.html
服务旨在在后台工作。
答案 2 :(得分:0)
我经历了完全相同的事情!开发一个非常棒的MP3播放器应用程序是一件很长的事情。答案很长。
以下是一些真正帮助我的资源。 Android在他们的开发者文档中有一篇关于这件事的文章:
http://developer.android.com/guide/components/services.html
注意这篇长篇文章底部关于绑定服务和在前台运行的内容。
此外,管理玩家状态是让我头疼的原因。
你还想看看线程,因为产生新服务仍将执行主UI线程上的所有内容,听起来很疯狂但却是真的。查看ExecutorService以管理线程池。我希望我能告诉你这更容易。
不幸的是,我在网络上进行的所有正式培训都是来自付费网站:
http://www.pluralsight.com/training/Courses/TableOfContents/android-services
对于我认为的所有程序员来说,这是一个很好的资源,但是关于android编程的许多方面都有很好的部分,这些部分仅在其他教程网站上简要介绍过。
Vogella的资源也很好,如上所述。