2016-08-02 17 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:このイベント –

答えて

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

こんにちは確認してくださいあなたは、あなたの方法ではなく、三番目に呼ばれる最初の2つのケースでコード

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; 

を以下しているInfo.plistファイル

info.plist addition

+1

sender'(ID)を私はすでに@Surbhiガーグ –

0

を以下を追加しましたあなたのメソッドの定義を共有できますか?

+0

この行を追加した音楽が停止していますか? –

+0

@MonikaPatelあなたも同じことを頼んだら、あなた自身のコメントを読んでいなくてもコメントしないでください。 –

関連する問題