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

标签 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服务,创建了播放和暂停的方法,现在我的背景音乐运行成功了。

现在主要问题

如何从依赖于 MediaPlayer 对象的服务更新此组件,例如 seekbarTimer 等。我无法得到这一点。

因为这些依赖于媒体播放器对象,而 MediaPlayer 对象现在位于 Service 中。

最佳答案

最好的方法是使用自定义BroadcastReceiver,您可以在PutExtra和您需要创建的Activity中发送歌曲名称,艺术家等详细信息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);
  }
};

现在注册接收器

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

关于java - 在后台播放音乐文件时,根据服务中的 MediaPlayer 对象更新 Activity 中的 Ui 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16832389/

相关文章:

java - 我可以将 Apache Derby 数据库连接到 Android 应用程序吗?

java - 对象如何存储在堆中?

java - 用不可见字符(制表符、回车符、组分隔符等)分隔字符串?

java - android/java有定时器类吗?

Android - 全局跟踪看不见的通知,最佳实践

Java:二叉树节点仅显示内存地址或空

android - 从 intentservcie 回调到 jobservice

Android json 解析不工作

java - Android:服务完成任务后如何启用按钮?

java - 使用服务内的广播接收器检测调用结束