概要
- 着信音やアラーム音を鳴らす機能を備えたパッケージです。
- AndroidやiOS既定の着信音を鳴らせるのはもちろん、自分で指定したmp3ファイルを鳴らすことも可能です。
- 再生位置の調整など音楽に特化させたいのなら、「audioplayers」の方がよいかもしれません。こちらについても記事にまとめているので、良かったら参考にしてください(露骨な宣伝)⇒【Flutter】音楽を鳴らす(audioplayers) - マグネテック備忘録
- ↓↓ringtone_playerの公式サイト
インストール
dependencies: flutter_ringtone_player: ^3.2.0
注)4.0.0以降を使うとき
- 私の環境では「flutter_ringtone_player ^4.0.0 which depends on flutter_lints ^3.0.1, flutter_lints ^3.0.1 is required. So, because ~ depends on flutter_lints ^2.0.0, version solving failed.」というエラーが出ました。
- 解決法はシンプルで、flutter_lintsを変更すればOKでした。
dependencies: flutter_ringtone_player: ^4.0.0 dev_dependencies: flutter_lints: ^3.0.1
超基本:FlutterRingtonePlayer.play
引数
- alarmは一周期が長いので、loopingの動作確認はnotificationでやるのがオススメです。
- 「android & ios」 か 「fromAsset」のどちらかを設定する必要があります。
android |
|
---|---|
ios | iOSの場合。設定方法はandroidと同様。 |
fromAsset | ファイルで指定した音源から鳴らす場合に使用。 |
volume | 音の大きさを0~1の小数で設定(デフォルトは1?) |
asAlarm | trueならマナーモードでも音を鳴らす(デフォルトはfalse) |
looping | trueならループする(デフォルトはfalse) |
使用例(1):通知音の種類を指定して鳴らす場合
- android or iosのどちらかしか使わない場合でも、両方設定しないと音が鳴りません。
FlutterRingtonePlayer.play( android: AndroidSounds.alarm, ios: IosSounds.alarm, );
使用例(2):mp3ファイルから鳴らす場合
準備
使用する音源「sample.mp3」を適当なフォルダ内に置きます。後は、参照したいファイルのパスをpubspec.yamlに追加すればOKです。
flutter: assets: - assets/sample.mp3
サンプルコード
FlutterRingtonePlayer.play( fromAsset: "assets/sample.mp3", );
通知音を指定して鳴らす場合
FlutterRingtonePlayer().playAlarm();
- 音をalarm(アラーム)で固定(変更不可)。
- デフォルトでasAlarm=true, looping=true(変更可)。
- そのため、以下のコードと同義。
FlutterRingtonePlayer.play( android: AndroidSounds.alarm, ios: IosSounds.alarm, asAlarm: true, looping: true );
FlutterRingtonePlayer.playNotification();
- 音をnotification(通知)で固定(変更不可)。
- デフォルトでasAlarm=false, looping=false(変更可)。
- 以下のコードと同義。
FlutterRingtonePlayer.play( android: AndroidSounds.notification, ios: IosSounds.notification, asAlarm: false, looping: false );
FlutterRingtonePlayer.playRingtone();
- 音をringtone(着信)で固定(変更不可)。
- デフォルトでasAlarm=false, looping=true(変更可)。
- 以下のコードと同義。
FlutterRingtonePlayer.play( android: AndroidSounds.ringtone, ios: IosSounds.notification, asAlarm: false, looping: true );
鳴らした音を止める
FlutterRingtonePlayer.stop();
デモアプリ
- 公式サイトのサンプルコードを一部改変:flutter_ringtone_player | Flutter Package
画面
サンプルコード
- 音源ファイルの設定は、「使用例(2):mp3ファイルから鳴らす場合」でしたため省略。
import 'package:flutter/material.dart'; import 'package:flutter_ringtone_player/flutter_ringtone_player.dart'; void main() { const app = MaterialApp( home: MyHomePage(), ); runApp(app); } class MyHomePage extends StatelessWidget { const MyHomePage({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Colors.indigo.shade200, title: const Text('Ringtone Sample'), ), body: Center( child: Column( children: <Widget>[ ElevatedButton( child: const Text('play(android, ios = alarm)'), onPressed: () { FlutterRingtonePlayer.play( android: AndroidSounds.alarm, ios: IosSounds.alarm, asAlarm: true, looping: true); }, ), ElevatedButton( child: const Text('play(fromAsset)'), onPressed: () { FlutterRingtonePlayer.play( fromAsset: "assets/sample.mp3", ); }, ), ElevatedButton( child: const Text('playAlarm'), onPressed: () { FlutterRingtonePlayer.playAlarm(); }, ), ElevatedButton( child: const Text('playNotification'), onPressed: () { FlutterRingtonePlayer.playNotification(asAlarm: true); }, ), ElevatedButton( child: const Text('playRingtone'), onPressed: () { FlutterRingtonePlayer.playRingtone(asAlarm: true); }, ), ElevatedButton( child: const Text('stop'), onPressed: () { FlutterRingtonePlayer.stop(); }, ) ], ), ), ); } }