Comments (6)
Hi @snaeji
Glad you like the plugin!
It's actually a bit of a mystery how to control what gets shown on the Android lock screen. The code responsible is in AudioService.java
in the buildNotification
method if you are curious.
However, let's just check the basic things first. You control what buttons you want to display in each state when you call AudioServiceBackground.setState
and pass in a list of MediaControl
objects. Furthermore you can control which subset of those buttons are shown in the compact view with androidCompactActions
. Can you tell me what values you're passing into setState
on pause?
from audio_service.
It's actually a bit of a mystery how to control what gets shown on the Android lock screen. The code responsible is in AudioService.java in the buildNotification method if you are curious.
I assume ROMs that show lock screen controls like these will use the MediaSession, and choose actions flagged available in the PlaybackState.
from audio_service.
That's also what I would like to assume, but I have seen some strange behaviours despite these flags being set. In any case, the plugin does automatically set these flags based on the MediaControl
objects passed into AudioServiceBackground.setState
.
from audio_service.
I have found a workaround for the problem after a little debugging.
The problem is:
- Pressing pause on the lockscreen calls the pause function an the icon changes to play
- Pressing play on the lockscreen calls the pause function and nothing happens.
My workaround:
play() async {
await _audioPlayer.play(href);
newSubscription = _audioPlayer.onPlayerStateChanged
.where((state) => state == AudioPlayerState.PLAYING)
.listen((state) {
duration = _audioPlayer.duration;
MediaItem mediaItem = MediaItem(
id: 'xx',
album: xx,
title: xx,
artUri: xx,
duration: _audioPlayer?.duration?.inSeconds ?? 200);
AudioServiceBackground.setMediaItem(mediaItem);
AudioServiceBackground.setState(
controls: [rewindControl, pauseControl, forwardControl, stopControl],
basicState: BasicPlaybackState.playing,
updateTime: DateTime.now().millisecondsSinceEpoch,
position: position.inSeconds,
);
});
}
void pause() {
if (AudioServiceBackground.state.basicState == BasicPlaybackState.paused) {
play();
}
else {
_audioPlayer.pause();
AudioServiceBackground.setState(
controls: [playControl, stopControl],
basicState: BasicPlaybackState.paused,
updateTime: DateTime.now().millisecondsSinceEpoch,
position: position.inSeconds );
}
}
Previous code that caused the issue:
play() async {
await _audioPlayer.play(href);
newSubscription = _audioPlayer.onPlayerStateChanged
.where((state) => state == AudioPlayerState.PLAYING)
.listen((state) {
duration = _audioPlayer.duration;
MediaItem mediaItem = MediaItem(
id: 'xx',
album: xx,
title: xx,
artUri: xx,
duration: _audioPlayer?.duration?.inSeconds ?? 200);
AudioServiceBackground.setMediaItem(mediaItem);
AudioServiceBackground.setState(
controls: [rewindControl, pauseControl, forwardControl, stopControl],
basicState: BasicPlaybackState.playing,
updateTime: DateTime.now().millisecondsSinceEpoch,
position: position.inSeconds,
);
});
}
void pause() {
_audioPlayer.pause();
AudioServiceBackground.setState(
controls: [playControl, stopControl],
basicState: BasicPlaybackState.paused,
updateTime: DateTime.now().millisecondsSinceEpoch,
position: position.inSeconds);
}
from audio_service.
Sorry for this issue! The fault was on my end. I wasn't settings a boolean for play and pause for:
(MediaButton button) => player.playPause()
from audio_service.
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs, or use StackOverflow if you need help with audio_service.
from audio_service.
Related Issues (20)
- Asking for notification permission on runtime sometimes leads to crashes if using this library HOT 8
- Is it possible to support custom notification parameters? HOT 3
- Random exception Connection aborted HOT 2
- Android 14/SDK 34 HOT 3
- [just_audio_background] Can't release background audio service at IOS
- Cover art saved as a file does not get displayed on Android Auto HOT 8
- Targeting S+ (version 10000 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
- java.lang.IllegalArgumentException - context shouldn't be null HOT 4
- Adding an option in AudioServiceConfig to switch to lower priority state on AudioProcessingState.completed HOT 3
- `playbackState.add(...)` doesn't update the notification HOT 2
- Shouldn't shuffle the queue when inserting a new queueItem to a specific index HOT 3
- Trouble closing an audio session HOT 3
- Trouble closing audio session HOT 5
- Null pointer exception with audioHandlerInterface inside sendNotificationClicked() HOT 9
- Seekbar is always displayed even without MediaAction.seek HOT 10
- audio_service >=0.17.0-nullsafety.0 depends on js ^0.6.3, please upgrade to 0.7 HOT 4
- Play button on A14 notification not working when targeting API 29 HOT 1
- Deadlock with android_content_provider HOT 2
- Media notification can be swiped away while audio is playing HOT 6
- androidNotificationOngoing setting is ignored HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from audio_service.