<div dir="ltr">Thanks for your insights. I made the following changes:<br><br>* If the media type isn't audio, the method is aborted.<br>* It's no longer using the Util methods, as Thomas recommended.<div>* The method doesn't require a Context argument anymore, since the service itself is a Context.</div><div><br></div><div>As the developer of a GPL app that scrobbles songs (QuickLyric on Github), I assure you that the broadcast should really be sent no matter what, even if all fields are null. It's how all music players do it.<br><br>Here's the updated patch:</div><div><br></div><div><div>From 23d3b82a79c5fef49f9d4e561d1bb028779f0401 Mon Sep 17 00:00:00 2001</div><div>From: Guillaume Hachez <<a href="mailto:H.guillaume@gmail.com">H.guillaume@gmail.com</a>></div><div>Date: Wed, 8 Apr 2015 20:01:49 +0200</div><div>Subject: [PATCH 1/1] Implement Scrobbling (close #11904)</div><div><br></div><div>---</div><div> .../src/org/videolan/vlc/audio/AudioService.java   | 24 ++++++++++++++++++++++</div><div> 1 file changed, 24 insertions(+)</div><div><br></div><div>diff --git a/vlc-android/src/org/videolan/vlc/audio/AudioService.java b/vlc-android/src/org/videolan/vlc/audio/AudioService.java</div><div>index 090ef6f..83e6c48 100644</div><div>--- a/vlc-android/src/org/videolan/vlc/audio/AudioService.java</div><div>+++ b/vlc-android/src/org/videolan/vlc/audio/AudioService.java</div><div>@@ -819,6 +819,7 @@ public class AudioService extends Service {</div><div>         mHandler.removeMessages(SHOW_PROGRESS);</div><div>         // hideNotification(); <-- see event handler</div><div>         mLibVLC.pause();</div><div>+        broadcastMetadata();</div><div>     }</div><div> </div><div>     private void play() {</div><div>@@ -828,6 +829,7 @@ public class AudioService extends Service {</div><div>             mHandler.sendEmptyMessage(SHOW_PROGRESS);</div><div>             showNotification();</div><div>             updateWidget(this);</div><div>+            broadcastMetadata();</div><div>         }</div><div>     }</div><div> </div><div>@@ -840,6 +842,7 @@ public class AudioService extends Service {</div><div>         mPrevious.clear();</div><div>         mHandler.removeMessages(SHOW_PROGRESS);</div><div>         hideNotification();</div><div>+        broadcastMetadata();</div><div>         executeUpdate();</div><div>         executeUpdateProgress();</div><div>         changeAudioFocus(false);</div><div>@@ -928,6 +931,7 @@ public class AudioService extends Service {</div><div>         setUpRemoteControlClient();</div><div>         showNotification();</div><div>         updateWidget(this);</div><div>+        broadcastMetadata();</div><div>         updateRemoteControlClientMetadata();</div><div>         saveCurrentMedia();</div><div> </div><div>@@ -991,6 +995,7 @@ public class AudioService extends Service {</div><div>         setUpRemoteControlClient();</div><div>         showNotification();</div><div>         updateWidget(this);</div><div>+        broadcastMetadata();</div><div>         updateRemoteControlClientMetadata();</div><div>         saveCurrentMedia();</div><div> </div><div>@@ -1227,6 +1232,7 @@ public class AudioService extends Service {</div><div>             setUpRemoteControlClient();</div><div>             showNotification();</div><div>             updateWidget(AudioService.this);</div><div>+            broadcastMetadata();</div><div>             updateRemoteControlClientMetadata();</div><div>             AudioService.this.saveMediaList();</div><div>             AudioService.this.saveCurrentMedia();</div><div>@@ -1258,6 +1264,7 @@ public class AudioService extends Service {</div><div>             setUpRemoteControlClient();</div><div>             showNotification();</div><div>             updateWidget(AudioService.this);</div><div>+            broadcastMetadata();</div><div>             updateRemoteControlClientMetadata();</div><div>             determinePrevAndNextIndices();</div><div>         }</div><div>@@ -1478,6 +1485,23 @@ public class AudioService extends Service {</div><div>         sendBroadcast(i);</div><div>     }</div><div> </div><div>+    private void broadcastMetadata() {</div><div>+        MediaWrapper media = getCurrentMedia();</div><div>+        if (media == null || media.getType() != MediaWrapper.TYPE_AUDIO)</div><div>+            return;</div><div>+</div><div>+        boolean playing = mLibVLC.isPlaying();</div><div>+</div><div>+        Intent broadcast = new Intent("com.android.music.metachanged");</div><div>+        broadcast.putExtra("track", media.getTitle());</div><div>+        broadcast.putExtra("artist", media.getArtist());</div><div>+        broadcast.putExtra("album", media.getAlbum());</div><div>+        broadcast.putExtra("duration", media.getLength());</div><div>+        broadcast.putExtra("playing", playing);</div><div>+</div><div>+        sendBroadcast(broadcast);</div><div>+    }</div><div>+</div><div>     private synchronized void loadLastPlaylist() {</div><div>         SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);</div><div>         String currentMedia = prefs.getString("current_media", "");</div><div>-- </div><div>2.3.5</div></div><div><br></div></div><br><div class="gmail_quote">On Thu, Apr 9, 2015 at 9:08 AM Jean-Baptiste Kempf <<a href="mailto:jb@videolan.org">jb@videolan.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 08 Apr, Guillaume wrote :<br>
> This is AudioService.java. I just assumed it was only used for audio media<br>
> files. Is this wrong? In my testing, it hasn't triggered when playing video<br>
> files.<br>
<br>
Yes, this is a wrong assumption. It will be moved to play everything.<br>
<br>
With my kindest regards,<br>
<br>
--<br>
Jean-Baptiste Kempf<br>
<a href="http://www.jbkempf.com/" target="_blank">http://www.jbkempf.com/</a> - +33 672 704 734<br>
Sent from my Electronic Device<br>
______________________________<u></u>_________________<br>
vlc-devel mailing list<br>
To unsubscribe or modify your subscription options:<br>
<a href="https://mailman.videolan.org/listinfo/vlc-devel" target="_blank">https://mailman.videolan.org/<u></u>listinfo/vlc-devel</a><br>
</blockquote></div>