Skip to content

An Android app to view the BPM, key, genre, time signature, and average loudness of a track from Spotify API

License

Notifications You must be signed in to change notification settings

Leonidius20/BeatInspector

Repository files navigation

BeatInspector

An Android app to view the BPM, key, genre, time signature, and average loudness of a track from Spotify API.



Purpose

The data provided by the app is meant to help music producers remix other tracks or use them as references for thier own work.

Technology

Built with Jetpack Compose, Single-Activity Architecture, Android Architecture Components (ViewModel, Navigation Component), Retrofit, Dagger/Hilt, Coil, Room, Kotlin Coroutines and Flows, AppAuth to implement the Authorization code with PKCE flow, Jetpack Palette library, and the Paging 3 library.

Screenshots

Screenshots collage

Building from sources

Prerequisites

  • In order to build the app yourself, you need to register the app with Spotify API according to the guide. When registering, use a name other than BeatInspector. Mind that the API access will be granted in "Development mode" by default, which means that only you and up to 25 manually added users will be able to use the app (read more here).
  • You will need a keystore to sign the app. Name the keystore file android-keystore.jks and place it in the project's root folder. Make sure not to commit this file to a public repository. By default both the debug and the release builds are signed with this keystore. However, if you only want to build a debug version with a debug signature, you can remove the buildTypes.debug.signingConfig property from app/build.gradle.kts. In this case the keystore file would not be needed.

Build locally

  • Clone the repository.
  • Create a file called secrets.properties in the project's root folder with the following content (SIGNATURE_ values are not needed if you chose to use the debug key):
SPOTIFY_CLIENT_ID=<your app's client id from Spotify developer dashboard>

SIGNATURE_KEYSTORE_PASSWORD=<password to the keystore you've provided>
SIGNATURE_KEY_ALIAS=<alias of the key from the keystore that you want to use to sign the app>
SIGNATURE_KEY_PASSWORD=<password to that key>

Make sure that you do not commit this file to a public repository.

  • Build the project using Android Studio's UI or run the commands in the project's root folder:
./gradlew assembleDebug

to create a debug build of the app at app/build/outputs/apk/debug/app-debug.apk, or

./gradlew assembleRelease

for the release version at /app/build/outputs/apk/release/app-release.apk.

Build using Github Actions

You will only be able to make a release build with this method.

  • Create a fork of this repository.
  • Add the following Repository secrets:
    • SPOTIFY_CLIENT_ID - your app's client id from Spotify developer dashboard
    • SIGNATURE_KEYSTORE_BASE64 - your keystore file encoded in base64
    • SIGNATURE_KEYSTORE_PASSWORD - the password to the key in the keystore that you want to use for signing the app.
  • Add a Repository variable with the following name and value:
    • SIGNATURE_KEY_ALIAS - the alias of the key that you want to use.
  • Run the Build Release APK workflow.
  • When the workflow job is finished, the apk will be available as its artifact. A draft release will also be created and the apk will be attached to it.

Credits

The app's icon is from Freepik.

License

This project is licensed under the GNU General Public License v3.

About

An Android app to view the BPM, key, genre, time signature, and average loudness of a track from Spotify API

Topics

Resources

License

Stars

Watchers

Forks

Languages