【发布时间】:2022-10-05 01:22:17
【问题描述】:
在我们的 andorid 广播接收器类中,我们试图停止从 mainactivity.class 启动的铃声。我们使用 mediaplayer.stop 来停止铃声,它成功地完成了,但它使应用程序崩溃。我们使用了 .stop ()、.pause ()、.release (),但不幸的是,它们都不起作用。广播接收器的代码如下所示
初始化媒体播放器的 Firebase 类(摘要代码),并在媒体播放器停止时触发按钮接收器类的未决广播意图。
public class Firebase extends FirebaseMessagingService {
public static Ringtone ringtone;
public static MediaPlayer mp;
Intent buttonIntent = new Intent(this, ButtonReceiver.class);
buttonIntent.putExtra("notificationId",notification_id);
PendingIntent btsPendingIntent = PendingIntent.getBroadcast(this, requestID, buttonIntent,PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Action action1 = new NotificationCompat.Action.Builder(R.mipmap.ic_launcher, "Dismiss", btsPendingIntent).build();
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, MainActivity.asw_fcm_channel)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(message)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setTimeoutAfter(60000)
.setCategory(NotificationCompat.CATEGORY_CALL)
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setAutoCancel(false)
.setContentIntent(pendingIntent)
.addAction(action1)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setFullScreenIntent(pendingIntent2, true)
.setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
mp = MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
mp.start();
}
按钮接收器类(媒体播放器停止的地方) 公共类 ButtonReceiver 扩展 BroadcastReceiver { 公共媒体播放器mp;
@Override
public void onReceive(Context context, Intent intent) {
int notificationId = intent.getIntExtra("notificationId", 0);
mp.stop ();
mp.seekTo(0);
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(notificationId);
}
}
请帮助我们解决这个问题。
【问题讨论】:
标签: java android android-mediaplayer