Play position is stored every 10 seconds, and status is stored every time playback is started, paused, stopped, or seeked

CQTexperiment
Christopher Snowhill 2022-01-09 02:34:29 -08:00
parent 7fe67b1630
commit 3e72087a41
2 changed files with 25 additions and 4 deletions

View File

@ -37,6 +37,7 @@ extern NSDictionary * makeRGInfo(PlaylistEntry *pe);
CogStatus playbackStatus;
double position;
double lastPosition;
BOOL seekable;
BOOL fading;

View File

@ -99,7 +99,9 @@ NSString *CogPlaybackDidStopNotficiation = @"CogPlaybackDidStopNotficiation";
- (IBAction)pause:(id)sender
{
[audioPlayer pause];
[[NSUserDefaults standardUserDefaults] setInteger:CogStatusPaused forKey:@"lastPlaybackStatus"];
[audioPlayer pause];
[self setPlaybackStatus: CogStatusPaused];
[self sendMetaData];
@ -107,13 +109,17 @@ NSString *CogPlaybackDidStopNotficiation = @"CogPlaybackDidStopNotficiation";
- (IBAction)resume:(id)sender
{
[audioPlayer resume];
[[NSUserDefaults standardUserDefaults] setInteger:CogStatusPlaying forKey:@"lastPlaybackStatus"];
[audioPlayer resume];
}
- (IBAction)stop:(id)sender
{
[audioPlayer stop];
[[NSUserDefaults standardUserDefaults] setInteger:CogStatusStopped forKey:@"lastPlaybackStatus"];
[audioPlayer stop];
[self sendMetaData];
}
@ -181,6 +187,8 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe)
DLog(@"PLAYLIST CONTROLLER: %@", [playlistController class]);
[playlistController setCurrentEntry:pe];
lastPosition = -1;
[self setPosition:[offset doubleValue]];
@ -236,7 +244,7 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe)
- (void)updatePosition:(id)sender
{
double pos = [audioPlayer amountPlayed];
[self setPosition:pos];
[[playlistController currentEntry] setCurrentPosition:pos];
@ -644,6 +652,18 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe)
- (void)setPosition:(double)p
{
if (p == 0 || p < lastPosition || (p > lastPosition && (p - lastPosition) >= 10.0))
{
PlaylistEntry * pe = [playlistController currentEntry];
NSInteger lastTrackPlaying = [pe index];
[[NSUserDefaults standardUserDefaults] setInteger:CogStatusPlaying forKey:@"lastPlaybackStatus"];
[[NSUserDefaults standardUserDefaults] setInteger:lastTrackPlaying forKey:@"lastTrackPlaying"];
[[NSUserDefaults standardUserDefaults] setDouble:p forKey:@"lastTrackPosition"];
lastPosition = p;
}
position = p;
[[playlistController currentEntry] setCurrentPosition:p];