Skip to content

Simple Flutter plugin to play ringtone, alarm & notification sounds

License

Notifications You must be signed in to change notification settings

aybefox/flutter_ringtone_player

 
 

Repository files navigation

flutter_ringtone_player

A simple ringtone, alarm & notification player plugin.

pub package flutter

Usage

Register service and add permission to AndroidManifest.xml:

<service android:name="io.inway.ringtone.player.FlutterRingtonePlayerService"/>

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

Add following import to your code:

import 'package:flutter_ringtone_player/flutter_ringtone_player.dart';

Then simply call this to play system default notification sound:

FlutterRingtonePlayer.playNotification();

There's also this generic method allowing you to specify in detail what kind of ringtone should be played:

FlutterRingtonePlayer.play(
  android: AndroidSounds.notification,
  ios: IosSounds.glass,
  looping: true, // Android only - API >= 28
  volume: 0.1, // Android only - API >= 28
  asAlarm: false, // Android only - all APIs
);

Also you can specify a custom ringtone from assets that works for both Android and iOS:

FlutterRingtonePlayer.play(fromAsset: "assets/ringtone.wav");  

You can specify a platform specific ringtone and it will override the one from assets:

FlutterRingtonePlayer.play(  
 fromAsset: "assets/ringtone.wav", // will be the sound on Android
 ios: IosSounds.glass 			   // will be the sound on iOS
 );  

.play*() optional attributes

Attribute Description
bool looping Enables looping of ringtone. Requires FlutterRingtonePlayer.stop(); to stop ringing.
double volume Sets ringtone volume in range 0 to 1.0.
bool asAlarm Allows to ignore device's silent/vibration mode and play given sound anyway. Because this will run the service in foreground you also have to set alarmNotificationMeta.
AlarmNotificationMeta alarmNotificationMeta Sets further attributes for the alarm notification which will be created if the sound will be played as alarm.

To stop looped ringtone please use:

FlutterRingtonePlayer.stop();

Above works only on Android, and please note that by default Alarm & Ringtone sounds are looped.

Default sounds

Method Android iOS
playAlarm RingtoneManager.TYPE_ALARM IosSounds.alarm
playNotification RingtoneManager.TYPE_NOTIFICATION IosSounds.triTone
playRingtone RingtoneManager.TYPE_RINGTONE IosSounds.electronic

Note on iOS sounds

If you want to use any other sound on iOS you can always specify a valid Sound ID and manually construct [IosSound]:

FlutterRingtonePlayer.play(
  android: AndroidSounds.notification,
  ios: const IosSound(1023),
  looping: true,
  volume: 0.1,
);

About

Simple Flutter plugin to play ringtone, alarm & notification sounds

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Dart 46.6%
  • Java 42.3%
  • Objective-C 8.7%
  • Ruby 2.4%