Учебное пособие по выполнению практических заданий по курсу "Разработка облачных и мобильных приложений на платформе Google Android"


this ;  Notification notification =  new



Pdf көрінісі
бет26/35
Дата12.10.2023
өлшемі4.1 Mb.
#480634
түріУчебное пособие
1   ...   22   23   24   25   26   27   28   29   ...   35
AndroidStudioMeth (1)

this

Notification notification = 
new 
Notification.Builder(context) 
.setContentTitle(
"Hi from Alex"

.setContentText(
"Hey, listen!"

.setTicker(
"new notification!"

.setSmallIcon(android.R.drawable.
ic_dialog_alert

.setSound(Uri.parse(
"android.resource://"
+getPackageName()+
"/"
+R
.raw.
al_heylisten
)) 
.build(); 
NotificationManager notificationManager = (NotificationManager) 
getSystemService(Context.
NOTIFICATION_SERVICE
); 
notificationManager.notify(
0
, notification); 
Здесь мы устанавливаем заголовок (setContentTitle) и текст 
(setContentText) для уведомления, а также небольшой текст, выводящийся в 
небульшую панель уведомлений ("шторку") рядом с иконкой (setTicker, см. 
рисунок 47), иконку и звуковой файл, который будет воспроизводиться при 
получении уведомления. Звуковой файл нужно поместить в папку res/raw, 
однако для начала её стоит создать. Нажмите правой кнопкой мыши по папке 
res и создайте Android resource directory. Resource type выберите raw и 
нажмите OK. Обратите внимание, что имя звукового файла не может 
начинаться с цифры. Не забудьте добавить в приложение опциональное 


74 
меню с пунктом о программе, который открывает диалоговое окно с вашими 
ФИО, см. предыдущие 2 задания. Теперь всё готово, можно запускать 
приложение и нажимать на кнопку, после чего в панели уведомлений 
появится уведомление от приложения, как показано на рисунках 47-48.
Рисунок 47 – Отображение краткого 
уведомления в панели уведомлений
Рисунок 48 – Отображение 
уведомления в панели уведомлений
Для версий Android, начиная с Oreo (Android 8, или API 26) нужен 
другой код. Дело в том, что начиная с Oreo появились так называемые 
каналы, которые пользователь приложения может настроить самостоятельно, 
перейдя в настройки приложения и открыв пункт уведомлений (Notifications). 
Поэтому, если у Вас приложение только для Oreo и выше, в коде нужно 
создавать и настраивать канал уведомлений NotificationChannel. Если в 


75 
gradle-файле приложения заданы minSdkVersion и targetSdkVersion больше 
либо равные 26 (Oreo), предусматривать проверку текущей версии Android на 
устройстве не надо – просто надо взять новый код с поддержкой каналов. 
Однако часто бывает, что приложение должно поддерживать и старые 
версии, и, например, minSdkVersion=16 при targetSdkVersion=28. Тогда в 
коде нужно делать проверку версии Android на устройстве, и для версии, 
начиная с Oreo (O), работать с каналами, как показано в коде ниже: 
Context context 

MainActivity
.
this

NotificationChannel 
newnotchan= 
null

if 
(
android.os.Build
.
VERSION
.
SDK_INT 
>= 
android.os.Build
.
VERSION_CODES
.
O
) { 
newnotchan= 
new 
NotificationChannel(
"mychannel1"
,
"mychannel"
,
NotificationManager
.
IMPORTANCE_HIGH
); 
AudioAttributes audioAttributes 

new 
AudioAttributes
.Builder() 
.setContentType(
AudioAttributes
.
CONTENT_TYPE_MUSIC

.setUsage(
AudioAttributes
.
USAGE_MEDIA

.build(); 
newnotchan.setSound(
Uri
.parse(
ContentResolver
.
SCHEME_ANDROID_RES
OURCE
+
"://"
+getPackageName()+
"/"
+
R
.
raw
.
al_heylisten
), 
audioAttributes
); 

NotificationManager notificationManager 
= (
NotificationManager

getApplicationContext().getSystemService(
Context
.
NOTIFICATION_SE
RVICE
); 
if 
(
Build
.
VERSION
.
SDK_INT 
>= 
Build
.
VERSION_CODES
.
O
) { 
notificationManager
.createNotificationChannel(newnotchan); 

Notification 
notification = 
null

if 
(
android.os.Build
.
VERSION
.
SDK_INT 
>= 
android.os.Build
.
VERSION_CODES
.
O
) { 
notification = 
new 
Notification
.Builder(
context
,
"mychannel1"

.setContentTitle(
"Hi from Alex"

.setContentText(
"Hey, listen!"

.setTicker(
"new notification!"

.setChannelId(
"mychannel1"

.setSmallIcon(
android.R
.
drawable
.
ic_dialog_alert

.setOngoing(
true

.build(); 



76 
notificationManager
.notify(
0
, notification); 
Обратите внимание – для того, чтобы слышать именно тот звук, 
который расположен в папке raw, нужно сконфигурировать для канала так 
называемые AudioAttributes, а метод setSound, в котором нужны путь к файлу 
и эти аудиоатрибуты, затем использовать для канала, а не для уведомления. 
В приведённом выше коде отсутствует часть для версий Android ниже Oreo в 
конструкторе else, но она есть в начале описания этой лабораторной работы, 
и её в этот конструктор не составляет труда добавить, таким образом, сделав 
это приложение универсальным.


Достарыңызбен бөлісу:
1   ...   22   23   24   25   26   27   28   29   ...   35




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет