2013-03-15 35 views
6

Tôi có một yêu cầu để xử lý các sự kiện nút phát/tạm dừng tai nghe ở nền trước. Làm cách nào để tôi có thể xử lý cùng một tình huống ở chế độ nền bằng cách sử dụng mã bên dướiLàm cách nào để xử lý các sự kiện nút phát/tạm dừng ở mặt trước trong ios

if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)]){ 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; 
    [self becomeFirstResponder]; 
    NSLog(@"Responds!"); 
} 

Vui lòng giúp giải thích hoặc mã mẫu nếu có thể. Tôi đã thực hiện rất nhiều nghiên cứu nhưng không giúp đỡ.

Trả lời

10

Bạn phải kiểm tra tiêu chí này:

  1. Sửa info.plist của bạn để quy định rằng bạn làm âm thanh (UIBackgroundModes) ở chế độ nền cũng như foreground.
  2. Thực hiện chức năng này:

    - (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent 
    { 
        if (theEvent.type == UIEventTypeRemoteControl) 
        { 
        switch(theEvent.subtype) { 
        case UIEventSubtypeRemoteControlTogglePlayPause: 
          //Insert code 
          break; 
         case UIEventSubtypeRemoteControlPlay: 
          //Insert code 
          break; 
         case UIEventSubtypeRemoteControlPause: 
          // Insert code 
          break; 
         case UIEventSubtypeRemoteControlStop: 
          //Insert code. 
          break; 
         default: 
          return; 
        } 
        } 
    } 
    

... rõ ràng, thay thế các "// chèn mã" với bất cứ chức năng là có liên quan trong ứng dụng của bạn.

3> Cuối cùng, để cho điều đó trên hàm được gọi, chèn này trong trường hợp viewDidAppear của bạn:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    if ([self canBecomeFirstResponder]) { 
     [self becomeFirstResponder]; 
    } 

cũng xin vui lòng xem liên kết này: http://www.sagorin.org/2011/11/29/ios-playing-audio-in-background-audio/

+0

nhờ trả lời của bạn, tuy nhiên tôi có thể xử lý các sự kiện trong nền cũng Tôi đã thêm UIBackgroundModes trong plist nhưng tôi không có ý tưởng về xử lý sự kiện tiền cảnh. Tôi đã thử trigging phương pháp được đề cập '- (void) remoteControlReceivedWithEvent: (UIEvent *) theEvent' nhưng không có may mắn. Bạn có thể vui lòng giải thích cho tôi làm thế nào chúng ta có thể thêm các phím foreground trong plist. –

+0

Awesome..it đã làm việc cho tôi ..! – JgdGuy

+0

Sau 2 phút, nếu nhấn nút tai nghe, ứng dụng Nhạc sẽ bắt đầu và phát âm thanh trước đó. –

9

Có một cách khác để thực hiện điều khiển máy nghe nhạc từ tai nghe. sử dụng MPRemoteCommandCenter tooglePlayPauseCommand. Apple documentation

[[MPRemoteCommandCenter sharedCommandCenter].togglePlayPauseCommand addTarget:self action:@selector(onTooglePlayPause)]; 
4

2 phiên bản nhanh chóng để giải quyết slobodans:

MPRemoteCommandCenter.sharedCommandCenter().togglePlayPauseCommand.addTarget(self, action: #selector(togglePlayStop(_:))); 
Các vấn đề liên quan