为了账号安全,请及时绑定邮箱和手机立即绑定

o 安卓通知声音不播放

o 安卓通知声音不播放

呼唤远方 2022-09-22 19:29:57

这是我的代码,用于制作通知和通知显示但不播放声音,请帮助我识别代码中的错误,我们是否需要任何权限来播放声音,振动通知?


Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);

            AudioAttributes attributes = new AudioAttributes.Builder()

                    .setUsage(AudioAttributes.USAGE_NOTIFICATION)

                    .build();

            NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

            String id = "my_channel_01";

            CharSequence name = "oreiomilla";

            String description ="i love me";

            int importance = NotificationManager.IMPORTANCE_HIGH; 

            NotificationChannel mChannel = new NotificationChannel(id, name, importance); 

            mChannel.setDescription(description); 

            mChannel.enableLights(true); 

            mChannel.setLightColor(Color.RED);

            mChannel .setSound(alarmSound,attributes);

            mChannel.enableVibration(true);

            mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); 

            mNotificationManager.createNotificationChannel(mChannel); 

            int notifyID = 1; 

            String CHANNEL_ID = "my_channel_01";



查看完整描述

2 回答

?
湖上湖

TA贡献1669条经验 获得超2个赞

要在 Oreo 中为通知设置声音,必须在通知通道上设置声音,而不是在通知生成器本身上设置声音。您可以按如下方式执行此操作


Uri sound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.getPackageName() + "/" + R.raw.notification_mp3);


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {


        NotificationChannel mChannel = new NotificationChannel("YOUR_CHANNEL_ID",

            "YOUR CHANNEL NAME",

            NotificationManager.IMPORTANCE_DEFAULT)


        AudioAttributes attributes = new AudioAttributes.Builder()

                .setUsage(AudioAttributes.USAGE_NOTIFICATION)

                .build();


        NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, 

                context.getString(R.string.app_name),

                NotificationManager.IMPORTANCE_HIGH);


        // Configure the notification channel.

        mChannel.setDescription(msg);

        mChannel.enableLights(true);

        mChannel.enableVibration(true);

        mChannel.setSound(sound, attributes); // This is IMPORTANT



        if (mNotificationManager != null)

            mNotificationManager.createNotificationChannel(mChannel);

    }


查看完整回答
反对 回复 2022-09-22
?
杨魅力

TA贡献1518条经验 获得超5个赞

试试这个,它将为你工作。


private void BigTextNotificationForDays(Context context, String Message, String Author) {

            Intent resultIntent = new Intent(context, SplashActivity.class);

            resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

            PendingIntent pendingIntent = PendingIntent.getActivity(context, (int) Calendar.getInstance().getTimeInMillis(), resultIntent, PendingIntent.FLAG_ONE_SHOT);


            //To set large icon in notification

            //  Bitmap icon1 = BitmapFactory.decodeResource(getResources(), R.drawable.big_image);


            //Assign inbox style notification

            NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();

            bigText.bigText(Message);

            bigText.setBigContentTitle(context.getString(R.string.app_name));

            bigText.setSummaryText(Author);

            //build notification

            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context,createNotificationChannel(context))

                    .setSmallIcon(R.drawable.ic_notification)

                    .setContentTitle(context.getString(R.string.app_name))

                    .setContentText(Message)

                    .setStyle(bigText)

                    .setLargeIcon(icon)

                    .setColor(ContextCompat.getColor(context, R.color.colorPrimary))

                    .setVibrate(new long[]{1000, 1000})

                    .setSound(Settings.System.DEFAULT_NOTIFICATION_URI)

                    .setPriority(Notification.PRIORITY_HIGH)

                    .setAutoCancel(true)

                    .setContentIntent(pendingIntent);

            //.setOngoing(true);


            // Gets an instance of the LocalNotificationManager service

            NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);


            //to post your notification to the notification bar

            mNotificationManager.notify(3730, mBuilder.build()); // (int) System.currentTimeMillis() set instead of id. if at a time more notification require

        }



public static String createNotificationChannel(Context context) {


        // NotificationChannels are required for Notifications on O (API 26) and above.

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {


            // The id of the channel.

            String channelId = "Channel_id";


            // The user-visible name of the channel.

            CharSequence channelName = "Application_name";

            // The user-visible description of the channel.

            String channelDescription = "Application_name Alert";

            int channelImportance = NotificationManager.IMPORTANCE_DEFAULT;

            boolean channelEnableVibrate = true;

//            int channelLockscreenVisibility = Notification.;


            // Initializes NotificationChannel.

            NotificationChannel notificationChannel = new NotificationChannel(channelId, channelName, channelImportance);

            notificationChannel.setDescription(channelDescription);

            notificationChannel.enableVibration(channelEnableVibrate);

//            notificationChannel.setLockscreenVisibility(channelLockscreenVisibility);


            // Adds NotificationChannel to system. Attempting to create an existing notification

            // channel with its original values performs no operation, so it's safe to perform the

            // below sequence.

            NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

            assert notificationManager != null;

            notificationManager.createNotificationChannel(notificationChannel);


            return channelId;

        } else {

            // Returns null for pre-O (26) devices.

            return null;

        }

    }


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信