Android Notification 以及 通知铃音使用

Android Notification 以及 通知铃音使用

上一篇文章讲了手机震动的使用.

本篇继续讲解铃音的使用,并且在讲下通知消息的使用.

1:通知消息的使用

代码如下:

java 复制代码
    public static void notice(Context context) {
        try {
            NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle("Notification test")
                    .setContentText("This is a notification with LED lights")
                    .setContentInfo("This is a notification with LED lights")
                    .setDefaults(Notification.DEFAULT_LIGHTS)
                    .setPriority(Notification.PRIORITY_HIGH)
                    .setVibrate(new long[]{0, 1000, 500, 2000})
                    .setLights(Color.RED, 300, 200)// 设置LED灯光效果的颜色、亮起时长和熄灭时长
                    .setChannelId(context.getPackageName())
                    .setAutoCancel(true);

            NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
                NotificationChannel channel = new NotificationChannel(
                        context.getPackageName(),
                        "Notification msg2",
                        NotificationManager.IMPORTANCE_HIGH

                );
                // 设置通知出现时声音,默认通知是有声音的
                channel.setSound(null, null);
                channel.enableLights(true);
                channel.setLightColor(Color.RED);
                // 设置通知出现时的震动(如果 android 设备支持的话)
                channel.enableVibration(true);
                channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
                channel.setVibrationPattern(new long[]{0, 1000, 500, 2000});
                notificationManager.createNotificationChannel(channel);
            }
            new Handler().postDelayed(() -> {
//                    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
//                    @SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
//                            | PowerManager.ACQUIRE_CAUSES_WAKEUP
//                            | PowerManager.ON_AFTER_RELEASE,"MyWakeLock");
//                    wakeLock.acquire();
                notificationManager.notify(2014, builder.build());
            },2000);
        } catch (Throwable e) {
            Log.e(TAG, "noticeLED: ",e );
        }
    }

Android O以上需要实现NotificationChannel ,并通过createNotificationChannel 设置.

2: 通知铃音

java 复制代码
  public static void noticeVoice(Context context) {
        final MediaPlayer mp = new MediaPlayer();
        try {
            mp.setDataSource(context, RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_NOTIFICATION));
            mp.setLooping(false);
            mp.setAudioStreamType(getRingType(context));
            mp.prepare();
            mp.setOnCompletionListener(mp1 -> {
                mp1.release(); // 播放完毕后自动释放资源。
            });
            mp.start();
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }
    /**
     * 控制当前响铃类型
     */
    private static int getRingType(Context context) {
        try {
            AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            int current = audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION);
            switch (current) {
                case 0:
                    return AudioManager.STREAM_RING;
                default:
                    return AudioManager.STREAM_NOTIFICATION;
            }
        } catch (Throwable e) {
            Log.e(TAG, "getRingType: ", e);
        }
        return AudioManager.STREAM_NOTIFICATION;
    }
相关推荐
2501_916008891 小时前
苹果上架工具怎么选 不用 Mac 上架 App Store 的几种方案
android·macos·ios·小程序·uni-app·iphone·webview
jijihusong0063 小时前
KMP全栈开发教程:从Android到AI Agent
android·人工智能
_祝你今天愉快5 小时前
Android Binder 驱动 - 内核驱动层源码初探
android
stevenzqzq5 小时前
【无标题】
android
梦幻通灵6 小时前
Notepad++格式化Json两种方案【持续更新】
android·json·notepad++
1024+7 小时前
YOLO 转 RKNN 识别率降低调优操作手册(新手篇)
android·yolo·kotlin
木易 士心7 小时前
深度解析 Android 音频焦点处理与实战开发
android·音视频
祉猷并茂,雯华若锦8 小时前
Appium 3.x安卓APP企业级安装实战
android·appium
微露清风9 小时前
浅析 MySQL 索引
android·数据库·mysql
91刘仁德9 小时前
MySQL 数据类型详解
android·笔记·mysql·adb