没有人修改过原生的音乐播放器appwidget吗?
解决方案 »
- eclipse中写了一个安卓应用,相同的代码在不同的project显示不同结果,这是为什么?
- 求教--使用HandlerThread构造Child Handler出现空指针问题
- 移动终端及时通信技术有哪些啊
- 关于布局的问题
- android在锁屏状态下能监控电源键并触发事件(程序)吗?
- 怎么让程序后台运行,然后快捷键呼出程序?
- Android 解锁时死机或重启问题
- 请问高手,linux环境如何查看自带程序的日志
- 调试android程序时如何查看手机内存使用情况?
- 急救~~~ ov3640图像发绿
- 如何获取并保存AlertDialog中EditText的输入值?
- android socket 通信中有阻塞式的读取吗;尝试了bufferreader.readline似乎不会阻塞;
int mode = getRepeatMode();
if (mode == MediaPlaybackService.REPEAT_NONE) {
setRepeatMode(MediaPlaybackService.REPEAT_ALL);
} else if (mode == MediaPlaybackService.REPEAT_ALL) {
setRepeatMode(MediaPlaybackService.REPEAT_CURRENT);
if (getShuffleMode() != MediaPlaybackService.SHUFFLE_NONE) {
setShuffleMode(MediaPlaybackService.SHUFFLE_NONE);
//setShuffleButtonImage();
}
} else {
setRepeatMode(MediaPlaybackService.REPEAT_NONE);
}
//setRepeatButtonImage();
}在MediaAppWidgetProvider.java中linkButtons函数添加如下代码 intent=new Intent(MediaPlaybackService.REPEAT_ACTION);
intent.setComponent(serviceName);
pendingIntent = PendingIntent.getService(context,
0 /* no requestCode */, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.widget_repeat, pendingIntent);在performUpdate函数中更新图片 if(service.getRepeatMode()== MediaPlaybackService.SHUFFLE_NORMAL)
{
views.setImageViewResource(R.id.widget_shuffle, R.drawable.ic_widget_shuffle_on);
}
else
{
views.setImageViewResource(R.id.widget_shuffle, R.drawable.ic_widget_shuffle_off);
} 然后,在onStartCommand分支结构中调用cycleRepeat和notifyChange(PLAYSTATE_CHANGED);
发现:activity中点击了按钮,widget上相应的按钮没有马上刷新过来。不知道这思路对不?请高手指教
当前播放音乐时间的更新,重复播放按的更新是不是都要放在MediaPlaybackService.java来处理。
MediaPlaybackService.java中有直接处理播放,暂停,下一首,没有处理其他的,该怎么办?
AppWidget系统就会通知AppWidgetHost来更新其AppWidgetHostView了。
非常感谢th1789.按照你的方法,在按钮状态变化地方即监听函数中,用RemoteView更新OK。
请问:系统activity是用refreshNow函数每隔500ms更新播放时间和歌词。我在该函数中调用自己写的更新widget的函数,没有更新成功。这会是什么原因。
源码中没有获取当前时间函数及总时间函数。所以在MediaPlaybackService类中添加当前时间函数getCurrentTime(),然后在MediaAppWidgetProvider类中通过mcurrentTime=service.getCurrentTime()获得时间,并且通过在函数performUpdate中 views.setTextViewText(R.id.widget_currenttime,mcurrentTime);把mcurrentTime更新到当前播放时间textview上。重复播放按钮更新也是在这个函数中可以更新,但是当前时间不能实时更新,如果点击了重复播放按钮(自己添加的)就更新过来,不点击就不更新。
像添加重复播放按钮一样去设置PendingIntent也更新不了,请指教,谢谢!
pushUpdate中初始化初始化调用MyTimer:
final AppWidgetManager gm = AppWidgetManager.getInstance(context);
Timer timer=new Timer();实习MyTimer类并且让RemoteView更新当前播放时间TextView:
class MyTime extends TimerTask
{
RemoteViews remoteViews;
AppWidgetManager appWidgetManager;
ComponentName thisWidget;
MyTime(Context context, AppWidgetManager appWidgetManager)
{
this.appWidgetManager=appWidgetManager;
remoteViews=new RemoteViews(context.getPackageName(), R.layout.album_appwidget);
this.thisWidget=new ComponentName(context,MediaAppWidgetProvider.class);
}
public void run()
{
remoteViews.setTextViewText(R.id.widget_currenttime,mcurrentTime);
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}
}这样,歌曲当前时间还是更新过来(只是一闪一闪的,时间根本没变)。不知道是哪里出问题了。
采用Thread+Handler机制也是一样没有成功。请大侠指点该怎样更新歌曲当前时间?