我正在根据 Android Hive 的教程创建一个 Android 音乐播放器,这是链接。
http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/
这是创建这样的音乐播放器的教程。
现在我已经使用本教程成功创建了我的自定义音乐播放器,但它们存在一个问题,即它不会在后台播放音乐。于是搜索了一下,发现了这篇文章
Playing BG Music Across Activities in Android
我发现我必须从 Android Service
运行 MediaPlayer 类。所以我使用Android服务,创建了播放和暂停的方法,现在我的背景音乐运行成功了。
现在主要问题
如何从依赖于 MediaPlayer 对象的服务更新此组件,例如 seekbar、Timer 等。我无法得到这一点。
因为这些依赖于媒体播放器对象,而 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/