I'm looking for a solution to observe what the app is currently playing. At minimum I would need to know what URI is being used to play Media and what is current playback position.
We are giving developers API with media content (MP3/HLS files) and to give them the best experience we are asking them to send various events to our API. Based on those events we can prepare better content for their users. We would like to ease the process of tracking events by implementing library that will be responsible for tracking those events. To do it we need to observe/query what their app is currently playing and what is a playback position. That's why I'm looking for a solution that will let me do this without caring too much what kind of player app is using (MediaPlayer, ExoPlayer or any other solution).
Is there any tool that will let me check those informations?
I'm trying to create a Visualizer with the Visualizer Class. The documentation says to use "0" as session id to get the audio output, however this seems to be deprecated and only results in an error.
I searched for ways to get the currently active AudioSession ID's but can't find anything that remotely helps me out. All samples only provide info on how to do it with playing music by yourself, but I want to use it for visualizing Spotify and other music or videos being played, so that's not an option for me.
I know that it IS possible. There are apps like HueManic that work completely fine. I just can't find any information on how it would be still possible.
I'm looking into creating an android app and wanted to make something that could show what people around the user are listening to. Is there any way to do this? I've been looking at the Spotify SDK and it dosen't appear to be possible, but I wanted to confirm.
Sarah Markers,
To identify the music being played around you, I would suggest you to read this article http://www.royvanrijn.com/blog/2010/06/creating-shazam-in-java/ .
I could not find anything on Spotify SDK which can help you with determining the music.
Im wondering if is possible to do this. Anywhere on my view I want to see a list of videos (from my youtube channel or just a playlist created by me), this way the user can click in any of them and using the youtube player API would be visualizated in the bottom of the screen for example.
Is this possible to do and if so, how complicated could be? (im really a beginner in android, not in programming). Ive read about Youtube DATA APi but it seems is used with the youtube app so its not what I want to do.
Thanks a lot.
Editing 21/05/2014
Adding information just in case someone in the future is interested in doing this (after one year, but better later than never). I uploaded an exemplary app that shows how to do this. It can be found in the following GitHub repository: https://github.com/Rafagf/HealthTube
Have you taken a look at the examples in the documentation? That's the best place to get started. I don't think anyone is going to be able to provide you with more complete code than what's available there.
I am trying to develop an app/widget for which I need display the currently playing information (metadata) of an audio track.
This would be trivial if I was also writing the MediaPlayer myself, as I could simply access the MediaStore and bring up the info, however, I do not wish to compete with the plethora of existing apps on this front. I want to be able to pull this inforrmation from the builtin audio player or other app such as SongBird or PowerAMP.
I should be able to do this with PowerAMP using their [API][1], but have, but I really want a solution that works for the stock android player and others too.
I was hoping to be able to grab the information from the AudioManager, but that seems only to allow me to query the current state (Music is playing et) and I can set my intent to play music, etc... But no access to metadata from someone elses app.
So my thought is this cannot be done easily. My thoughts are that I could maybe access this info from the info bar at the top as the now playing info is printed up there. It might be an ugly hack though...
For a moment I got excited about the RemoteControlClient.MetadataEditor from 4.0, but then I figured out that it was for writing that information to a stream that can be sent to the physical remote, rather than allowing you to create a software remote. Damn!
Does anyone have any ideas?
[1]: http://forum.powerampapp.com/index.php?/topic/1034-updated-for-20-poweramp-api-lib-and-sample-applications/ Power AMP
I've written a guide for implementing this.
Basically, you need to have access to hidden classes of android.jar library. Then you have to extend IRemoteControlDisplay$Stub class, and implement it's methods.
After that you register your RemoteControlDisplay with hidden method - AudioManager#registerRemoteControlDisplay.
There is just way too much to explain in one answer, so read my guide on XDA-Developers.
Here is the link:
http://forum.xda-developers.com/showpost.php?p=44513199
Also, I'm currently working on a library which will simplify the process of implementing you remote media controls.
I should be able to do this with PowerAMP using their [API][1], but have, but I really want a solution that works for the stock android player and others too.
There is no documented and supported API for the AOSP Music app or the Google Play Music app, AFAIK. They certainly are not in the Android SDK.
I am not aware of an Android ecosystem standard for media players exposing this information, let alone a roster of apps that support such a standard. You are welcome to work with the developers of such apps and encourage them to create and adopt a standard.
My thoughts are that I could maybe access this info from the info bar at the top as the now playing info is printed up there.
It is not possible to spy on other applications' Notifications, for obvious privacy and security reasons.
For a moment I got excited about the RemoteControlClient.MetadataEditor from 4.0, but then I figured out that it was for writing that information to a stream that can be sent to the physical remote, rather than allowing you to create a software remote. Damn!
Surely there's a way to access the Remote Control Client metadata on Android 4.0, because the lock screen is able to access it when media is playing.
I'm not a developer at all, but I've tried to do a bit of poking around in the AOKP sources and this is my limited understanding of how it works. At least in AOKP (and presumably AOSP as well, then), it appears that the lockscreen uses core/java/com/android/internal/widget/TransportControlView.java to draw the music control widget on the lockscreen, which in turn uses media/java/android/media/IRemoteControlDisplay.aidl for data retrieval. At the very least, it may be useful to poke around in TransportControlView.java to see if you can figure out how the lockscreen widget works.