`
gryphone
  • 浏览: 433692 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

音乐播放器widget 后传 - widget的构建

阅读更多

音乐播放器widget 后传

 

 

[功能]

上次讲的播放器的构建 这次讨论widget 的构建

 

 

为了不使得太过臃肿 该widget得功能也比较简单:

写道
1. 用于 换曲 功能
2. 显示从MediaPlayerService 发过来的字串

 

写道
以2个功能为代表 演示:

widget 与 后台service 的交互

 

 

 

 

[代码 步骤]

1. 构建 widget 所需界面 musicplayerlayout.xml: 1 Buttoon用于换曲 1TextView显示字串

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Button
	android:id="@+id/next"  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Next!"
    />
<TextView
	android:id="@+id/text"  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    />
</LinearLayout>

 

 

2. 设定 widget 的属性 musicplayersetting.xml 比如:窗口大小设定 刷新率 所需界面

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="246dip"
    android:minHeight="22dip"
    android:updatePeriodMillis="1000"
    android:initialLayout="@layout/musicplayerlayout" />

 

 

3. AppWidgetProvider 因为一些原因 所以觉得把具体的更新 放在 UpdateService 里面完成

写道
UpdateService 的工作:

1. 设立 "换曲" Button 的 sendBroadcast() 工作

2. 定义BroadcastReceiver 用于接收Text 并显示之

 

写道
在 widget 上设立监听器 不能像在Activity中那样 其主要通过PendingIntent完成

PendingIntent pi = PendingIntent.getBroadcast(context, requestCode, intent, flags)

主要是通过 Intent 来启用相应功能

1. Activity 跳转 类似于Activity.startActivity()

2. 发送Broadcast 类似于Activity.sendBroadcast()

3. 至于Broadcast 接收 和 Activity中一样

 

 

1. 设立 "换曲" Button 的 sendBroadcast() 工作

public void setViewBroadcastClickListener(RemoteViews remte,int id,String s){
			Intent i = new Intent(s);
			
			PendingIntent pi = PendingIntent.getBroadcast(this,1,i,0);
			
			remte.setOnClickPendingIntent(id, pi);
		}

 

2. 定义BroadcastReceiver 用于接收Text 并显示之

public class MusicWidgetListenerHelper extends BroadcastReceiver {
			Context context;
			
			MusicWidgetListenerHelper listener;
			//construct 
			public MusicWidgetListenerHelper(Context c){
				context = c;
				
				//to instance it
				listener = this;
			}
			
			public void registerAction(String action){
				IntentFilter filter = new IntentFilter();
				filter.addAction(action);
				
				context.registerReceiver(listener,filter);
			}
			
			@Override
			public void onReceive(Context arg0, Intent arg1) {
				// TODO Auto-generated method stub
				
				Bundle b = arg1.getExtras();
				
				if(b.containsKey(MusicPlayerHelper.Message_MusicPlayer_Text)){
					String string = b.getString(MusicPlayerHelper.Message_MusicPlayer_Text);
					updateMusicText(string);
				}

			}
			
		}

 

public void updateMusicText(String s){
			remote.setTextViewText(R.id.text,s);
			
			
			//做界面改动 必须调用updateAppWidget() 刷新
			ComponentName thisWidget = 
                new ComponentName(this, MusicPlayerWidget.class);
            AppWidgetManager manager = 
                AppWidgetManager.getInstance(this);
            manager.updateAppWidget(thisWidget, remote);
		}

 

写道
在做界面更新后要调用下面代码使之生效

//做界面改动 必须调用updateAppWidget() 刷新
ComponentName thisWidget =
new ComponentName(this, MusicPlayerWidget.class);
AppWidgetManager manager =
AppWidgetManager.getInstance(this);
manager.updateAppWidget(thisWidget, remote);

 

 

 

3. 至此 widget 功能也完成了 看看emulator 运行截图吧

 * 开始运行效果

 

2. 按下 Button "Next!" 后的效果 为了看出效果 注意其右边Text 的变化

 

 

done!

分享到:
评论

相关推荐

    Axure ios-widget-for-axure.rplib

    而"ios-widget-for-axure.rplib"则是一款专门为Axure设计的iOS设备组件库,专为在Axure6.5版本中构建逼真的iOS应用原型而打造。 首先,我们来深入了解"ios-widget-for-axure.rplib"这个组件库。这是一个.rplib文件...

    dcharts-widget

    **dcharts-widget** 是一个基于 **dcharts** 库构建的可视化组件库,它为开发者提供了丰富的图表选项,便于在Web应用中实现交互式的数据可视化。dcharts-widget旨在简化数据展示的过程,使得开发者无需深入了解底层...

    PyPI 官网下载 | Oasys-Widget-Core-1.0.0.tar.gz

    《PyPI官网下载的Oasys-Widget-Core-1.0.0.tar.gz:深入了解Python库的构建与使用》 PyPI(Python Package Index)是Python开发者的重要资源库,它为全球的Python开发者提供了一个发布、查找和安装Python软件包的...

    仿小米音乐播放器带widget

    优雅音乐播放器是一款精心设计的音乐应用,其特色在于它带有Widget功能,模仿了MIUI系统中的音乐播放器界面,提供了美观且用户友好的体验。Widget在安卓系统中是一种小型的应用程序视图,可以直接在主屏幕上显示,让...

    安卓Widget小组件相关-androidWidget小组件开发.zip

    通过"MyWidget"这个示例项目,你可以学习到如何从零开始构建一个基本的Android Widget,包括布局设计、数据更新和用户交互处理。不过,请注意,由于提供的代码可能并未全部验证,你可能需要自己调试和调整,以使其...

    geomajas-widget-searchandfilter-1.15.0-M2.zip

    2. `dist/`: 发布包,可能包含构建后的JavaScript库和相关文件。 3. `docs/`: 文档,如API参考、用户手册等。 4. `test/`: 测试用例,确保组件功能的正确性。 5. `LICENSE.txt`: 开源许可证,规定了代码的使用方式。...

    widget-14.04-beta.zip

    标题中的"widget-14.04-beta.zip"暗示了一个软件组件或库的早期测试版本,版本号为14.04,标记为"beta",意味着它可能包含未修复的错误并主要用于开发者测试和反馈。这个命名通常遵循IT行业的版本控制惯例,其中数字...

    geomajas-widget-searchandfilter-gwt-example-1.0.0-M1.zip

    标题中的"geomajas-widget-searchandfilter-gwt-example-1.0.0-M1.zip"是一个开源项目的示例压缩包,这个项目可能与GIS(地理信息系统)相关,因为"geomajas"通常是一个用于构建Web GIS应用的Java框架。"widget-...

    geomajas-widget-utility-documentation-1.15.0-M3.zip

    在本压缩包"geomajas-widget-utility-documentation-1.15.0-M3.zip"中,我们主要关注的是Geomajas的GWT客户端部分,特别是其中的实用插件和相关文档。 1. **GWT(Google Web Toolkit)简介** GWT是一种由Google...

    《桌面widget详解(四)——桌面音乐播放器(实战)》源码

    在Android平台上,开发一款桌面音乐播放器Widget是一个有趣且实用的实践项目。本文将深入解析如何利用Android的App Widget API创建一个能够在用户桌面运行并控制音乐播放的应用组件。通过源码分析,我们可以学习到...

    Emall widget制作--详情

    Ecmall Widget是一种在Ecmall电子商务平台中用于构建可重用、可配置的界面元素的技术。通过Widget,开发者可以创建自定义的挂件,这些挂件能够方便地嵌入到不同的页面上,以实现特定的功能或者展示内容。本文将详细...

    3DEXPERIENCE-Widget-Development-Fundamentals-R2021x-v1.11

    在3DEXPERIENCE平台上,Widget开发是构建交互式和自定义用户体验的关键部分。"3DEXPERIENCE-Widget-Development-Fundamentals-R2021x-v1.11"课程旨在教授用户如何有效地配置3DDashboard,以及创建和集成自定义小部件...

    Dojo之Widget标签开发 - 我为人人,人人为我 - BlogJava

    本文主要探讨的是在Dojo框架下进行Widget标签开发的技术细节,旨在帮助开发者更好地理解和利用Dojo构建可重用、模块化的Web组件。 首先,我们要了解什么是Widget。在Dojo中,Widget是UI组件的基础,它封装了HTML...

    Python库 | kodexa_widget-2.0.23-py2.py3-none-any.whl

    总之,**kodexa_widget-2.0.23-py2.py3-none-any.whl**是Python开发者在Kodexa平台上构建高效、互动数据应用的重要工具。它简化了开发过程,提高了用户体验,是Python生态系统中一个不可或缺的部分。如果你正在寻求...

    Python库 | multiple_select_widget-0.1.0-py2.py3-none-any.whl

    执行此命令后,`multiple_select_widget`将被添加到Python的环境路径中,可以随时在代码中导入并使用。 使用`multiple_select_widget`可能涉及以下几个方面: 1. **导入库**:在Python脚本中,你需要首先导入这个...

    Python库 | plone.formwidget.contenttree-1.0.8.zip

    《Python库解析:深入了解plone.formwidget.contenttree-1.0.8》 在Python的广阔天地里,库是开发者的重要工具,它们提供了丰富的功能,让编程变得更加高效和便捷。今天我们将聚焦于一个名为`plone.formwidget....

    widget-chat-web:QuickBlox 的网络聊天小部件

    在解压后的文件"widget-chat-web-master"中,我们可以期待找到以下关键组成部分: 1. **源代码文件**:JavaScript文件(可能包括`.js`扩展名的文件)包含了实现聊天功能的核心逻辑,处理用户交互、连接到QuickBlox...

    Android widget(2-1)

    AppWidget 框架为开发者提供了一系列工具和 API,用于构建这些小部件。 **2. 维基词典每日一词** 另一个例子是“维基词典每日一词”小部件。这种类型的小部件可以从网络上获取数据并显示在主屏幕上,比如每天展示...

    org\vaadin\addons\dcharts-widget

    【标题】"org\vaadin\addons\dcharts-widget" 是一个与Vaadin框架相关的插件,主要用于在Web应用中提供数据图表的展示功能。Vaadin是一个流行的Java开发框架,用于构建用户界面,尤其是企业级的B2B应用程序。dcharts...

    lux-widget-feedstock:lux-widget的conda-smithy存储库

    关于勒克斯小部件 ...启用conda-forge频道后,即可通过以下方式安装lux-widget : conda install lux-widget 可以列出您平台上可用的所有lux-widget版本,其中包括: conda search lux-widget --channel conda-

Global site tag (gtag.js) - Google Analytics