Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 8 days ago
JSON representation
Flutter Plugin used to query audios/songs infos [title, artist, album, etc..] from device storage.
- Host: GitHub
- URL: https://github.com/lucjosin/on_audio_query
- Owner: LucJosin
- Created: 2021-03-24T20:34:05.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-08-07T12:25:51.000Z (over 1 year ago)
- Last Synced: 2024-10-03T12:23:56.194Z (about 1 month ago)
- Topics: android, dart, flutter, flutter-android, flutter-audios, flutter-ios, flutter-null-safety, flutter-plugin, ios, kotlin, mediastore, mpmediaquery, on-audio-query, swift
- Language: Dart
- Homepage: https://pub.dev/packages/on_audio_query
- Size: 803 KB
- Stars: 44
- Watchers: 4
- Forks: 28
- Open Issues: 45
-
Metadata Files:
- Readme: README.md
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)