Convert Figma logo to code with AI

timusus logoShuttle

Shuttle Music Player

2,201
480
2,201
196

Top Related Projects

10,614

🦭 Video/Audio Downloader for Android, based on yt-dlp, designed with Material You

🎢🎼 Very slim music player πŸ‘¨β€πŸŽ€ 100% made in Italy πŸ•πŸŒ³πŸŒžπŸπŸŒ„

Quick Overview

Shuttle is an open-source Android music player application. It offers a clean and intuitive interface for users to browse and play their local music files, with support for various audio formats and customizable themes.

Pros

  • User-friendly interface with material design
  • Supports a wide range of audio formats
  • Customizable themes and color schemes
  • Active development and community support

Cons

  • Limited online streaming capabilities
  • No built-in equalizer (relies on system equalizer)
  • Some advanced features may require in-app purchases
  • Occasional stability issues reported by users

Code Examples

As Shuttle is a complete Android application and not a code library, there are no specific code examples to showcase. The project is written in Java and Kotlin, and follows Android development best practices.

Getting Started

Since Shuttle is an Android application and not a code library, there's no code-specific getting started instructions. However, if you want to contribute to the project or run it locally, you can follow these steps:

  1. Clone the repository:

    git clone https://github.com/timusus/Shuttle.git
    
  2. Open the project in Android Studio

  3. Build and run the application on an Android device or emulator

For more detailed instructions on setting up the development environment and contributing to the project, refer to the repository's README and CONTRIBUTING files.

Competitor Comparisons

10,614

🦭 Video/Audio Downloader for Android, based on yt-dlp, designed with Material You

Pros of Seal

  • More recent development activity with frequent updates
  • Supports YouTube Music integration
  • Offers a modern Material You design

Cons of Seal

  • Smaller community and less established project
  • Fewer advanced audio features compared to Shuttle
  • Limited language support

Code Comparison

Seal (Kotlin):

@Composable
fun MusicPlayerScreen(
    viewModel: MusicPlayerViewModel = hiltViewModel()
) {
    val playerState by viewModel.playerState.collectAsState()
    // ... more code
}

Shuttle (Java):

public class MusicPlayerFragment extends BaseFragment {
    @Inject MusicPlayer musicPlayer;
    
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        // ... more code
    }
}

Summary

Seal is a newer music player app with a focus on modern design and YouTube Music integration. It offers frequent updates but has a smaller community compared to Shuttle. Shuttle, being an older and more established project, provides more advanced audio features and wider language support. The code comparison shows that Seal uses Kotlin with Jetpack Compose for UI, while Shuttle is built with Java and traditional Android views.

🎢🎼 Very slim music player πŸ‘¨β€πŸŽ€ 100% made in Italy πŸ•πŸŒ³πŸŒžπŸπŸŒ„

Pros of Music-Player-GO

  • Extremely lightweight and minimalist design
  • Fast performance due to its simplicity
  • Open-source and ad-free

Cons of Music-Player-GO

  • Limited features compared to Shuttle
  • Less polished user interface
  • Fewer customization options

Code Comparison

Music-Player-GO (Kotlin):

private fun loadMusic() {
    viewModelScope.launch(Dispatchers.Default) {
        val music = musicRepository.getMusic()
        _uiState.update { it.copy(music = music) }
    }
}

Shuttle (Java):

public void loadSongs() {
    disposables.add(Observable.fromCallable(() -> {
        return songRepository.getSongs();
    })
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(songs -> {
        this.songs = songs;
        refreshAdapterItems();
    }, throwable -> LogUtils.logException(TAG, "Error refreshing adapter items", throwable)));
}

Music-Player-GO uses Kotlin coroutines for asynchronous operations, while Shuttle employs RxJava for reactive programming. Music-Player-GO's code is more concise due to Kotlin's language features, whereas Shuttle's Java code is more verbose but potentially more familiar to Java developers.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Shuttle Music Player

License: GPL v3 API Build Status Discord Chat

Shuttle is an open source, local music player for Android.

Shuttle comes in two flavours:

The free version includes an option to upgrade via an IAP, which unlocks the features otherwise available in Shuttle+.

Status

Shuttle is no longer actively maintained. The successor, S2 is under active development here: https://github.com/timusus/Shuttle2

The codebase in this repository is very old and unwieldy. The foundations were written when I was first learning java, around 10 years ago. It has become too much of a maintenance burden to try to keep up-to-date, so I've decided to archive the repository.

Features
  • Local playback only (based on the MediaStore)
  • Built in equalizer
  • Sleep timer
  • Folder browser
  • Scrobbling
  • Widgets
  • Theming
  • Album-artist support
  • Artwork scraping (Last.FM & iTunes)
  • Tag editing
  • Folder browsing
  • Chromecast

Contributing:

See the Contributing document. This is/will become a good resource if you're just wondering how the app works.

History:

Shuttle started some time in early 2012, as a project to learn Java (and programming in general). Initially, it was based off of the Random Music Player sample project by Google. I clearly recall how happy I was when I managed to wrangle that project to play a song of my choosing!

After lots of blog reading and trial and error, I eventually stumbled upon Googles Default Music Player. At the time I had no idea what I was doing, but for better or worse, I made a habit of not copying classes, but writing the code out myself. This tedious process lasted a while, but it was my way of trying to ensure I understood what was going on when I copied a class into my app.

Initially, Shuttle was relased as AMP (another.music.player). A patent troll threatened legal action if I didn't change the name (don't want a native Android app getting confused with an audio codec!) and I was naive enough to comply - and so the name was changed.

As I developed Shuttle, I received a lot of really positive feedback from reddit (/r/android). I continued to work on customisation of holo-based themes and looked on in awe as Shuttle ticked over to install number 10.

I eventually discovered Cyanogenmod, and the then-famous Apollo Music Player, which seemed to solve a few problems I wasn't able to solve myself. I discovered the beautiful thing that is open source software, and found out that someone else had already solved these problems for me, and I was allowed to copy them! That someone else was Andrew Neal, the developer of Apollo Music Player. Initially via email, then to hangouts and now on Slack, Andrew unwittingly became my mentor. I attribute a large portion of Shuttle's success to both Andrew and his app Apollo.

Shuttle continued to gain momentum over the years. Holo was phased out and something post-Holo-pre-Material came in. I celebrated 500,000 downloads with an actual cake sometime in 2014. I got a job as an Android developer.. Glide came out, RXJava became popular and Material design came in.

I've continued to work on Shuttle at times daily, at the least weekly, ever since its initial release. It's come a hell of a long way since day one. It is my proudest accomplishment. It now has about 5 million downloads!

Motivation for Open Source:

Without open source, Shuttle wouldn't exist, and I probably wouldn't be an Android developer. One of my motivations for open sourcing this project is to 'give back'. Maybe Shuttle can be to someone else what Apollo Music Player was to me.

Secondly, I don't feel like I'm able to dedicate as much time to the project as I have in the past. Each year that goes by, I feel like there's just more for me to do and less time do it. I'm hoping that there are some enthusiastic developers out there who like Shuttle, and would like to improve it in some way.

License

Shuttle Music Player is released under the GNU General Public License v3.0 (GPLv3), which can be found here: License