Material Design Music Player

Overview

Timber

Build Status

Material Design Music Player

This project is no longer in active development. Please refer to TimberX instead

Get it on Google Play

Get it on F-Droid

Screenshots

Features

  • Material design
  • Browse Songs, Albums, Artists
  • Create and edit playlists
  • 6 different now playing styles
  • Homescreen widgets
  • Browse device folders
  • Dark theme and UI customisability
  • Gestures for track switching
  • LastFM scrobble
  • Android Wear and Android Auto support
  • Playing queue in notification (Xposed)
  • Lyrics support
  • Chromecast support

Changelog

Changelog is available here

Credits

Donate

Paypal donation email- [email protected]

License

(c) 2015 Naman Dwivedi

This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this app. If not, see https://www.gnu.org/licenses/.

Comments
  • Pause and playback dont work on the earphones

    Pause and playback dont work on the earphones

    When I pause the song from my earphones it takes long to pause but eventually does but on trying to playback the song via the earphones it doesn't work.

    opened by DennisWanjiru 8
  • Problems regarding foreign languages.

    Problems regarding foreign languages.

    Some letters in foreign languages, such as æ, ø, and å, does not display correctly. This is a big concern for non-english speaking countries. Having the bug fix, or at least adding the option to "Force English" would be nice.

    opened by davidfrp 7
  • Provide pure floss build flavor

    Provide pure floss build flavor

    Crashlytics has recently been added (https://github.com/naman14/Timber/pull/217). This is non-free software and we at f-droid cannot build further versions. Could you provide a pure gradle vuld flavor that does not use non-free software?

    opened by ghost 7
  • Add support for XMediaNotificationTrackSelector

    Add support for XMediaNotificationTrackSelector

    More information to be found here. To use that feature, users also need to have the Xposed module and Xposed installed. This won't break the app for users without the module, of course.

    opened by Maxr1998 7
  • On fourth now playing style, 10+ minute times are not shown correctly

    On fourth now playing style, 10+ minute times are not shown correctly

    How to reproduce:

    1. Play 10 minute song
    2. Wait for song to go from 9:59 to 10:00

    Expected result: 10:00 is displayed in playing time Actual result: 0:00 is displayed in playing time

    Workaround: Background app and foreground it again, which causes the time to be displayed correctly

    opened by TheLastProject 7
  • Download missing album art from Lastfm

    Download missing album art from Lastfm

    If an album's art isn't found in the disk or something fails while loading it, this adds downloading it from Lastfm as a fallback. It does so only when listing the albums of an artist (ArtistMusicFragment) and when showing the album (AlbumDetailFragment).

    There are some more places where album art is displayed and could benefit from this change. As they are not as important, I've left them out to keep the pull request small. If this gets merged, I can work on them on another pull request. I would also like to implement downloading the images directly into the folder of the album instead of into the cache of the application.

    opened by rivaldi8 6
  • Folder View on Timber?

    Folder View on Timber?

    I heard you will release the Folder view options a year back? did you released the folder view version? Looking forward to have Folder View Option in Timber. ?

    opened by anburocky3 6
  • [Feature request] Home screen widget

    [Feature request] Home screen widget

    Is it possible to add a home screen widget? I liked the one from the HTC player with album art, prev, play / pause, and next (4x1). It's a nice alternative to the notification bar.

    opened by madsherlock 6
  • Publishing on F-Droid

    Publishing on F-Droid

    What should be done in order to publish this on F-Droid?

    Are there any proprietary dependencies? Is it possible to build without Google Play Services, in case it is used?

    opened by Calinou 5
  • Wrong song order in albums

    Wrong song order in albums

    I don't know why the order of the songs in the album are wrong, as you can see in the screenshots below, the order is totally random:

    Album 1 Album 2

    Is this a known issue? Thanks for the app, it's wonderful nonetheless :smile:

    opened by sleepyfran 5
  • Error:(58, 13) Failed to resolve: com.github.naman14:app-theme-engine:-SNAPSHOT

    Error:(58, 13) Failed to resolve: com.github.naman14:app-theme-engine:-SNAPSHOT

    After I loaded the project I got this error, only this one [Error:(58, 13) Failed to resolve: com.github.naman14:app-theme-engine:-SNAPSHOT]. Can you explain to me what's wrong?

    opened by 4sskick 4
  • Accessibility issues in the GUIs

    Accessibility issues in the GUIs

    Description: This issue aims to figure out some accessibility issues in the following GUI, and we appreciate if such issues could be fixed, which would bring great assistance for visually impaired users.

    image

    Accessibility Issues:

    1. The textviews of “专辑” and “艺术家”are relatively small in size.
    2. The button of “more” in each music lacks the content-description to support TalkBack and VoiceOver to read.

    Appreciate: Thanks for reading this bug report and I really hope you will repair these issues for people using this App conveniently.

    opened by Kazaf123 0
  • Find some crashes

    Find some crashes

    APK Version : 1.8 AndroidOS Version = 9.0 Description information: These crashes happened by accident when I was testing in different devices. I tried to reproduce them and found that they can't be reproduced, but they are real. I hope they can help you to debug.

    Crash 1: Long Msg: java.lang.IllegalStateException at android.os.Parcel.readException(Parcel.java:1692) at android.os.Parcel.readException(Parcel.java:1637) at com.naman14.timber.ITimberService$Stub$Proxy.getAudioSessionId(ITimberService.java:1195) at com.naman14.timber.MusicPlayer.getAudioSessionId(MusicPlayer.java:323) at com.naman14.timber.utils.TimberUtils.createEffectsIntent(TimberUtils.java:153) at com.naman14.timber.utils.TimberUtils.hasEffectsPanel(TimberUtils.java:147) at com.naman14.timber.activities.BaseActivity.onCreateOptionsMenu(BaseActivity.java:277) at com.naman14.timber.activities.MainActivity.onCreateOptionsMenu(MainActivity.java:298) at android.app.Activity.onCreatePanelMenu(Activity.java:3316) at androidx.fragment.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:378) at androidx.appcompat.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:94) at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.onCreatePanelMenu(AppCompatDelegateImpl.java:2549) at androidx.appcompat.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:94) at androidx.appcompat.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:455) at androidx.appcompat.app.ToolbarActionBar$1.run(ToolbarActionBar.java:56) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:876) at android.view.Choreographer.doCallbacks(Choreographer.java:688) at android.view.Choreographer.doFrame(Choreographer.java:620) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:862) at android.os.Handler.handleCallback(Handler.java:754) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6365) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:791)

    Crash 2: Long Msg: java.lang.ArrayIndexOutOfBoundsException: length=33; index=-1 at java.util.ArrayList.get(ArrayList.java:413) at com.naman14.timber.adapters.SongsListAdapter$ItemHolder$1.run(SongsListAdapter.java:250) at android.os.Handler.handleCallback(Handler.java:754) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6365) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:791) Crash 3: Long Msg: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.fragment.app.Fragment.setNextAnim(int)' on a null object reference at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:772) at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625) at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411) at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366) at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) at androidx.fragment.app.FragmentManagerImpl$1.run(FragmentManager.java:733) at android.os.Handler.handleCallback(Handler.java:754) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6365) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:791) Crash 4: Long Msg: java.lang.IllegalArgumentException: setNextMediaPlayer failed.: status=0xFFFFFFED at android.media.MediaPlayer.setNextMediaPlayer(Native Method) at com.naman14.timber.MusicService$MultiPlayer.setNextDataSource(MusicService.java:2484) at com.naman14.timber.MusicService.setNextTrack(MusicService.java:1024) at com.naman14.timber.MusicService.setNextTrack(MusicService.java:1016) at com.naman14.timber.MusicService.access$1600(MusicService.java:99) at com.naman14.timber.MusicService$MusicPlayerHandler.handleMessage(MusicService.java:2295) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.os.HandlerThread.run(HandlerThread.java:61)

    Crash 5: Long Msg: java.lang.RuntimeException: Unable to start activity ComponentInfo{naman14.timber/com.naman14.timber.activities.MainActivity}: java.lang.IllegalStateException: Unknown URL: content://media/external/audio/media/-1 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2740) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2801) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1548) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6365) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:791) Caused by: java.lang.IllegalStateException: Unknown URL: content://media/external/audio/media/-1 at android.os.Parcel.readException(Parcel.java:1692) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) at android.content.ContentProviderProxy.query(ContentProviderNative.java:421) at android.content.ContentResolver.query(ContentResolver.java:534) at android.content.CursorLoader.loadInBackground(CursorLoader.java:64) at com.naman14.timber.subfragments.LyricsFragment.getRealPathFromURI(LyricsFragment.java:119) at com.naman14.timber.subfragments.LyricsFragment.loadLyrics(LyricsFragment.java:60) at com.naman14.timber.subfragments.LyricsFragment.onCreateView(LyricsFragment.java:48) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2439) at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460) at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802) at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625) at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411) at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366) at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273) at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:201) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:620) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:178) at com.afollestad.appthemeengine.ATEActivity.onStart(ATEActivity.java:29) at com.naman14.timber.activities.BaseActivity.onStart(BaseActivity.java:140) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1249) at android.app.Activity.performStart(Activity.java:6887) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2703) ... 9 more crashend

    opened by LvZW1895 0
Releases(v1.7)
Owner
Naman Dwivedi
Naman Dwivedi
Best material design music player for Android

Metro Material Design music player for Android music lovers Table of contents Downloads Differences between Metro and RetroMusicPlayer Screenshots App

Muntashir Al-Islam 684 Jan 1, 2023
TunePlayer is a basic music player app aimed at showing how MusicServiceCompat and MusicBrowerCompat can be used to build a music playback service

TunePlayer TunePlayer is a basic music player app aimed at showing how MusicServiceCompat and MusicBrowerCompat can be used to build a music playback

Abdulmalik 6 Nov 18, 2022
This is a local music player, imitates the UI of Netease Music client.

Introduce This is a local music player, imitates the UI of Netease Music client. The UI was built on Jetbrains Compose. Screenshot Features Parse and

Konyaco 4 Dec 10, 2022
This is a local music player, imitates the UI of Netease Music client.

Introduce This is a local music player, imitates the UI of Netease Music client. The UI was built on Jetbrains Compose. Screenshots Features Parse and

Konyaco 4 Dec 10, 2022
SocyMusic is an open-source Android music player written in Java with the aim of creating an easy-to-use app for exchanging and listening to top-quality music. Help us create it!

SocyMusic SocyMusic is an open-source Android music player written entirely in Java. It's objectives are to provide top-quality music to everyone for

Benji 23 Dec 26, 2022
Auxio is a local music player with a fast, reliable UI/UX without the many useless features present in other music players

Auxio A simple, rational music player for android. FAQ | Licenses | Contributing | Architecture About Auxio is a local music player with a fast, relia

null 3 Mar 21, 2022
Blade is an open source music player for Android, allowing you to play music from multiple services : files on your phone, Spotify, and more.

Blade Player Blade is an open source music player for Android, allowing you to play music from multiple services : files on your phone, Spotify, and m

Valentin HAUDIQUET 72 Jan 5, 2023
Lightweight and Material designed Music Player

Music Player Lightweight and Material designed Music Player Based on Phonograph Features: Settings: Active tabs management Themes: Light, Dark, Black

Max 273 Dec 11, 2022
A material designed music player for Android

Vinyl Music Player A material designed local music player for Android. Forked from Phonograph; makes all Pro features free, as they used to be. Additi

Adrien Poupa 581 Dec 30, 2022
Android music player example.

Android music player example.

Chien 21 Jul 29, 2022
A elegant and light weight music player for android

A elegant and light weight music player for android

Atul Patare 45 Dec 21, 2022
🎶🎼 Very slim music player 👨‍🎤 100% made in Italy 🍕🌳🌞🍝🌄

Source code for the Android music player Music Player GO

Enrico D'Ortenzio 1.2k Jan 2, 2023
Odyssey music player

Odyssey This whole project is licensed under the GPLv3 or later license (see LICENSE) Screenshots Please check out the Frequently Asked Questions This

Gateship-One 203 Jan 5, 2023
Shuttle is an open source, local music player for Android.

Shuttle Music Player Shuttle is an open source, local music player for Android. Shuttle comes in two flavours: Shuttle (free) Shuttle+ The free versio

Tim Malseed 2.2k Jan 4, 2023
A clean music player with a customizable widget, stylish interface and no ads.

Simple Music Player A clean music player with a customizable widget. A music player easily controllable from the status bar, home screen widget or by

Simple Mobile Tools 965 Jan 4, 2023
Music Player: From UI Proposal to Code

Some developers have difficult to code when the UI proposal is a bit “sophisticated” or “complex”. Many of them strip a lot of significant portion of the UI or even the Motion when they are coding, and the result ends up quite different of the original proposal.

André Mion 3.5k Dec 28, 2022
Auxio - A simple, rational music player for android.

Auxio is a local music player with a fast, reliable UI/UX without the many useless features present in other music players. Built off of Exoplayer, Auxio has a much better listening experience compared to other apps that use the native MediaPlayer API. In short, It plays music.

OxygenCobalt 800 Jan 2, 2023
An offline music player android app, with modern UI and powerful features

Pulse Music An offline music player android app, with modern UI and powerful features If you liked this repo, fork it and leave a STAR. Your support m

Sharath 7 Apr 11, 2022
Android Offline Music Player

Howl Music Player A sleek and minimal offline music player made wit. Features Sleek and responsive UI , following material design Minimal layout with

LooKeR 145 Jan 8, 2023