Source code

  • Source code for Android's source code is available under the terms of the GNU General Public License version 3. The source code can be downloaded from our Github repository.

    Building the source requires a API key, and streaming radio using your key will require a paid subscription.

    For more information / help with building the source, see the github wiki or join us on IRC in #android on

  • Thanks !

  • hi
    i want to compile the source code.I have downloaded this tar c99koder-lastfm-android-3b165f0.tar.gz
    But this application is not getting compiled on android emulator.
    It is giving erros like "R cannot be resolved" .
    The gen folder is empty.
    Can you please help me compiling this applcation.
    I will be really gratefu to you.

    • Monban said...
    • User
    • 21 Jun 2010, 15:23
    I notice you require a paid account to stream music using a client you've built from source code, does a paid subscription give one any kind of priority in streaming? I am looking for a workaround to the "playback stops after a few songs" bug.

  • That's correct, third party API keys require a paid subscription to stream. Our streamers don't prioritize subscribers over non-subscribers, we have enough capacity to stream to all users equally.

  • android 1.6

    Hey c99koder,
    is a tutorial existing for coding for android 1.6? if i see this right, its for 2.2 only?

  • Our app runs on Android 1.5 and up, however it requires the Android 2.2 SDK to build.

  • thanks (=
    sam helped me already yesterday in your android irc channel

  • Problem with building code

    I downloded file. I tried to build in android sdk but i am getting below errors and i am not able to solve . Please help me.

    org.eclipse.core.runtime.CoreException: Must specify a URI scheme:_android_LastFmAPI/src
    at org.eclipse.core.internal.filesystem.Policy.error(
    at org.eclipse.core.internal.filesystem.Policy.error(
    at org.eclipse.core.internal.filesystem.InternalFileSystemCore.getStore(
    at org.eclipse.core.filesystem.EFS.getStore(
    at org.eclipse.ui.internal.ide.dialogs.IDEResourceInfoUtils.getFileStore(
    at org.eclipse.ui.internal.ide.dialogs.IDEResourceInfoUtils.getFileInfo(
    at org.eclipse.ui.internal.ide.LinkedResourceDecorator.decorate(
    at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(
    at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$
    at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(
    at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(
    at org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(
    at org.eclipse.ui.internal.decorators.DecorationScheduler$

  • An error occurred while trying to play this track

    I used the latest version c99koder-lastfm-android-RELEASE_1.7.1-0-g73d8031.

    when i click the Top artists in last fm "An error occurred while trying to play this track. please try again shortly" this error will displayed. how can i listen to music?

    when i click the Radio tab in last fm "communication error:There was a problem communicating with the last fm servers.please try again shortly" this error will displayed. how can i listen to radio? pls help me. it's very urgent and important for me. thanks.........

  • The error message from the server should be displayed in the logcat output, but the most likely reason is that you're not a subscriber, and the radio API requires a subscription for 3rd party API keys. Also be aware that our radio API cannot be used in 3rd party mobile apps due to licensing agreements with the record labels.

  • Thanks for your reply. This is the logcat output errors. what can i do?

    12-21 10:51:23.131: ERROR/ActivityManager(58): ANR in (
    12-21 10:51:23.131: ERROR/ActivityManager(58): Reason: keyDispatchingTimedOut
    12-21 10:51:23.131: ERROR/ActivityManager(58): Load: 1.35 / 0.52 / 0.46
    12-21 10:51:23.131: ERROR/ActivityManager(58): CPU usage from 19408ms to 396ms ago:
    12-21 10:51:23.131: ERROR/ActivityManager(58): system_server: 29% = 18% user + 10% kernel / faults: 245 minor 12 major
    12-21 10:51:23.131: ERROR/ActivityManager(58): 20% = 11% user + 9% kernel / faults: 121 minor 5 major
    12-21 10:51:23.131: ERROR/ActivityManager(58): kswapd0: 19% = 0% user + 19% kernel
    12-21 10:51:23.131: ERROR/ActivityManager(58): ronsoft.openwnn: 11% = 9% user + 1% kernel / faults: 129 minor
    12-21 10:51:23.131: ERROR/ActivityManager(58): adbd: 5% = 0% user + 4% kernel / faults: 34 minor
    12-21 10:51:23.131: ERROR/ActivityManager(58): 2% = 1% user + 0% kernel / faults: 122 minor
    12-21 10:51:23.131: ERROR/ActivityManager(58): qemud: 0% = 0% user + 0% kernel
    12-21 10:51:23.131: ERROR/ActivityManager(58): events/0: 0% = 0% user + 0% kernel
    12-21 10:51:23.131: ERROR/ActivityManager(58): p.protectpronew: 0% = 0% user + 0% kernel / faults: 156 minor
    12-21 10:51:23.131: ERROR/ActivityManager(58): logcat: 0% = 0% user + 0% kernel
    12-21 10:51:23.131: ERROR/ActivityManager(58): com.svox.pico: 0% = 0% user + 0% kernel / faults: 1 minor
    12-21 10:51:23.131: ERROR/ActivityManager(58): logcat: 0% = 0% user + 0% kernel / faults: 1 minor
    12-21 10:51:23.131: ERROR/ActivityManager(58): +sh: 0% = 0% user + 0% kernel
    12-21 10:51:23.131: ERROR/ActivityManager(58): TOTAL: 93% = 41% user + 51% kernel + 0% irq + 0% softirq

    In error log shown this error:

    at$NonLibraryProjectOnlyFilter.accept(Unknown Source)
    at Source)
    at Source)
    at Source)
    at Source)
    at$0(Unknown Source)
    at$WidgetListener.modifyText(Unknown Source)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(
    at org.eclipse.swt.widgets.EventTable.sendEvent(
    at org.eclipse.swt.widgets.Widget.sendEvent(
    at org.eclipse.swt.widgets.Widget.sendEvent(
    at org.eclipse.swt.widgets.Widget.sendEvent(
    at org.eclipse.swt.widgets.Text.wmCommandChild(
    at org.eclipse.swt.widgets.Control.WM_COMMAND(
    at org.eclipse.swt.widgets.Control.windowProc(
    at org.eclipse.swt.widgets.Display.windowProc(
    at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
    at org.eclipse.swt.internal.win32.OS.CallWindowProc(
    at org.eclipse.swt.widgets.Text.callWindowProc(
    at org.eclipse.swt.widgets.Control.windowProc(
    at org.eclipse.swt.widgets.Text.windowProc(
    at org.eclipse.swt.widgets.Display.windowProc(
    at org.eclipse.swt.internal.win32.OS.SetWindowTextW(Native Method)
    at org.eclipse.swt.internal.win32.OS.SetWindowText(
    at org.eclipse.swt.widgets.Text.setText(
    at Source)
    at org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup.initializeFrom(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupWrapper.initializeFrom(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.displayInstanceTabs(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer$
    at org.eclipse.swt.custom.BusyIndicator.showWhile(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.inputChanged(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput0(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.handleLaunchConfigurationSelectionChanged(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog$3.selectionChanged(
    at org.eclipse.jface.viewers.StructuredViewer$
    at org.eclipse.ui.internal.JFaceUtil$
    at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(
    at org.eclipse.jface.viewers.StructuredViewer.setSelection(
    at org.eclipse.jface.viewers.TreeViewer.setSelection(
    at org.eclipse.jface.viewers.Viewer.setSelection(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.doInitialTreeSelection(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.initializeContent(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.createContents(
    at org.eclipse.jface.window.Window.create(
    at org.eclipse.jface.dialogs.Dialog.create(
    at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.create(
    at org.eclipse.debug.ui.DebugUITools$
    at org.eclipse.swt.custom.BusyIndicator.showWhile(
    at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(
    at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(
    at org.eclipse.jface.action.Action.runWithEvent(
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(
    at org.eclipse.jface.action.ActionContributionItem.access$2(
    at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(
    at org.eclipse.swt.widgets.EventTable.sendEvent(
    at org.eclipse.swt.widgets.Widget.sendEvent(
    at org.eclipse.swt.widgets.Display.runDeferredEvents(
    at org.eclipse.swt.widgets.Display.readAndDispatch(
    at org.eclipse.ui.internal.Workbench.runEventLoop(
    at org.eclipse.ui.internal.Workbench.runUI(
    at org.eclipse.ui.internal.Workbench.access$4(
    at org.eclipse.ui.internal.Workbench$
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(
    at org.eclipse.equinox.launcher.Main.basicRun(

  • None of that is relevant. Watch logcat when you get the error message after starting a station, it will output the error message sent by our servers.

  • This error is when i click the radio station it will appear in the logcat output:

    12-22 10:52:38.769: ERROR/ Tuning error: code 403 'Forbidden'

    These errors are when i click the profile->top artists->some tunes

    12-22 10:53:27.239: ERROR/ Tuning error: code 403 'Forbidden'
    12-22 10:53:38.477: ERROR/ImageDownloader(355): Failed to cache
    12-22 10:53:40.810: ERROR/ImageDownloader(355): Failed to cache

    pls help me sir..

  • As I stated previously, the radio API requires a paid subscription with 3rd party API keys. As your account does not have a paid subscription, you cannot tune a station with your API key.

  • OK i understand.
    thanks for your help and replies.
    thank you so much.

  • I'd also like to thank you because you have been a great help.

  • Thanks for the information regarding the android source . I am also using android and wants in my android operating system.

  • Really very helpful codes for Android users. I have still using Apple.

  • That is simply great work...I need this type of soource code ..Thanks for sharing..very helpful to me.

  • source code is the code which is scope to convert again in other code.

  • spam


    Edited by Babs_05 on 21 Mar 2013, 16:45
  • This source code really helps and also bit difficult find these days. As an android user I’m pretty happy to find this area. Nice sharing though!

  • self-promo


    Edited by Babs_05 on 17 Apr 2013, 15:54
  • Reg: A cool idea

    Is there a way to populate songs from my playlist to my android application? Thanks

Anonymous users may not post messages. Please log in or create an account to post in the forums.