o 安卓通知声音不播放

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


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



呼唤远方
浏览 84回答 2
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);    }

杨魅力

试试这个,它将为你工作。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;        }    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java