在后台播放音乐文件时,根据服务中的MediaPlayer对象更新活动中的Ui组件

时间:2013-05-30 09:24:27

标签: java android android-service android-mediaplayer

我正在创建一个基于Android Hive教程的Android音乐播放器,这里是链接。

http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/

这是创建这样的音乐播放器的教程。

enter image description here

现在我已经使用本教程成功创建了我的自定义音乐播放器,但它们是一个问题,即它不在后台播放音乐。所以搜索它并发现这篇文章

Playing BG Music Across Activities in Android

我发现我必须从Android Service运行MediaPlayer类。所以我使用了Android Service,创建了播放和暂停的方法,现在我的背景音乐已成功运行。

现在这是主要问题

如何从服务中更新此组件,这些组件依赖于MediaPlayer对象,如搜索栏计时器 e.t.c.我无法得到它。

因为它们依赖于媒体播放器对象,而MediaPlayer对象现在处于服务状态。

2 个答案:

答案 0 :(得分:2)

我即将完成我的音乐应用程序。 我已经研究了Android默认音乐应用的这段代码。这对我很有帮助。

您可以在此处看到:Platform_pkg_App_for_Music

答案 1 :(得分:2)

最好的方法是使用自定义BroadcastReceiver,您可以在PutExtraActivity内发送歌曲名称,艺术家等详细信息,您需要创建OnReceiver(),然后您就可以获得此详细信息使用intent.getStringExtra("message");

将此内容写入 ServiceA.java

 Intent intent = new Intent();
 intent.putExtra("message","hi");
 intent.setAction("com.android.activity.SEND_DATA");
 context.sendBroadcast(intent); 

将此内容写入 ActivityA.java

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
   // Extract data included in the Intent
   String message = intent.getStringExtra("message");
   Log.d("receiver", "Got message: " + message);
  }
};

现在注册Receiver

LocalBroadcastManager.getInstance(mContext).registerReceiver(mMessageReceiver,
  new IntentFilter("com.android.activity.SEND_DATA"));