Android自带Widget – Music播放器分析

  次阅读 作者:智能小宝 来源:互联网 2015-10-03 10:39 我要评论(0)

今天我们继续android自带widget剖析,相对于alarmclock而言music程序稍微复杂些,主要是涉 及到众多事件的处理,不过可以看出如何是和服务进行交互的。继续按照昨天的分析步骤和过程,首先我们看下music程序中 AndroidManifest.xml中有关widgets的定义。

<receiver android:name= MediaAppWidgetProvider >

<intent-filter>

<action android:name= android.appwidget.action.APPWIDGET_UPDATE/>

</intent-filter>

<meta-data android:name= android.appwidget.providerandroid:resource= @xml/appwidget_info/>

</receiver>

下面是xml/appwidget_info的内容,里面包含了这个widget程序的基本定义。

<appwidget-provider xmlns:android= http://schemas.android.com/apk/res/android

android:minWidth= 294dip//最小宽度

android:minHeight= 72dip//最小高度

android:updatePeriodMillis= 0//更新频率

android:initialLayout= @layout/album_appwidget >//widget界面布局文件

</appwidget-provider>

整个设计还是十分清晰,这里我们就不再做过多的赘述。

public class MediaAppWidgetProvider extends AppWidgetProvider {

public static final String CMDAPPWIDGETUPDATE =appwidgetupdate ;

static final ComponentName THIS_APPWIDGET =

new ComponentName( com.android.music ,com.android.music.MediaAppWidgetProvider );

private static MediaAppWidgetProvider sInstance;

static synchronized MediaAppWidgetProvider getInstance() {

if (sInstance == null) {

sInstance = new MediaAppWidgetProvider();

}

return sInstance;

}

@Override

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

defaultAppWidget(context, appWidgetIds);

// 发送一个Intent广播给MediaPlaybackService以便立即更新

Intent updateIntent = new Intent(MediaPlaybackService.SERVICECMD);

updateIntent.putExtra(MediaPlaybackService.CMDNAME,MediaAppWidgetProvider.CMDAPPWIDGETUPDATE);

updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);

updateIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);

context.sendBroadcast(updateIntent);

}

/**

* 初始化widget默认状态,如果服务没有运行,我们启动music的时候默认单击隐藏

*/

private void defaultAppWidget(Context context, int[] appWidgetIds) {

final Resources res = context.getResources();

final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.album_appwidget);

views.setViewVisibility(R.id.title, View.GONE);

views.setTextViewText(R.id.artist, res.getText(R.string.emptyplaylist));

linkButtons(context, views, false /** 没有播放*/);

pushUpdate(context, appWidgetIds, views);

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...