Head-up notification
Android 5.0(API 레벨 21)에서는 알림을 작은 부동 창에 나타낼 수 있습니다 (다른 말로 헤드업 알림이라고 부릅니다). 이것은 기기가 활성 상태일 때(즉, 기기가 잠금 해제 상태이며 화면에 켜져 있는 경우) 해당됩니다. 이와 같은 알림은 외견상 일반적인 알림의 소형 형태와 비슷해 보이지만, 해드업 알림에서는 작업 버튼도 표시한다는 점이 다릅니다. 사용자는 현재 앱을 떠나지 않고도 헤드업 알림에 조치를 취하거나 이를 무시할 수 있습니다.
헤드업 알림을 트리거할 수 있는 조건의 예시를 몇 가지 소개하면 다음과 같습니다.
- 사용자 액티비티가 전체 화면 모드이거나(앱이 fullScreenIntent를 사용할 경우)
- 알림의 우선 순위(Priority High)가 높고 벨소리나 진동을 사용할 경우
Notification setSound() Issue
android에 notification sound를 적용하려다보면 적용되지 않는 경우가 있다.
아무래도 Notification관리는 systemui앱에서 관리 하는것 같다.(추정)
7.0 Nougat 버전 이상부터는 애플리케이션간 파일 공유가 불가하므로
https://developer.android.com/reference/android/support/v4/content/FileProvider.html
위의 링크를 따라 FileProvider를 통해 사운드파일을 com.android.systemui에서 참조할 수 있도록 설정한뒤 context.grantUriPermission을 통해서 파일에 대한 접근을 허가해주어야 한다.
예시)
context.grantUriPermission("com.android.systemui", uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
그래도 소리가 안난다면 아래 링크를 참조.
https://stackoverflow.com/questions/39359465/android-7-0-notification-sound-from-file-provider-uri-not-playing
실제 프로젝트에서는
다음과 같이 적용하였다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { Uri uri = VivarFileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, file); context.grantUriPermission("com.android.systemui", uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); return uri; } else { return Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.rington); }
0개의 댓글