首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓-多个appWidgets播放不同的声音

安卓-多个appWidgets播放不同的声音
EN

Stack Overflow用户
提问于 2010-11-19 20:56:08
回答 2查看 971关注 0票数 5

我正在编写一个android soundboard,允许用户创建多个桌面小部件,每个声音一个。我正在使用一个活动,让用户选择他想要为哪个声音创建小部件。对于创建的每个小部件,我以以下形式存储一个共享首选项

代码语言:javascript
运行
复制
key => "WIDGET_FILENAME_"+widgetId, value=> fileName

为了播放声音,我覆盖了widgetProvider类上的onRecieve方法。当单击桌面小部件时,它会触发对此方法的广播,该方法从意图中获取小部件id,然后加载与小部件关联的共享首选项:

代码语言:javascript
运行
复制
int appWidgetId =  intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                                     AppWidgetManager.INVALID_APPWIDGET_ID);

问题是:无论单击哪个小部件,widgetId总是相同的,导致播放相同的声音。

对此有什么想法或指导吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-22 05:09:09

我也有同样的问题,并像这样解决了它:

  1. 在您的AppWidgetProviderClass中,按如下方式声明您的意图:

Intent =新的Intent(context,YourActivity.class) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId);

  • ...and PendingIntent

context pi = PendingIntent.getActivity(context,appWidgetId,intent,在获得要更新的appWidgetId后,更新Activity类:

AppWidgetManager.INVALID_APPWIDGET_ID);

  • ...you currentWidgetId = this.getIntent().getIntExtra( AppWidgetManager.EXTRA_APPWIDGET_ID,int可以使用类似如下的函数:

RemoteViews(YourWidget.class.getPackage().getName(),void updateWidgetView() { views =新的视图);mgr =AppWidgetManager.getInstance( R.layout.main_widget);views.setTextViewText(R.id.some_text_view,someText);//告诉AppWidgetManager更新当前的应用小部件视图(currentWidgetId,mgr.updateAppWidget);}

票数 7
EN

Stack Overflow用户

发布于 2011-08-06 05:03:31

我现在有这个问题,有了这个代码问题就解决了,我认为意图中的widgetAppId和创建新的标志将使这个意图始终是唯一的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4225197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档