Jsem z možnosti s Mediastyle Oznámení.
Zde je kód jako součást MediaBrowserServiceCompat :
private void showPlayingNotification() {
Context context = MyApplication.getInstance().getApplicationContext();
Intent resumeIntent = new Intent(context, MainActivity.class);
PendingIntent pendingResumeIntent = PendingIntent.getBroadcast(context, 12345, resumeIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Builder mBuilder = new Notification.Builder(this, NOTIFICATION_CHANNEL_ID);
mBuilder.addAction(R.drawable.ic_back30, "rw30", MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_REWIND))
.addAction(R.drawable.ic_player_pause, "Pause", MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_PLAY_PAUSE))
.addAction(R.drawable.ic_forward30, "ff30", MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_FAST_FORWARD))
.addAction(android.R.drawable.ic_menu_close_clear_cancel, "Stop", MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_STOP))
.setStyle(new Notification.MediaStyle()
.setShowActionsInCompactView(0,1,2)
.setMediaSession((MediaSession.Token) mMediaSessionCompat.getSessionToken().getToken()))
.setSmallIcon(R.drawable.ic_rss_icon)
.setLargeIcon(mMediaSessionCompat.getController().getMetadata().getDescription().getIconBitmap())
.setContentIntent(pendingResumeIntent);
startForeground(12345, mBuilder.build());
}
a tady je to, co jsem dostal : oznámení s mediasession
Mám progress bar v plné velikosti oznámení, ale tam jsou 2 problémy :
- Nechápu ikonu aplikace v horní liště
- Nechápu android O oznámení
Takže, když jsem mimo komentář
.setMediaSession((MediaSession.Token) mMediaSessionCompat.getSessionToken().getToken()))
Zde je to, co jsem dostal : oznámení bez médií zasedání
Teď jsem si ikonu aplikace v horní liště, ale 2 další problémy zůstávají :
- Nechápu, pokrok bar v plné velikosti oznámení
- Bez ohledu na to, co dělám .setColorized() nebo .setColor(), pozadí zůstává bílé.
Dělám to na Samsung A52, Android 11. Zde je gradle souboru :
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
defaultConfig {
applicationId "com.podplay"
minSdkVersion 30
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
poslední :
- žádný rozdíl, mám-li použít Oznámení nebo NotificationCompat
- žádné dodatečné nastavení v stavitel se zdá, aby se rozdíl (priorita, kategorie, ...)
- Snažil jsem se " to " jako Kontext (místo aplikace), ale marně.
Díky za jakékoliv vodítko ...