Version 0.0.2

This commit is contained in:
Ryan Heise 2019-12-01 02:52:54 +11:00
parent 32f1b900ae
commit a50daad9e1
4 changed files with 21 additions and 14 deletions

View File

@ -1,3 +1,7 @@
## 0.0.2
* iOS implementation for testing (may not work).
## 0.0.1 ## 0.0.1
* Initial release with Android implementation first. * Initial release with Android implementation.

View File

@ -9,20 +9,20 @@ A Flutter plugin to play audio from streams, files and assets. This plugin can b
* Control audio playback via standard operations: play, pause, stop, setVolume, seek. * Control audio playback via standard operations: play, pause, stop, setVolume, seek.
* Compatible with [audio_service](https://pub.dev/packages/audio_service) to support full background playback, queue management, and controlling playback from the lock screen, notifications and headset buttons. * Compatible with [audio_service](https://pub.dev/packages/audio_service) to support full background playback, queue management, and controlling playback from the lock screen, notifications and headset buttons.
The initial release is for Android. The next priority is iOS. This plugin has been tested on Android, and is being made available for testing on iOS. Please consider reporting any bugs you encounter [here](https://github.com/ryanheise/just_audio/issues) or submitting pull requests [here](https://github.com/ryanheise/just_audio/pulls).
## Example ## Example
```dart ```dart
final player = AudioPlayer(); final player = AudioPlayer();
await player.setUrl('https://foo.com/bar.mp3'); await player.setUrl('https://foo.com/bar.mp3');
await player.play(); player.play();
await player.pause(); await player.pause();
await player.play(untilPosition: Duration(minutes: 1)); await player.play(untilPosition: Duration(minutes: 1));
await player.stop() await player.stop()
await player.setUrl('https://foo.com/baz.mp3'); await player.setUrl('https://foo.com/baz.mp3');
await player.seek(Duration(minutes: 5)); await player.seek(Duration(minutes: 5));
await player.play(); player.play();
await player.stop(); await player.stop();
await player.dispose(); await player.dispose();
``` ```

View File

@ -12,13 +12,13 @@ import 'package:rxdart/rxdart.dart';
/// ``` /// ```
/// final player = AudioPlayer(); /// final player = AudioPlayer();
/// await player.setUrl('https://foo.com/bar.mp3'); /// await player.setUrl('https://foo.com/bar.mp3');
/// await player.play(); /// player.play();
/// await player.pause(); /// await player.pause();
/// await player.play(untilPosition: Duration(minutes: 1)); /// await player.play(untilPosition: Duration(minutes: 1));
/// await player.stop() /// await player.stop()
/// await player.setUrl('https://foo.com/baz.mp3'); /// await player.setUrl('https://foo.com/baz.mp3');
/// await player.seek(Duration(minutes: 5)); /// await player.seek(Duration(minutes: 5));
/// await player.play(); /// player.play();
/// await player.stop(); /// await player.stop();
/// await player.dispose(); /// await player.dispose();
/// ``` /// ```
@ -40,12 +40,11 @@ import 'package:rxdart/rxdart.dart';
/// during normal playback when the next buffer is not ready to be played. /// during normal playback when the next buffer is not ready to be played.
/// * [AudioPlaybackState.connecting]: immediately after [setUrl], /// * [AudioPlaybackState.connecting]: immediately after [setUrl],
/// [setFilePath] and [setAsset] while waiting for the media to load. /// [setFilePath] and [setAsset] while waiting for the media to load.
/// ///
/// Additionally, after a [seek] request completes, the state will return to /// Additionally, after a [seek] request completes, the state will return to
/// whatever state the player was in prior to the seek request. /// whatever state the player was in prior to the seek request.
class AudioPlayer { class AudioPlayer {
static final _mainChannel = static final _mainChannel = MethodChannel('com.ryanheise.just_audio.methods');
MethodChannel('com.ryanheise.just_audio.methods');
static Future<MethodChannel> _createChannel(int id) async { static Future<MethodChannel> _createChannel(int id) async {
await _mainChannel.invokeMethod('init', '$id'); await _mainChannel.invokeMethod('init', '$id');
@ -123,7 +122,8 @@ class AudioPlayer {
} }
/// Loads audio media from a file and returns the duration of that audio. /// Loads audio media from a file and returns the duration of that audio.
Future<Duration> setFilePath(final String filePath) => setUrl('file://$filePath'); Future<Duration> setFilePath(final String filePath) =>
setUrl('file://$filePath');
/// Loads audio media from an asset and returns the duration of that audio. /// Loads audio media from an asset and returns the duration of that audio.
Future<Duration> setAsset(final String assetPath) async { Future<Duration> setAsset(final String assetPath) async {
@ -131,12 +131,13 @@ class AudioPlayer {
if (!file.existsSync()) { if (!file.existsSync()) {
await file.create(recursive: true); await file.create(recursive: true);
} }
await file.writeAsBytes( await file
(await rootBundle.load(assetPath)).buffer.asUint8List()); .writeAsBytes((await rootBundle.load(assetPath)).buffer.asUint8List());
return await setFilePath(file.path); return await setFilePath(file.path);
} }
Future<File> get _cacheFile async => File(p.join((await getTemporaryDirectory()).path, 'just_audio_asset_cache', '$_id')); Future<File> get _cacheFile async => File(p.join(
(await getTemporaryDirectory()).path, 'just_audio_asset_cache', '$_id'));
/// Plays the currently loaded media from the current position. It is legal /// Plays the currently loaded media from the current position. It is legal
/// to invoke this method only from one of the following states: /// to invoke this method only from one of the following states:
@ -209,9 +210,11 @@ class AudioPlayer {
class AudioPlayerState { class AudioPlayerState {
/// The current playback state. /// The current playback state.
final AudioPlaybackState state; final AudioPlaybackState state;
/// When the last time a position discontinuity happened, as measured in time /// When the last time a position discontinuity happened, as measured in time
/// since the epoch. /// since the epoch.
final Duration updateTime; final Duration updateTime;
/// The position at [updateTime]. /// The position at [updateTime].
final Duration updatePosition; final Duration updatePosition;

View File

@ -1,6 +1,6 @@
name: just_audio name: just_audio
description: Flutter plugin to play audio from streams, files and assets. Works with audio_service to play audio in the background. description: Flutter plugin to play audio from streams, files and assets. Works with audio_service to play audio in the background.
version: 0.0.1 version: 0.0.2
author: Ryan Heise <ryan@ryanheise.com> author: Ryan Heise <ryan@ryanheise.com>
homepage: https://github.com/ryanheise/just_audio homepage: https://github.com/ryanheise/just_audio