我正在创建音乐播放器,所有功能正常,但我的通知栏播放和暂停按钮当我按通知暂停按钮时音乐没有改变,但音乐已停止,再次单击通知暂停按钮然后又开始音乐但不更改按钮, >
通知代码
public static void customBigNotification(Context context, String sname){ RemoteViews expandView=new RemoteViews(context.getPackageName(), R.layout.status_bar_expanded); expandView.setTextViewText(R.id.status_bar_track_name,sname); NotificationCompat.Builder nc=new NotificationCompat.Builder(context,CHANNEL_ID); NotificationManager nm=(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); Intent notifyIntent=new Intent(context,Player.class); notifyIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent pendingIntent=PendingIntent.getActivity(context, 0, notifyIntent, 0); nc.setContentIntent(pendingIntent); nc.setSmallIcon(R.drawable.apollo_holo_dark_play); nc.setAutoCancel(true); nc.setPriority(NotificationCompat.PRIORITY_MAX); nc.setOnlyAlertOnce(true); nc.setDefaults(NotificationCompat.PRIORITY_MAX); nc.setVibrate(new long[]{00}); nc.setContentTitle("Music Player"); nc.setContentText("Audio Control"); //nc.addAction(R.drawable.ic_pause_status,"pause",pendingIntent); //nc.setStyle(new NotificationCompat.DecoratedCustomViewStyle()); nc.setCustomBigContentView(expandView); setListners(expandView,context); nm.notify(NOTIFICATION_ID_OPEN_ACTIVITY,nc.build()); } private static void setListners(RemoteViews view,Context context){ Intent previous=new Intent(NOTIFY_PREVIOUS); Intent next=new Intent(NOTIFY_NEXT); Intent play=new Intent(NOTIFY_PLAY); Intent pause=new Intent(NOTIFY_PAUSE); PendingIntent pPrevious=PendingIntent.getBroadcast(context, 0, previous, PendingIntent.FLAG_UPDATE_CURRENT); view.setOnClickPendingIntent(R.id.status_bar_prev,pPrevious); view.setViewVisibility(R.id.status_bar_play, 1); PendingIntent pNext=PendingIntent.getBroadcast(context,0,next,PendingIntent.FLAG_UPDATE_CURRENT); view.setOnClickPendingIntent(R.id.status_bar_next,pNext); PendingIntent pPause=PendingIntent.getBroadcast(context,0,pause,PendingIntent.FLAG_UPDATE_CURRENT); //view.setImageViewResource(R.id.status_bar_play,R.id.status_bar_play); view.setOnClickPendingIntent(R.id.status_bar_pause,pPause); view.setImageViewResource(R.id.status_bar_pause,R.drawable.ic_play_status); view.setViewVisibility(R.id.status_bar_pause,View.GONE); //view.setViewVisibility(R.id.status_bar_pause,View.VISIBLE); //view.setViewVisibility(R.id.status_bar_play,View.GONE); PendingIntent pPlay=PendingIntent.getBroadcast(context,1,play,PendingIntent.FLAG_UPDATE_CURRENT); view.setOnClickPendingIntent(R.id.status_bar_play,pPlay); view.setViewVisibility(R.id.status_bar_play,View.VISIBLE); //view.setViewVisibility(R.id.status_bar_prev,View.VISIBLE); }
NotificationReceiver类
public class NotificationReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { NotificationManager manger=(NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE); if(intent.getAction().equals(NotificationGenerator.NOTIFY_PLAY)){ Intent playintent=new Intent(); playintent.setAction("play"); playintent.putExtra("playing",NotificationGenerator.NOTIFY_PLAY); context.sendBroadcast(playintent); } else if(intent.getAction().equals(NotificationGenerator.NOTIFY_PAUSE)) { Toast.makeText(context, "Pause", Toast.LENGTH_LONG).show(); }else if(intent.getAction().equals(NotificationGenerator.NOTIFY_NEXT)) { Intent nextintent=new Intent(); nextintent.setAction("next"); nextintent.putExtra("nexting",NotificationGenerator.NOTIFY_NEXT); context.sendBroadcast(nextintent); }else if(intent.getAction().equals(NotificationGenerator.NOTIFY_PREVIOUS)) { Toast.makeText(context, "Previous", Toast.LENGTH_LONG).show(); } }
}
Player.java类
IntentFilter filter=new IntentFilter(); filter.addAction("play"); //filternext.addAction("next"); reciver= new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if(intent !=null){ // if(intent.getStringExtra("play").equals("play")){ play(); remoteViews.setImageViewResource(R.drawable.ic_play_status,R.drawable.ic_pause_status); remoteViews.setViewVisibility(R.id.status_bar_play,View.VISIBLE); } } }; registerReceiver(reciver,filter); IntentFilter filternext=new IntentFilter(); filternext.addAction("next"); reciver=new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if(intent!=null){ next(); } } }; registerReceiver(reciver,filternext);
这是我的代码播放和暂停工作,但在通知栏中不能更改播放和暂停按钮的图标
我正在创建音乐播放器,所有功能正常,但我的通知栏“播放和暂停”按钮没有变化,当我按通知暂停按钮,但音乐停止并再次单击时...
现在我了解了这个问题,您不能仅通过执行此操作来影响通知