diff --git a/musicus_player/.gitignore b/musicus_player/.gitignore
new file mode 100644
index 0000000..a242fcb
--- /dev/null
+++ b/musicus_player/.gitignore
@@ -0,0 +1,31 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# VS Code related
+.vscode/
+
+# Flutter/Dart/Pub related
+**/*.g.dart
+**/doc/api/
+.dart_tool/
+pubspec.lock
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
diff --git a/musicus_player/android/.gitignore b/musicus_player/android/.gitignore
new file mode 100644
index 0000000..50f1ad2
--- /dev/null
+++ b/musicus_player/android/.gitignore
@@ -0,0 +1,8 @@
+gradle-wrapper.jar
+/.gradle
+/gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
diff --git a/musicus_player/android/build.gradle b/musicus_player/android/build.gradle
new file mode 100644
index 0000000..c0d0bf1
--- /dev/null
+++ b/musicus_player/android/build.gradle
@@ -0,0 +1,43 @@
+group 'de.johrpan.musicus_player'
+version '1.0-SNAPSHOT'
+
+buildscript {
+ ext.kotlin_version = '1.3.50'
+ repositories {
+ google()
+ jcenter()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.5.0'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+rootProject.allprojects {
+ repositories {
+ google()
+ jcenter()
+ }
+}
+
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+
+android {
+ compileSdkVersion 28
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+ defaultConfig {
+ minSdkVersion 16
+ }
+ lintOptions {
+ disable 'InvalidPackage'
+ }
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
diff --git a/musicus_player/android/gradle.properties b/musicus_player/android/gradle.properties
new file mode 100644
index 0000000..38c8d45
--- /dev/null
+++ b/musicus_player/android/gradle.properties
@@ -0,0 +1,4 @@
+org.gradle.jvmargs=-Xmx1536M
+android.enableR8=true
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/musicus_player/android/settings.gradle b/musicus_player/android/settings.gradle
new file mode 100644
index 0000000..14f07b0
--- /dev/null
+++ b/musicus_player/android/settings.gradle
@@ -0,0 +1 @@
+rootProject.name = 'musicus_player'
diff --git a/musicus_player/android/src/main/AndroidManifest.xml b/musicus_player/android/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..4b4d1b5
--- /dev/null
+++ b/musicus_player/android/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
diff --git a/musicus_player/android/src/main/kotlin/de/johrpan/musicus_player/MusicusPlayerPlugin.kt b/musicus_player/android/src/main/kotlin/de/johrpan/musicus_player/MusicusPlayerPlugin.kt
new file mode 100644
index 0000000..e134ef0
--- /dev/null
+++ b/musicus_player/android/src/main/kotlin/de/johrpan/musicus_player/MusicusPlayerPlugin.kt
@@ -0,0 +1,27 @@
+package de.johrpan.musicus_player
+
+import androidx.annotation.NonNull;
+
+import io.flutter.embedding.engine.plugins.FlutterPlugin
+import io.flutter.plugin.common.MethodCall
+import io.flutter.plugin.common.MethodChannel
+import io.flutter.plugin.common.MethodChannel.MethodCallHandler
+import io.flutter.plugin.common.MethodChannel.Result
+import io.flutter.plugin.common.PluginRegistry.Registrar
+
+public class MusicusPlayerPlugin: FlutterPlugin, MethodCallHandler {
+ private lateinit var channel: MethodChannel
+
+ override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
+ channel = MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "de.johrpan.musicus_player/platform")
+ channel.setMethodCallHandler(this);
+ }
+
+ override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
+ // TODO: Implement.
+ }
+
+ override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
+ channel.setMethodCallHandler(null)
+ }
+}
diff --git a/musicus_player/lib/musicus_player.dart b/musicus_player/lib/musicus_player.dart
new file mode 100644
index 0000000..2b252dd
--- /dev/null
+++ b/musicus_player/lib/musicus_player.dart
@@ -0,0 +1,13 @@
+import 'package:flutter/services.dart';
+
+class MusicusPlayer {
+ final _channel = MethodChannel('de.johrpan.musicus_player/platform');
+
+ MusicusPlayer() {
+ _channel.setMethodCallHandler(_handleMethodCall);
+ }
+
+ Future _handleMethodCall(MethodCall call) {
+ // TODO: Implement.
+ }
+}
diff --git a/musicus_player/pubspec.yaml b/musicus_player/pubspec.yaml
new file mode 100644
index 0000000..b7fac06
--- /dev/null
+++ b/musicus_player/pubspec.yaml
@@ -0,0 +1,17 @@
+name: musicus_player
+description: A simple music player for Musicus.
+version: 0.0.1
+
+environment:
+ sdk: ">=2.3.0 <3.0.0"
+
+dependencies:
+ flutter:
+ sdk: flutter
+
+flutter:
+ plugin:
+ platforms:
+ android:
+ package: de.johrpan.musicus_player
+ pluginClass: MusicusPlayerPlugin
\ No newline at end of file