更新卷更改小部件

时间:2018-02-13 08:09:17

标签: android widget

我的应用有1个活动和1个小部件。当用户更改设备音量时,我需要更新我的小部件UI

在活动中,我可以通过注册内容观察员来完成:

public class SettingsContentObserver extends ContentObserver {
    private AudioManager audioManager;

    public SettingsContentObserver(Context context, Handler handler) {
        super(handler);
        audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    }

    @Override
    public boolean deliverSelfNotifications() {
        return false;
    }

    @Override
    public void onChange(boolean selfChange) {
        int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

        // Do something
    }
}

但是使用小部件我不知道该怎么做。有什么帮助吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

要实现这一点,您需要使用 ContentObserver 创建服务,并且 onChange()只需创建一个新的RemoteView。

所以在 OnChange()中就是这样:

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
int widgetIds[] = appWidgetManager.getAppWidgetIds(new ComponentName(context,
                WidgetClass.class));
RemoteViews views = new RemoteViews(context, R.id.widget_layout);//configure here your remoteViews
appWidgetManager.updateAppWidget(widgetIds, views);