Android 从服务更新seekbar
我正在构建一个音乐播放器,我需要为歌曲添加一个seekbar。我在网上查过,但大多数结果都是针对活动中的媒体播放器,而不是服务中的媒体播放器。我不熟悉使用媒体播放器,因此非常感谢您提供任何详细的结果。您可以使用广播接收器将数据从服务发送到活动 在服务中添加以下方法,并在需要更新Android 从服务更新seekbar,android,service,seekbar,audio-player,android-music-player,Android,Service,Seekbar,Audio Player,Android Music Player,我正在构建一个音乐播放器,我需要为歌曲添加一个seekbar。我在网上查过,但大多数结果都是针对活动中的媒体播放器,而不是服务中的媒体播放器。我不熟悉使用媒体播放器,因此非常感谢您提供任何详细的结果。您可以使用广播接收器将数据从服务发送到活动 在服务中添加以下方法,并在需要更新SeekBar时调用此方法 public static void publishResult(Context context, int percentage){ Intent intent = new Intent
SeekBar
时调用此方法
public static void publishResult(Context context, int percentage){
Intent intent = new Intent("Broadcast");
intent.putExtra("INTENT_TYPE", "SEEKBAR_RESULT");
intent.putExtra("PERCENTAGE", 10);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}
在“活动”中,添加以下代码以接收广播消息
@Override
public void onResume() {
super.onResume();
//Register Broadcast receiver
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mBroadcastReceiver, new IntentFilter("Broadcast"));
}
@Override
public void onPause() {
super.onPause();
//Unregister Broadcast receiver
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mBroadcastReceiver);
}
private BroadcastReceiver mBroadcastReceiver= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String intentType = intent.getStringExtra("INTENT_TYPE");
if(intentType.equalsIgnoreCase("SEEKBAR_RESULT")){
int percentage = intent.getIntExtra("PERCENTAGE");
}
}
};
有关LocalBroadcastManager的更多详细信息,请参阅:您熟悉“绑定服务”吗?这是一个很好的例子,当你可以使用“绑定本地服务”模式时,我已经阅读了它并尝试了一些实现,但我还没有让它工作。你尝试过“绑定本地服务”模式吗?当活动不在前台时呢?当seekbar恢复活动时,它将如何更新到正确的位置?@AlexKombo这是一个有效的问题。您可以将结果存储在应用程序全局变量或共享首选项中,并在Resume方法中更新seekbar。对于前台活动,您可以使用广播接收器更新Seekbar。@AlexKombo很乐意帮助您。:-)<代码>“当活动不在前台时该怎么办?”这就是为什么我说要使用“绑定”服务,在这种情况下,当没有活动绑定到您的服务时,没有人会收到有关更改的通知,一旦活动绑定到您的服务,就直接将其绑定notified@DhavalPatel是的,我读过,这不是任何人都应该遵循的方式,只要使用“绑定服务”,真的吗