From ef980355c89787699b0ee43f448839d6753b7256 Mon Sep 17 00:00:00 2001 From: Antoine Cellerier Date: Mon, 24 Jan 2011 17:10:56 +0000 Subject: Move android notification display format logic to java code (no functional change, this is used by FS #11902). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29132 a1c6a512-1295-4272-9138-f99709370657 --- .../org/rockbox/Helper/RunForegroundManager.java | 10 ++++-- apps/hosted/notification.c | 36 ++++++++-------------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/android/src/org/rockbox/Helper/RunForegroundManager.java b/android/src/org/rockbox/Helper/RunForegroundManager.java index 513089ff9f..197c51a567 100644 --- a/android/src/org/rockbox/Helper/RunForegroundManager.java +++ b/android/src/org/rockbox/Helper/RunForegroundManager.java @@ -5,6 +5,7 @@ import java.lang.reflect.Method; import org.rockbox.R; import org.rockbox.RockboxActivity; +import org.rockbox.RockboxWidgetProvider; import android.app.Notification; import android.app.NotificationManager; @@ -82,12 +83,15 @@ public class RunForegroundManager api.stopForeground(); } - public void updateNotification(String title, String content, String ticker) + public void updateNotification(String title, String artist, String album) { RemoteViews views = mNotification.contentView; views.setTextViewText(R.id.title, title); - views.setTextViewText(R.id.content, content); - mNotification.tickerText = ticker; + views.setTextViewText(R.id.content, artist+"\n"+album); + if (artist.equals("")) + mNotification.tickerText = title; + else + mNotification.tickerText = title+" - "+artist; mNM.notify(R.string.notification, mNotification); } diff --git a/apps/hosted/notification.c b/apps/hosted/notification.c index 13c88eca4b..3c623aad1d 100644 --- a/apps/hosted/notification.c +++ b/apps/hosted/notification.c @@ -32,7 +32,7 @@ extern jobject RockboxService_instance; static jmethodID updateNotification; static jobject NotificationManager_instance; -static jstring headline, content, ticker; +static jstring title, artist, album; #define NZV(a) (a && a[0]) @@ -45,37 +45,24 @@ static void track_changed_callback(void *param) if (id3) { /* passing NULL to DeleteLocalRef() is OK */ - e->DeleteLocalRef(env_ptr, headline); - e->DeleteLocalRef(env_ptr, content); - e->DeleteLocalRef(env_ptr, ticker); + e->DeleteLocalRef(env_ptr, title); + e->DeleteLocalRef(env_ptr, artist); + e->DeleteLocalRef(env_ptr, album); char buf[200]; - const char * title = id3->title; - if (!title) + const char * ptitle = id3->title; + if (!ptitle) { /* pass the filename as title if id3 info isn't available */ - title = + ptitle = strip_extension(buf, sizeof(buf), strrchr(id3->path,'/') + 1); } - /* do text for the notification area in the scrolled-down statusbar */ - headline = e->NewStringUTF(env_ptr, title); + title = e->NewStringUTF(env_ptr, ptitle); + artist = e->NewStringUTF(env_ptr, id3->artist ?: ""); + album = e->NewStringUTF(env_ptr, id3->album ?: ""); - /* add a \n so that android does split into two lines */ - snprintf(buf, sizeof(buf), "%s\n%s", id3->artist ?: "", id3->album ?: ""); - content = e->NewStringUTF(env_ptr, buf); - - /* now do the text for the notification in the statusbar itself */ - if (NZV(id3->artist)) - { /* title - artist */ - snprintf(buf, sizeof(buf), "%s - %s", title, id3->artist); - ticker = e->NewStringUTF(env_ptr, buf); - } - else - { /* title */ - ticker = e->NewStringUTF(env_ptr, title); - } e->CallVoidMethod(env_ptr, NotificationManager_instance, - updateNotification, headline, content, ticker); + updateNotification, title, artist, album); } } @@ -92,5 +79,6 @@ void notification_init(void) "(Ljava/lang/String;" "Ljava/lang/String;" "Ljava/lang/String;)V"); + add_event(PLAYBACK_EVENT_TRACK_CHANGE, false, track_changed_callback); } -- cgit