Hi ... It does not display the title and image to controll center music player in debug and release mode!
B4X:
Private Sub Application_Start (Nav As NavigationController)
'SetDebugAutoFlushLogs(True) 'Uncomment if program crashes before all logs are printed.
NavControl = Nav
NativeMe = Me
NativeMe.RunMethod("setAudioSession", Null)
NativeMe.RunMethod("register", Null)
Page1.Initialize("Page1")
Page1.Title = "Page 1"
Page1.RootPanel.Color = Colors.White
Page1.RootPanel.LoadLayout("layMain")
NavControl.ShowPage(Page1)
End Sub
Private Sub Page1_Resize(Width As Int, Height As Int)
End Sub
Private Sub Application_Background
End Sub
Public Sub ControlEvent (Command As String)
Select Command
Case "play"
vp1.Play
Case "pause"
vp1.Pause
End Select
End Sub
Sub Test1_Click
vp1.LoadVideoUrl("https://stream-dc1.radioparadise.com/mp3-32")
vp1.Play
Wait For VP1_Ready (Success As Boolean)
Sleep(500)
artwork = NativeMe.RunMethod("createArtwork:", Array(LoadBitmapResize(File.DirAssets, "icon.png", 64, 64, True)))
SetPlayingInfo(CreateMap("title": "Test 1", "artwork": artwork))
End Sub
Sub Test2_Click
vp1.LoadVideo(File.DirAssets,"37470.mp3")
vp1.Play
Wait For VP1_Ready (Success As Boolean)
Sleep(500)
artwork = NativeMe.RunMethod("createArtwork:", Array(LoadBitmapResize(File.DirAssets, "icon.png", 64, 64, True)))
SetPlayingInfo(CreateMap("title": "Radio Paradise", "artwork": artwork))
End Sub
Sub SetPlayingInfo (info As Map)
Dim NowPlayingInfoCenter As NativeObject
NowPlayingInfoCenter = NowPlayingInfoCenter.Initialize("MPNowPlayingInfoCenter").RunMethod("defaultCenter", Null)
Dim no As NativeObject = info
NowPlayingInfoCenter.SetField("nowPlayingInfo", no.RunMethod("ToDictionary", Null))
End Sub
#If OBJC
@import MediaPlayer;
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
- (void)setAudioSession {
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *err = nil;
BOOL success = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&err];
if (success) {
success = [audioSession setActive:YES error:&err];
success = [audioSession setPreferredSampleRate:4096 error:nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
}
if (!success) {
[NSException raise:@"" format:@"Error setting audio session: %@", err];
NSLog(@"Error setting category Audio Session: %@", [err localizedDescription]);
}
}
- (void)register {
MPRemoteCommandCenter* center = [MPRemoteCommandCenter sharedCommandCenter];
center.playCommand.enabled = true;
center.pauseCommand.enabled = true;
[center.playCommand addTarget:self action:@selector(play)];
[center.pauseCommand addTarget:self action:@selector(pause)];
}
- (MPMediaItemArtwork*)createArtwork:(UIImage*) image {
return [[MPMediaItemArtwork alloc] initWithBoundsSize:image.size requestHandler:^UIImage* _Nonnull(CGSize aSize) { return image; }];
}
- (MPRemoteCommandHandlerStatus ) play {
[self.bi raiseEvent:nil event:@"controlevent:" params:@[@"play"]];
return MPRemoteCommandHandlerStatusSuccess;
}
- (MPRemoteCommandHandlerStatus ) pause {
[self.bi raiseEvent:nil event:@"controlevent:" params:@[@"pause"]];
return MPRemoteCommandHandlerStatusSuccess;
}
#End If
Last edited: