A music player application based on tags built with React Native and Expo.
Read this in other languages: English, 中文.
- Audio playback with play, pause, skip, and seek controls
- Background audio playback support
- Automatic music library scanning and organization
- Search and filter capabilities by title, artist, or lyrics
- Tag-based music categorization
- Dynamic color themes based on artwork / cover
- Bottom sheet player interface
- Floating player
- Multi-language support (English and Chinese)
- Reduce Flickering
- Encapsulate and use cpp language taglib library to improve reading efficiency
- Splash screen, more detailed loading prompts
- Keyboard handling
- Move search button position to make it visible when search bar appears
- Replace search filter checkbox with SegmentedButtons
- Better pure music judgment
- Vibration feedback when switching between songs
- Fade between songs
- Complete accessibility support
- Cannot read files with illegal characters such as ? # / [] {} space
To build an APK for Android, follow these steps:
-
Configure your Android development environment by following: Expo Android setup guide, Set up your environment
-
Ensure you have all dependencies installed:
cd ./music-app
npm install-
Generate your key by following: React Native: Signed apk android
-
Prebuild:
cd ./music-app
npx expo prebuild --platform android- Configure icon / splash screen assets (See react-native-bootsplash: setup for details) :
cd ./music-app
npx react-native-bootsplash generate svgs/light-logo.svg `
--platforms=android,ios,web`
--background=F5FCFF` --logo-width=100`
--assets-output=assets/bootsplash `
--flavor=main`
--html=public/index.html- Build the APK:
cd ./music-app/android
./gradlew assembleRelease- Get the output apk: app-release.apk
cd ./music-app/android/app/build/outputs/apk/release/
explorer .This project makes use of excellent open-source libraries and tools:
- Babel - JS compiler
- Expo - Platform for making React Native development easier
- Gorhom Bottom Sheet - Feature-rich bottom sheet component
- i18next - Localization framework
- Music Metadata - Parse metadata from audio files
- Object Hash - Generate hashes from javascript objects in node and the browser
- Prettier - Code formatter
- React - The library for React Native
- React Native - The core framework for building the mobile application
- React Native Awesome Slider - Customizable slider component
- React Native Bootsplash - Bootsplash screen for React Native apps
- React Native Gesture Handler - Native-backed gesture management API
- React Native Image Colors - Get prominent colors from an image
- React Native MMKV - Efficient, lightweight mobile key-value storage framework
- React Native Paper - Material Design components for React Native
- React Native Reanimated - React Native's Animated library reimplemented
- React Native Safe Area Context - A module to handle safe area insets
- React Native Text Ticker - Text auto-scrolling component for React Native
- Typescript - JS with syntax for types
This project is licensed under the MIT License