Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lucjosin/on_audio_query

Flutter Plugin used to query audios/songs infos [title, artist, album, etc..] from device storage.
https://github.com/lucjosin/on_audio_query

android dart flutter flutter-android flutter-audios flutter-ios flutter-null-safety flutter-plugin ios kotlin mediastore mpmediaquery on-audio-query swift

Last synced: 3 days ago
JSON representation

Flutter Plugin used to query audios/songs infos [title, artist, album, etc..] from device storage.

Awesome Lists containing this project

README

        

# on_audio_query
[![Pub.dev](https://img.shields.io/pub/v/on_audio_query?color=9cf&label=Pub.dev&style=flat-square)](https://pub.dev/packages/on_audio_query)
[![Platforms](https://img.shields.io/badge/Platforms-Android%20%7C%20IOS%20%7C%20Web-9cf?&style=flat-square)]()
[![Languages](https://img.shields.io/badge/Languages-Dart%20%7C%20Kotlin%20%7C%20Swift-9cf?&style=flat-square)]()

[Flutter](https://flutter.dev/) Plugin used to query audios/songs 🎶 infos [title, artist, album, etc..] from device storage.

**Any problem? [Issues](https://github.com/LucJosin/on_audio_query/issues)**

**Any suggestion? [Pull request](https://github.com/LucJosin/on_audio_query/pulls)**

### Topics:

* [Installation](#installation)
* [Platforms](#platforms)
* [Overview](#overview)
* [Examples](#examples)
* [Gif Examples](#gif-examples)
* [License](#license)

## Platforms:

| Methods | Android | IOS | Web |
|-------|:----------:|:----------:|:----------:|
| `querySongs` | `✔️` | `✔️` | `✔️` |

| `queryAlbums` | `✔️` | `✔️` | `✔️` |

| `queryArtists` | `✔️` | `✔️` | `✔️` |

| `queryPlaylists` | `✔️` | `✔️` | `❌` |

| `queryGenres` | `✔️` | `✔️` | `✔️` |

| `queryAudiosFrom` | `✔️` | `✔️` | `✔️` |

| `queryWithFilters` | `✔️` | `✔️` | `✔️` |

| `queryArtwork` | `✔️` | `✔️` | `✔️` |

| `createPlaylist` | `✔️` | `✔️` | `❌` |

| `removePlaylist` | `✔️` | `❌` | `❌` |

| `addToPlaylist` | `✔️` | `✔️` | `❌` |

| `removeFromPlaylist` | `✔️` | `❌` | `❌` |

| `renamePlaylist` | `✔️` | `❌` | `❌` |

| `moveItemTo` | `✔️` | `❌` | `❌` |

| `checkAndRequest` | `✔️` | `✔️` | `❌` |

| `permissionsRequest` | `✔️` | `✔️` | `❌` |

| `permissionsStatus` | `✔️` | `✔️` | `❌` |

| `queryDeviceInfo` | `✔️` | `✔️` | `✔️` |

| `scanMedia` | `✔️` | `❌` | `❌` |

✔️ -> Supported

❌ -> Not Supported

**[See all platforms methods support](https://github.com/LucJosin/on_audio_query/blob/main/on_audio_query/PLATFORMS.md)**

## Installation:

Add the following code to your `pubspec.yaml`:
```yaml
dependencies:
on_audio_query: ^2.9.0
```

### Request Permission:

#### Android:
To use this plugin add the following code to your [AndroidManifest.xml](https://github.com/LucJosin/on_audio_query/blob/main/on_audio_query/example/android/app/src/main/AndroidManifest.xml)
```xml







```

#### IOS:
To use this plugin add the following code to your [Info.plist](https://github.com/LucJosin/on_audio_query/blob/main/on_audio_query/example/ios/Runner/Info.plist)
```

NSAppleMusicUsageDescription
$(PROJECT_NAME) requires access to media library

```

## Some Features:

* Optional and Built-in storage `READ` and `WRITE` permission request
* Get all audios/songs.
* Get all albums and album-specific audios.
* Get all artists and artist-specific audios.
* Get all playlists and playlists-specific audios.
* Get all genres and genres-specific audios.
* Get all query methods with specific `keys` [Search].
* Create/Delete/Rename playlists.
* Add/Remove/Move specific audios to playlists.
* Specific sort types for all query methods.

## Overview:

All types of methods on this plugin:

### Artwork Widget

```dart
Widget someOtherName() async {
return QueryArtworkWidget(
id: ,
type: ArtworkType.AUDIO,
);
}
```

**See more: [QueryArtworkWidget](https://pub.dev/documentation/on_audio_query/latest/on_audio_query/QueryArtworkWidget-class.html)**

## Examples:

#### OnAudioQuery

```dart
final OnAudioQuery _audioQuery = OnAudioQuery();
```

#### Query methods:

- queryAudios();
- queryAlbums();
- queryArtists();
- queryPlaylists();
- queryGenres().

```dart
someName() async {
// Query Audios
List audios = await _audioQuery.queryAudios();

// Query Albums
List albums = await _audioQuery.queryAlbums();
}
```

#### scanMedia

You'll use this method when updating a media from storage. This method will update the media 'state' and
Android `MediaStore` will be able to know this 'state'.

```dart
someName() async {
OnAudioQuery _audioQuery = OnAudioQuery();
File file = File('path');
try {
if (file.existsSync()) {
file.deleteSync();
_audioQuery.scanMedia(file.path); // Scan the media 'path'
}
} catch (e) {
debugPrint('$e');
}
}
```

#### queryArtwork

```dart
someName() async {
// DEFAULT: ArtworkFormat.JPEG, 200 and false
Uint8List something = await _audioQuery.queryArtwork(
,
ArtworkType.AUDIO,
...,
);
}
```

Or you can use a basic and custom Widget.
**See example [QueryArtworkWidget](#artwork-widget)**

## Gif Examples:
| | | | |
|:---:|:---:|:---:|:---:|
| | | | |
| Songs | Albums | Playlists | Artists |

## LICENSE:

* [LICENSE](https://github.com/LucJosin/on_audio_query/blob/main/on_audio_query/LICENSE)

> * [Back to top](#on_audio_query)