Android 从服务更新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。我在网上查过,但大多数结果都是针对活动中的媒体播放器,而不是服务中的媒体播放器。我不熟悉使用媒体播放器,因此非常感谢您提供任何详细的结果。

您可以使用广播接收器将数据从服务发送到活动

在服务中添加以下方法,并在需要更新
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是的,我读过,这不是任何人都应该遵循的方式,只要使用“绑定服务”,真的吗