安卓Notification通知框架(使用方法在下方)

小白大学生第一次发布文章,希望大佬批评指正qwq.

在自己的包里创建 NotificationHelper.java 文件,将以下代码复制到该文件。注意:代码的第一行改成自己的包

//实现一个通知的功能
//返回值:通知id(notificationId)
//使用方法:
// 在Activity内使用NotificationHelper notificationHelper = new NotificationHelper(this)实例化此类
//需要this参数
//必要权限:<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
//示例   1、 自定义渠道:  NotificationHelper notificationHelper2 = new NotificationHelper(this,"渠道2","描述2","channel_2");
//        默认渠道:  NotificationHelper notificationHelperDefault = new NotificationHelper(this);
//        或使用        //notificationHelper.setIntent(intent);
//      2、 发送通知:(后两个可选参数) notificationHelper.sendNotification("标题2","通知10",-1,intent);
package com.example.notfication;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;

import androidx.core.app.NotificationCompat;

public class NotificationHelper {
    private static String CHANNEL_ID = "channelId1";
    private final NotificationManager notificationManager;
    private Context context;
    private PendingIntent m_PendingIntent;
    private Intent m_intent;
    private static int defaultNotificationId = Integer.MIN_VALUE;

    //设置intent来确认需要跳转的页面
    public void setIntent(Intent intent) {
        this.m_intent = intent;
        m_PendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
    }

    //如不创建渠道则使用默认渠道
    public NotificationHelper(Context context){
        this(context, "默认渠道", "这里是默认的通知渠道", "default_channel_id");
    }


    public NotificationHelper(Context context, String channelNameIn, String channelDescriptionIn, String channelIdIn) {
        CHANNEL_ID=channelIdIn;
        this.context = context;
        this.notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        createNotificationChannel(channelNameIn,channelDescriptionIn);
    }


    //若不指定id则使用自增id
    public void sendNotification(String title, String text){
        sendNotification(title, text,defaultNotificationId,null);
        defaultNotificationId++;
    };

    //指定id则使用以下方法
    public void  sendNotification(String title, String text,int notficationId,Intent intent) {
        if(notficationId<0){
            notficationId=defaultNotificationId;
            if(defaultNotificationId>=-1){
                defaultNotificationId = Integer.MIN_VALUE;
            }else{
                defaultNotificationId++;
            }
        }
        PendingIntent l_pendingIntent = null;
        if(intent != null){
            l_pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            Notification.Builder builder = null;
            builder = new Notification.Builder(context, CHANNEL_ID)
                    .setSmallIcon(R.drawable.notification_icon)
                    .setContentTitle(title)
                    .setContentText(text);
            //当pendingIntent不会空值时才设置
            if (m_PendingIntent != null) {
                builder.setContentIntent(m_PendingIntent);
            }
            if (l_pendingIntent != null) {
                builder.setContentIntent(l_pendingIntent);
            }
            builder.setAutoCancel(true);
            NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.notify(notficationId, builder.build());//如出现报错则位声明权限

        }else{          //若小于Android8.0则执行以下代码
            NotificationCompat.Builder builder = null;
            builder = new NotificationCompat.Builder(context)
                    .setSmallIcon(R.drawable.notification_icon)
                    .setContentTitle(title)
                    .setContentText(text);
            NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.notify(notficationId, builder.build());//如出现报错则位声明权限
        }
    }
//创建通知渠道
    private void createNotificationChannel(String channelNameIn,String channelDescriptionIn) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            CharSequence channelName = channelNameIn;
            String channelDescription = channelDescriptionIn;
            int importance = NotificationManager.IMPORTANCE_DEFAULT;
            NotificationChannel channel = new NotificationChannel(CHANNEL_ID, channelName, importance);
            channel.setDescription(channelDescription);
            channel.enableLights(true);
            channel.setLightColor(Color.RED);
            notificationManager.createNotificationChannel(channel);
        }
    }
}

使用方法:

在 MianActivity 类的 onCreate 方法中直接实例化此类,使用:

NotificationHelper notificationHelper = new NotificationHelper(this)

下一步在代码中使用notificationHelper类的方法使用

 notificationText.sendNotification("通知标题","通知文本",1,intent);

发送通知,sendNotification的四个参数为

参数名称参数类型是否可选
通知标题String必填
通知文本String必填
通知idint可选
intentIntent可选

其中,intent为点击通知后跳转的Activity。
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Android中,可以使用TextToSpeech(TTS)引擎将文字转换为语音。要在Notification发送通知使用TTS读出通知内容,可以使用以下步骤: 1. 在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> ``` 2. 在build.gradle文件中添加以下依赖项: ```groovy dependencies { implementation 'com.android.support:support-v4:28.0.0' implementation 'com.google.android.gms:play-services:12.0.1' } ``` 3. 在Notification发送通知时,调用TextToSpeech引擎将通知内容转换为语音,例如: ```java NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.notification_icon) .setContentTitle("My notification") .setContentText("Hello World!") .setPriority(NotificationCompat.PRIORITY_HIGH); NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(notificationId, builder.build()); TextToSpeech tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { tts.setLanguage(Locale.getDefault()); tts.speak("Hello World!", TextToSpeech.QUEUE_ADD, null); } } }); ``` 这将发送一个通知并将“Hello World!”转换为语音。请注意,上述代码只是示例,您需要根据您的需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值