2010-11-28 104 views
4

我正在制作一个音乐播放器小部件(主屏幕小部件).. 它只需要播放1首歌曲(最好使用MediaPlayer类)。但我不知道如何实现它。我对Android开发并不熟悉,就这么提及。Android音乐播放器小部件

我有类到目前为止扩展AppWidgetProvider,我想这不是一个好主意,让这个类处理音乐播放一部分,而是一个Service。如果是这样,怎么样?此外,我有3个按钮:播放,暂停和停止,并且我可以区分在onReceive(...)中哪个按钮被按下。

提前致谢!


这是班级。

public class MusicManager extends AppWidgetProvider { 

    private final String ACTION_WIDGET_PLAY = "PlaySong"; 
    private final String ACTION_WIDGET_PAUSE = "PauseSong"; 
    private final String ACTION_WIDGET_STOP = "StopSong"; 
    private final int INTENT_FLAGS = 0; 
    private final int REQUEST_CODE = 0; 

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

     RemoteViews controlButtons = new RemoteViews(context.getPackageName(), 
       R.layout.main); 

     Intent playIntent = new Intent(context, MusicService.class); 

     Intent pauseIntent = new Intent(context, MusicService.class); 

     Intent stopIntent = new Intent(context, MusicService.class); 


     PendingIntent playPendingIntent = PendingIntent.getService(
       context, REQUEST_CODE, playIntent, INTENT_FLAGS); 
     PendingIntent pausePendingIntent = PendingIntent.getService(
       context, REQUEST_CODE, pauseIntent, INTENT_FLAGS); 
     PendingIntent stopPendingIntent = PendingIntent.getService(
       context, REQUEST_CODE, stopIntent, INTENT_FLAGS); 

     controlButtons.setOnClickPendingIntent(
       R.id.btnPlay, playPendingIntent); 
     controlButtons.setOnClickPendingIntent(
       R.id.btnPause, pausePendingIntent); 
     controlButtons.setOnClickPendingIntent(
       R.id.btnStop, stopPendingIntent); 

     appWidgetManager.updateAppWidget(appWidgetIds, controlButtons);   
    } 
} 

回答

3

增加了<service android:name=".MusicService" android:enabled="true" /> 到清单!

0

在你AppWidgetProvideronUpdate(...)方法,使用这样的启动服务(本例中,服务于一个按钮单击事件相关联):

Intent intent = new Intent(context, MusicService.class); 
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); 

// Get the layout for the App Widget and attach an on-click listener to the button 
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout); 
views.setOnClickPendingIntent(R.id.button, pendingIntent); 

欲了解更多信息看here

+0

感谢您的答案,但它仍然无法正常工作。我可能在这里错失了一些很明显的东西。 – whirlwin 2010-11-28 22:22:35

+0

你怎么知道问题不在服务中?让服务在启动时记录一些内容,这样至少可以知道它们是否被调用。 – aromero 2010-11-29 00:13:51