【问题标题】:Updating seekbar from Service从服务更新搜索栏
【发布时间】:2015-10-18 17:23:00
【问题描述】:

我正在构建一个音乐播放器,我需要为歌曲添加一个搜索栏。我在网上查过,但大多数结果都是针对处于活动中的媒体播放器而不是服务。我是使用媒体播放器的新手,因此非常感谢任何详细的结果。

【问题讨论】:

  • 您熟悉“绑定服务”吗?当您可以使用“绑定本地服务”模式时,这是一个很好的例子
  • 我一直在阅读它并尝试了一些实现,但我还没有让它工作。
  • 你尝试过“绑定本地服务”模式吗?

标签: android service seekbar audio-player android-music-player


【解决方案1】:

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

在Service中添加Below Method,并在您想要更新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 的更多详细信息,请参阅:http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html

【讨论】:

  • 当activity不在前台时怎么办?当活动恢复时,搜索栏将如何更新到正确的位置?
  • @AlexKombo 这是一个有效的问题。您可以将结果存储在 Application Global 变量或 Shared-preference 中,在 Resume 方法中您可以更新搜索栏。对于前台活动,您可以使用广播接收器来更新 Seekbar。
  • @AlexKombo 很高兴为您提供帮助。 :-)
  • "What about when the activity isnt on the foreground?" 这就是为什么我说要使用“绑定”服务,在这种情况下,当没有活动绑定到您的服务时,一旦活动绑定到您的服务,就不会通知任何人更改它直接通知了
  • @DhavalPatel 是的,我读过它,这不是任何人都应该遵循的方式,只是使用“绑定服务”,真的
猜你喜欢
  • 2015-03-31
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
  • 2019-05-27
  • 1970-01-01
相关资源
最近更新 更多