频道栏目
首页 > 资讯 > Android > 正文

安卓音乐播放器开发教程

17-12-20        来源:[db:作者]  
收藏   我要投稿

安卓音乐播放器开发教程

先说一下效果,就是可以在通知里面上一曲下一曲播放和暂停
需要设置前台服务必须先来一个Notification,然后这个通知的界面是由我们自己来设定的(有几个按钮啊之类的) 在网上查到可以这样设置界面
RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.notification_layout);
这里的R.layout.notification_layout就是我们自己定制的布局 在网上看要为我们自己的布局控件设置监听的话可以这样干
BroadcastReceiver OnClickPlayListener = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
        }
};

IntentFilter filter = new IntentFilter();      filter.addAction("com.example.musicplay.onClickLastListener");
registerReceiver(onClicLastkListener,filter);
Intent i = new Intent("com.example.musicplay.onClickLastListener");
PendingIntent p1 = PendingIntent.getBroadcast(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.former_Notification_lastMusic,p1);
大概解释一下吧
使用内部类做一个广播 动态注册广播 然后就可以用PendingIntent()来建立一个延时的intent,至于这里的第四个参数,我也不太清楚,然后通过remoteView给每个控件绑定PendingIntent 以达到点击事件的效果,具体的逻辑就可以在具体的广播接收器里面写了 这里我遇到个问题就是如果有好几个控件的话,用这个PendingIntent之前的那个Intent是不能设置具体的键值对来区分是哪一个控件事件的,搞了很久也不知道,索性就弄了好多个广播,一一对应 然后用remoteViews定制好界面之后传到notification里面就可以了 顺便再设置一下别的参数
Notification notification = new Notification.Builder(this)
                .setContent(remoteViews)
                .setWhen(System.currentTimeMillis())
                .setSmallIcon(R.mipmap.ic_launcher)
                .setOngoing(true)
                .build();
还有一个问题就是remoteviews设置的界面并不能平铺整个通知的横向,百思不得其解

更新通知栏

当一首歌曲放完之后我们要去更新通知的内容的 这个时候要注意需要stopForeground(true);才能去设置remoteView的子空间信息,不然是不起作用的 设置完后再重新startForeground;
相关TAG标签
上一篇:Android 7.1 GUI系统-窗口管理WMS-动画的执行(七)
下一篇:写在Service之前(在程中更新ui)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站