15

我是安卓新手。我正在为媒体播放器创建服务,以便即使我关闭应用程序它也可以继续播放歌曲。我为媒体播放器创建了活动,它具有播放、暂停、下一个、上一个、搜索栏等所有功能,还包括 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/。对于我的媒体播放器代码,您可以参考此站点。谢谢。请清除我的疑问。我感到很困惑。快回复我..

4

3 回答 3

8

你在正确的轨道上。我改编自 SDK Samples;我就是这样做的,而且效果很好。从您的 ArrayList (在您的活动中不是来自服务)调用

onListItemClick

并启动一个启动音乐服务的意图:

startService(new Intent(MusicService.ACTION_PLAY));

在您的清单中,您需要添加:

 <intent-filter>
            <action android:name="com.blah.blah.action.PLAY" />
           <xxx xxx> 
 </intent-filter>

当然,在您的音乐服务中,您需要接收 Intent:

public int onStartCommand(Intent intent, int flags, int startId) {
    String action = intent.getAction();
    if (action.equals(ACTION_PLAY))
        processPlayRequest();
  }

确保为跳过、倒带、停止等添加 Intent。如果这有帮助,请告诉我。

于 2013-01-05T05:58:26.213 回答
2

让应用程序在后台运行应该由“服务”本身来处理。
试试这个例子http://www.vogella.com/articles/AndroidServices/article.html
服务被设计为在后台工作。

于 2013-01-04T05:58:44.640 回答
0

我经历了完全相同的事情!开发一个非常棒的 mp3 播放器应用程序是一个漫长的过程。答案很长。

以下是一些真正帮助我的资源。Android 在他们的开发者文档中有一篇关于这件事的文章:

http://developer.android.com/guide/components/services.html

注意它在这篇长篇文章底部所说的关于绑定服务和在前台运行的内容。

此外,管理玩家状态是最让我头疼的问题。

您还需要了解线程,因为生成新服务仍将执行主 UI 线程上的所有内容,这听起来很疯狂,但确实如此。看一下用于管理线程池的 ExecutorService。我希望我能告诉你这更容易。

不幸的是,我的大部分正式培训来自网络,但使用 android 服务来自付费网站:

http://www.pluralsight.com/training/Courses/TableOfContents/android-services

我认为这对所有程序员来说都是一个很好的资源,但它有很多关于 android 编程方面的精彩部分,这些部分仅在其他教程网站上简要介绍过。

Vogella 的资源也很好,如上所述。

于 2013-12-28T17:27:53.163 回答