flutter_audio_service 0.3.1 copy "flutter_audio_service: ^0.3.1" to clipboard
flutter_audio_service: ^0.3.1 copied to clipboard

A plugin, that allows audio playback as Android service, uses ExoPlayer and implements MediaSession API.

example/lib/main.dart

//
//  Flutter plugin for audio playback on Android
//  Created by Karol Wąsowski (wasowski02@gmail.com) on June 23rd 2019
//  Licensed under the BSD License
//

import 'package:flutter/material.dart';
import 'package:flutter_audio_as_service/flutter_audio_as_service.dart';
import 'package:flutter_audio_as_service/AudioInfoClass.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Duration audioLength = Duration(milliseconds: 0);
  Duration audioPosition = Duration(milliseconds: 0);

  // See docs to find details about how to add fallback images and app icon
  AudioInfo trackDetails = AudioInfo(
    "Title", // Title
    "Author", // Artist
    "https://file-examples.com/wp-content/uploads/2017/11/file_example_MP3_700KB.mp3", // Audio location (hhtps:// or file:///)
    "https://scdn.androidcommunity.com/wp-content/uploads/2018/02/flutter.jpeg", // Album cover (https:// or file:///)
    "app_icon" // Notification icon (drawable)
  );

  Future<void> setAudioLength() async {
    audioLength = await FlutterAudioAsService.getAudioLength();
    setState(() {
      
    });
  }

  @override
  void initState() {
    super.initState();

    AudioPlayerListener listener = AudioPlayerListener(
      onPlayerStateChanged: (PlayerState playerState) {
        if (playerState == PlayerState.idle) {
          setState(() {
            audioLength = Duration(milliseconds: 0);
            audioPosition = Duration(milliseconds: 0);
          });
        } else {
          setAudioLength();
        }
      },
      onPlayerPositionChanged: (Duration playerPosition) {
        setState(() {
          audioPosition = playerPosition;
        });
      },
      onPlayerCompleted: () {
        print("Player completed");
        audioPosition = Duration(milliseconds: 0);
        audioLength = Duration(milliseconds: 0);
      }
    );

    FlutterAudioAsService.setListeners(listener);
  }

  @override
  void dispose() {
    super.dispose();

    FlutterAudioAsService.unbind();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Android Audio playback as service'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              RaisedButton(
                child: Text("Connect to service, load audio, start playback"),
                onPressed: () async {
                  await FlutterAudioAsService.init(trackDetails);
                  setState(() {

                  });
                },
              ),
              Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  IconButton(
                    icon: Icon(Icons.play_arrow),
                    onPressed: () async {
                      await FlutterAudioAsService.resume();
                    },
                  ),
                  IconButton(
                    icon: Icon(Icons.pause),
                    onPressed: () async {
                      await FlutterAudioAsService.pause();
                    },
                  ),
                  IconButton(
                    icon: Icon(Icons.stop),
                    onPressed: () async {
                      await FlutterAudioAsService.stop();
                      setState(() {
                        audioLength = Duration(milliseconds: 0);
                        audioPosition = Duration(milliseconds: 0);
                      });
                    },
                  ),
                ],
              ),
              RaisedButton(
                child: Text("Seek by 30s"),
                onPressed: () async {
                  await FlutterAudioAsService.seekBy(Duration(seconds: 30));
                },
              ),
              RaisedButton(
                child: Text("Seek to end"),
                onPressed: () async {
                  await FlutterAudioAsService.seekTo(audioLength - Duration(seconds: 15));
                },
              ),
              Text("Audio length: " + audioLength.toString()),
              Text("Player progress: " + audioPosition.toString() + " / " + audioLength.toString()),
            ],
          ),
        ),
      ),
    );
  }
}
1
likes
40
pub points
48%
popularity

Publisher

unverified uploader

A plugin, that allows audio playback as Android service, uses ExoPlayer and implements MediaSession API.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (LICENSE)

Dependencies

flutter, path_provider

More

Packages that depend on flutter_audio_service