Skip to content

wiseminds/native-audio

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Native Audio

An audio plugin for Flutter which makes use of the native Android and iOS audio players, handling playback, notifications and external controls (such as bluetooth).

Getting Started

This plugin works on both Android and iOS, however the following setup is required for each platform.

Android

Prerequisite

1. Application

Create or modify the Application class as follows:

package your_package_name

import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugins.GeneratedPluginRegistrant
import com.danielgauci.native_audio.NativeAudioPlugin

class Application : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {

    override fun onCreate() {
        super.onCreate()
        NativeAudioPlugin.setPluginRegistrantCallback(this)
    }

    override fun registerWith(registry: PluginRegistry) {
    }
}

This must be reflected in the application's AndroidManifest.xml. E.g.:

    <application
        android:name=".Application"
        ...

Note: Not calling NativeAudioPlugin.setPluginRegistrant will result in an exception being thrown when audio is played.

2. Service & Permissions

Add the following lines to your AndroidManifest.xml to register the background service for geofencing:

<receiver android:name="androidx.media.session.MediaButtonReceiver">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
    </intent-filter>
</receiver>

<service android:name="com.danielgauci.native_audio.AudioService">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
        <action android:name="android.media.browse.MediaBrowserService" />
    </intent-filter>
</service>

As well as the following lines to setup the permissions required:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

iOS

Prerequisite

  • Flutter Project minimum iOS 10
  • Flutter Project minimum build Swift 4.2

No additional setup is required for iOS 🍏

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 30.9%
  • Dart 19.8%
  • C++ 17.2%
  • CMake 14.2%
  • Swift 12.6%
  • Ruby 2.5%
  • Other 2.8%