我的音乐播放器通知暂停和播放按钮是否不起作用,但音乐在主要活动中停止并播放

问题描述 投票:0回答:1

我正在创建音乐播放器,所有功能正常,但我的通知栏播放和暂停按钮当我按通知暂停按钮时音乐没有改变,但音乐已停止,再次单击通知暂停按钮然后又开始音乐但不更改按钮, >

通知代码

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);

这是我的代码播放和暂停工作,但在通知栏中不能更改播放和暂停按钮的图标

我正在创建音乐播放器,所有功能正常,但我的通知栏“播放和暂停”按钮没有变化,当我按通知暂停按钮,但音乐停止并再次单击时...

android android-notification-bar
1个回答
0
投票

现在我了解了这个问题,您不能仅通过执行此操作来影响通知

© www.soinside.com 2019 - 2024. All rights reserved.