Android 发送通知提示声音

引言

在 Android 应用开发中,通知是一种用来向用户展示重要信息的方式。除了显示文本和图标之外,通知还可以通过声音来提示用户。本文将介绍如何在 Android 应用中发送通知并播放提示声音。

1. 创建通知渠道

Android 8.0(API 级别 26)及以上的系统引入了通知渠道的概念。通知渠道允许用户对不同类型的通知进行分类并进行个性化设置。我们首先需要创建一个通知渠道。

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.media.AudioAttributes;
import android.media.RingtoneManager;

public class NotificationHelper {
    private static final String CHANNEL_ID = "my_channel_id";

    public static void createNotificationChannel(Context context) {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            CharSequence name = "My Channel";
            String description = "My Channel Description";
            int importance = NotificationManager.IMPORTANCE_HIGH;

            AudioAttributes attributes = new AudioAttributes.Builder()
                .setUsage(AudioAttributes.USAGE_NOTIFICATION)
                .build();

            NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
            channel.setDescription(description);
            channel.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION), attributes);

            NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.createNotificationChannel(channel);
        }
    }
}

以上代码创建了一个名称为 "My Channel" 的通知渠道,并设置了高优先级。我们还为通知渠道设置了默认的提示声音。

2. 发送通知

在创建通知渠道后,我们可以使用 NotificationCompat.Builder 类创建并发送通知。

import android.app.NotificationManager;
import android.content.Context;
import android.support.v4.app.NotificationCompat;

public class MyNotification {
    private static final int NOTIFICATION_ID = 1;

    public static void sendNotification(Context context, String title, String message) {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
            .setSmallIcon(R.drawable.ic_notification)
            .setContentTitle(title)
            .setContentText(message)
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setAutoCancel(true);

        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(NOTIFICATION_ID, builder.build());
    }
}

以上代码创建了一个包含标题和内容的通知,并设置了高优先级。我们可以通过调用 sendNotification 方法发送通知。

3. 播放提示声音

要为通知播放提示声音,我们需要在通知构建器中设置声音属性。

import android.app.NotificationManager;
import android.content.Context;
import android.media.AudioAttributes;
import android.media.RingtoneManager;
import android.support.v4.app.NotificationCompat;

public class MyNotification {
    private static final int NOTIFICATION_ID = 1;

    public static void sendNotification(Context context, String title, String message) {
        // ... 创建通知构建器代码 ...

        AudioAttributes attributes = new AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_NOTIFICATION)
            .build();

        builder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION), attributes);

        // ... 发送通知代码 ...
    }
}

以上代码为通知构建器设置了默认的提示声音。

4. 总结

通过以上步骤,我们可以在 Android 应用中发送通知并播放提示声音。首先,我们需要创建一个通知渠道并设置其声音属性。然后,我们使用通知构建器创建并发送通知。通过设置构建器的声音属性,我们可以为通知播放自定义声音。

希望本文对您了解 Android 发送通知提示声音有所帮助。如果您想了解更多关于 Android 通知的内容,请参考官方文档。

类图

classDiagram
    class NotificationHelper {
        +createNotificationChannel(Context context)
    }
    class MyNotification {
        +sendNotification(Context context, String title, String message)
    }

    NotificationHelper ..> MyNotification : creates

参考链接

  • [Android 官方文档 - Notifications](