如要建構處理音訊或影片的媒體應用程式,請務必使用 適當的通知和通知管道這個 確保通知具有以下實用功能:
- 設定通知優先順序
- 無法關閉
- 將音訊屬性用於鈴聲
使用 NotificationChannel.Builder
設定兩個通知管道:一個
以及正在撥打的電話。
internal companion object {
const val TELECOM_NOTIFICATION_ID = 200
const val TELECOM_NOTIFICATION_ACTION = "telecom_action"
const val TELECOM_NOTIFICATION_INCOMING_CHANNEL_ID = "telecom_incoming_channel"
const val TELECOM_NOTIFICATION_ONGOING_CHANNEL_ID = "telecom_ongoing_channel"
private val ringToneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)
}
為了在所有位置顯示通知,並允許裝置播放 鈴聲,將傳入通知管道的重要性設為高。
val incomingChannel = NotificationChannelCompat.Builder(
TELECOM_NOTIFICATION_INCOMING_CHANNEL_ID,
NotificationManagerCompat.IMPORTANCE_HIGH,
).setName("Incoming calls")
.setDescription("Handles the notifications when receiving a call")
.setVibrationEnabled(true).setSound(
ringToneUri,
AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setLegacyStreamType(AudioManager.STREAM_RING)
.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE).build(),
).build()
只有進行中的呼叫需要將重要性設為預設值。使用 啟用以下來電樣式,允許系統將來電通知設為 而且不可關閉
val ongoingChannel = NotificationChannelCompat.Builder(
TELECOM_NOTIFICATION_ONGOING_CHANNEL_ID,
NotificationManagerCompat.IMPORTANCE_DEFAULT,
)
.setName("Ongoing calls")
.setDescription("Displays the ongoing call notifications")
.build()
如要處理使用者裝置在通話期間鎖定的用途, 使用全螢幕通知顯示活動,讓使用者能夠: 。
// on the notification
val contentIntent = PendingIntent.getActivity(
/* context = */ context,
/* requestCode = */ 0,
/* intent = */ Intent(context, TelecomCallActivity::class.java),
/* flags = */ PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE,
)
如需相關操作說明,請參閱「為來電應用程式建立來電樣式通知」一文
使用 CallStyle
區分來電通知與其他類型的
通知。