Skip to content

ShokhrukhbekYuldoshev/Meloplay

Repository files navigation

Meloplay

Meloplay is a local music player app that plays music from your device built with Flutter.

Platforms

  • Android only

Features

  • Play music from your device
  • Background audio
  • Notification controls
  • Lock screen controls
  • Play, pause, skip, previous, seek
  • Shuffle and repeat
  • Search for music, artists, albums, genres
  • Sort by (title, artist, album, duration, date, size, etc)
  • Order by (ascending, descending)
  • Playlists (Read, create, rename, delete, add songs, remove songs)
  • Queue (List, add songs, remove songs, change order)
  • Favorites (Add songs, remove songs)
  • Recently played
  • Most played
  • Artists
  • Albums
  • Genres
  • Lyrics
  • Equalizer
  • Sleep timer
  • Share music
  • Settings
  • Themes (multiple themes)
  • Localization

Screenshots

Splash Songs Player
Splash Songs Player
Playlists Artists Albums
Playlists Artists Albums
Genres Drawer Themes
Genres Drawer Themes
Artist Album Genre
Artist Album Genre
Search Settings Scan
Search Settings Scan

Dependencies

Name Description
auto_size_text Flutter widget that automatically resizes text to fit perfectly within its bounds.
bloc A predictable state management library.
flutter_bloc Flutter widgets that make it easy to implement BLoC design patterns.
flutter_cache_manager A Flutter plugin for caching images and other resources.
flutter_staggered_animations A plugin for adding staggered animations to your Flutter apps.
flutter_svg Flutter plugin for displaying SVG images.
fluttertoast Flutter plugin for displaying toast messages.
get_it Simple Service Locator for dependency injection.
hive A lightweight and blazing fast key-value database.
hive_flutter Hive database implementation for Flutter.
just_audio A feature-rich audio player for Flutter.
just_audio_background Plugin for playing audio in the background on Android and iOS.
lottie Library for rendering JSON-based Lottie animations natively.
marquee A Flutter widget that scrolls text infinitely.
on_audio_query A Flutter plugin to query songs on Android and iOS.
package_info_plus Plugin for querying information about the application package.
permission_handler Cross-platform permission handling plugin.
share_plus Plugin for sharing content via the platform share UI.
url_launcher Plugin for launching URLs on mobile platforms.

📦 Installation

Prerequisites

  • Flutter
  • Android Studio / Xcode

Setup

  1. Clone the repo

    git clone
  2. Install dependencies

    dart pub get
  3. Run the app

    flutter run

❗ Permissions

Inside AndroidManifest.xml we have the following permissions:

<!-- ADD xmlns:tools="http://schemas.android.com/tools" to the "manifest" element -->
<manifest xmlns:tools="http://schemas.android.com/tools" ...>
    <!-- url_launcher -->
    <queries>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="https" />
        </intent>
    </queries>

    <!-- Android 12 and below -->
    <uses-permission
        android:name="android.permission.READ_EXTERNAL_STORAGE"
        android:maxSdkVersion="32" />

    <!-- Android 13+ -->
    <uses-permission
        android:name="android.permission.READ_MEDIA_AUDIO" />

    <!-- ADD THESE TWO PERMISSIONS -->
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <!-- ALSO ADD THIS PERMISSION IF TARGETING SDK 34 -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>

    <application ...>

    ...

    <!-- EDIT THE android:name ATTRIBUTE IN YOUR EXISTING "ACTIVITY" ELEMENT -->
    <activity android:name="com.ryanheise.audioservice.AudioServiceActivity" ...>
      ...
    </activity>

    <!-- ADD THIS "SERVICE" element -->
    <service android:name="com.ryanheise.audioservice.AudioService"
        android:foregroundServiceType="mediaPlayback"
        android:exported="true" tools:ignore="Instantiatable">
      <intent-filter>
        <action android:name="android.media.browse.MediaBrowserService" />
      </intent-filter>
    </service>

    <!-- ADD THIS "RECEIVER" element -->
    <receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver"
        android:exported="true" tools:ignore="Instantiatable">
      <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
      </intent-filter>
    </receiver>
  </application>
</manifest>

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

Distributed under the Attribution-NonCommercial-ShareAlike 4.0 International License. See LICENSE for more information.

Contact

Show your support

Give a star if you like this project!

About

A sleek local music player for Android built with Flutter

Topics

Resources

Stars

Watchers

Forks

Contributors