native_audio 0.0.19 native_audio: ^0.0.19 copied to clipboard
An audio plugin for Flutter which makes use of the native Android and iOS audio players, handling playback, notifications and external controls.
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
- Flutter Project MinSDK 21
- Flutter Project AndroidX
1. Application
Create or modify the Application
class as follows:
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) {
GeneratedPluginRegistrant.registerWith(registry)
}
}
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 🍏