2016-08-02 55 views
3

我正在使用下面的代碼。而且一旦應用程序進入後臺,此代碼就可以完美工作。如果應用程序沒有進入後臺,我們嘗試播放和暫停正在播放的歌曲,則播放和暫停圖像不會更改。每次在這個case UIEventSubtypeRemoteControlPause:案例中斷點都會出現廣告。MPNowPlayingInfoCenter播放暫停圖像不變

albumArt= [[MPMediaItemArtwork alloc] initWithImage: img.image]; 
      NSDictionary *playingNowInfo = @{MPMediaItemPropertyTitle: (self.currentItem.songname==nil) ? (@"") : (self.currentItem.songname), 
              MPMediaItemPropertyPlaybackDuration: @(self.currentItem.duration), 
              MPMediaItemPropertyArtist:[MusicSetting getArtistName], 
              MPMediaItemPropertyAlbumTitle:(self.currentItem.albumname==nil) ? (@"") : (self.currentItem.albumname), 
              MPNowPlayingInfoPropertyPlaybackRate: @(self.player.rate), 
              MPNowPlayingInfoPropertyElapsedPlaybackTime: @(CMTimeGetSeconds(self.player.currentItem.currentTime)), 
              MPMediaItemPropertyArtwork:albumArt, 
              }; 
      [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = playingNowInfo; 

#pragma mark - Remote Control 

- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent { 

    // [self.manager remoteControlReceivedWithEvent:receivedEvent]; 
    if (receivedEvent.type == UIEventTypeRemoteControl) { 

     switch (receivedEvent.subtype) { 

      case UIEventSubtypeRemoteControlPlay: 
       [self Onclick_Play_Pause:self]; 
       break; 

      case UIEventSubtypeRemoteControlPause: 
       [self Onclick_Play_Pause:self]; 
       break; 

      case UIEventSubtypeRemoteControlTogglePlayPause: 

       //if ([self.manager.player isPlaying]) 
       if(self.manager.player.rate != 0) 
       { 
        [self.manager.player pause]; 
       } 

       else { 
        [self.manager.player play]; 
       } 
       break; 
      case UIEventSubtypeRemoteControlNextTrack: 
       [self Onclick_next:self]; 
       NSLog(@"Next song play"); 
       break; 
      case UIEventSubtypeRemoteControlPreviousTrack: 
       [self Onclick_prev:self]; 
       NSLog(@"Prev song play"); 
       break; 

      default: 
       break; 
     } 
    } 
} 

- (IBAction)Onclick_Play_Pause:(id)sender { 
    (AppObj).playerview_height=playviewHeight; 

    if(self.manager.player.rate != 0) 
    { 
     [MusicSetting set_SongStatus:@"Pause"]; 
     [self.Play_PauseBtn setImage:[UIImage imageNamed:@"pauseImg"] forState:UIControlStateNormal]; 
     [self.manager pause]; 
    } 
    else { 
     [MusicSetting set_SongStatus:@"Play"]; 
     [MusicSetting set_isMusicPlay:@"Playing"]; 

     [self.Play_PauseBtn setImage:[UIImage imageNamed:@"playImg"] forState:UIControlStateNormal]; 

     [self.manager play]; 
    } 
} 

謝謝!

+0

請上傳您的' - (IBAction爲)Onclick_Play_Pause:(ID)sender'此事件 –

回答

0
- (IBAction)Onclick_Play_Pause:(id)sender { 
    MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter]; 
     NSMutableDictionary *playingInfo = [NSMutableDictionary dictionaryWithDictionary:center.nowPlayingInfo]; 
    (AppObj).playerview_height=playviewHeight; 

    if(self.manager.player.rate != 0) 
    { 
     [MusicSetting set_SongStatus:@"Pause"]; 
     [self.Play_PauseBtn setImage:[UIImage imageNamed:@"pauseImg"] forState:UIControlStateNormal]; 
     [self.manager pause]; 
     //set playback rate 
     [playingInfo setObject:[NSNumber numberWithFloat:0] forKey:MPNowPlayingInfoPropertyPlaybackRate]; 
    } 
    else 
    { 
     [MusicSetting set_SongStatus:@"Play"]; 
     [MusicSetting set_isMusicPlay:@"Playing"]; 

     [self.Play_PauseBtn setImage:[UIImage imageNamed:@"playImg"] forState:UIControlStateNormal]; 
     [self.manager play]; 
     //set playback rate 
     [playingInfo setObject:[NSNumber numberWithFloat:1] forKey:MPNowPlayingInfoPropertyPlaybackRate]; 
    } 
    center.nowPlayingInfo = playingInfo; 

} 
0

嗨,請檢查已經添加在info.plist中

info.plist addition

+1

我已經加入這一行@Surbhi加爾格 –

0

,可以有以下代碼

case UIEventSubtypeRemoteControlPlay: 
      [self Onclick_Play_Pause:self]; 
      break; 

     case UIEventSubtypeRemoteControlPause: 
      [self Onclick_Play_Pause:self]; 
      break; 

     case UIEventSubtypeRemoteControlTogglePlayPause: 

      //if ([self.manager.player isPlaying]) 
      if(self.manager.player.rate != 0) 
      { 
       [self.manager.player pause]; 
      } 

      else { 
       [self.manager.player play]; 
      } 
      break; 

在前兩種情況下,以下你叫你的方法,但不是在第三個你能分享你的方法的定義嗎?

+0

是否音樂就會停止? –

+0

@MonikaPatel你也問過同樣的事情,請不要評論,甚至沒有閱讀你自己的意見。 –