2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FlutterでFirebaseStorageに保存している音声ファイルを再生する

Last updated at Posted at 2023-02-09

この記事を書こうと思ったきっかけ

Flutterの自己学習でポケモン図鑑を作成してみようと思った際、
鳴き声を再生させる機能が欲しかったため自分なりに実装してみました!

前提条件

たくさんの方がFlutterでFirebaseの連携方法をわかりやすく書いてくださっているので
本記事では省略させて頂きます。
別途FirebaseStorageにどのようなフォルダ構造で自分が保存しているかは記載致します。
また音声ファイルを再生するためjust_audioもインポートします。
バージョンは下記になります。

  firebase_core: ^2.5.0
  cloud_firestore: ^4.3.2
  firebase_storage: ^11.0.11
  just_audio: ^0.9.31

1.FirebaseStorageに音声ファイルを保存

FirebaseのプロジェクトからStorageを選択しプロジェクトを開始します。
その後DLというフォルダを作成しDLフォルダの中に
再生したい音声データをアップロードします。
下記キャプチャは音声データをアップロードしている状態です。
スクリーンショット 2023-02-10 1.36.36.png

2.main.dartでFirebaseStorageに保存している音声のURL取得メソッドを作る

Future _download()というメソッドを作成し
FirebaseStorageのDLフォルダ内にある音声ファイルのURLを取得する処理を記載します。
コード毎の処理も下記に記載しております。

class _MyHomePageState extends State<MyHomePage> {

  Future<void> _download() async {
    FirebaseStorage storage = FirebaseStorage.instance;
    //firebase_storageのDLフォルダ内の001.wav音声をitemRefに入れる
    Reference itemRef = storage.ref().child("DL").child("001.wav");
    //itemRefからURLを取得しitemUrlに入れる
    String itemUrl = await itemRef.getDownloadURL();
  }

3. 2で作成したメソッドに音声フォルダを再生する処理を追加

class _MyHomePageState extends State<MyHomePage> {
  //3で追加
 final player = AudioPlayer();

  Future<void> _download() async {
    FirebaseStorage storage = FirebaseStorage.instance;
    //firebase_storageのDLフォルダ内の001.wav音声をitemRefに入れる
    Reference itemRef = storage.ref().child("DL").child("001.wav");
    //itemRefからURLを取得しitemUrlに入れる
    String itemUrl = await itemRef.getDownloadURL();
  //ここから下の処理が3で追加
  //もしitemUrlが空じゃなければplayerにURLをセット
    if( itemUrl != "") {
      await player.setUrl(itemUrl);
    } else {
      print('失敗');
    }
    //音声を鳴らす
    player.play();
  }

あとは上記のメソッドをボタン押下時の処理(onPressed等)に入れて頂ければと思います。

まとめ

メソッドをもう少し処理毎に分けた方がいいかと思いましたが
ひとまず音声ファイルの再生は可能だと思います。
他にも図鑑に入れたい機能があるので実現できたら記事書いてみようと思います。
ポケモンのゲームの鳴き声ってアニメと全く違うのでギャップにびっくりします、、

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?