zoukankan      html  css  js  c++  java
  • iOS 耳机线控

    当你使用iphone的时候听音乐的时候,播放器在后台运行的时候,你仍然可以通过耳机来进行操作,完成曲目切换,快进,快退等功能!
    当然你的程序不一定是播放器应用,但是我们仍然可以让它具有这个功能,让用户通过耳机进行一些比较简单常用的操作,这样是不是很酷呢?
    具体的怎么实现呢?废话不多说,我们直奔主题:
    1,允许接受Remote事件

    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
     

    2,处理输入事件:

    - (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {
         if (receivedEvent.type == UIEventTypeRemoteControl){
    
            switch (receivedEvent.subtype) {   
                  case UIEventSubtypeRemoteControlTogglePlayPause:
    //do something
             break;
            case UIEventSubtypeRemoteControlPreviousTrack:
    //do something
            break;
            case UIEventSubtypeRemoteControlNextTrack:
               //do something
             break;
                 default:
           break;
        }
      }
    }
    3,在使用完毕的时候停止接受Remote事件
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
    [self resignFirstResponder];
     

    4,附上完整的事件类型代码,供大家使用

     
    typedef enum {
    
    UIEventSubtypeNone = 0,
    
     UIEventSubtypeMotionShake = 1,
    
     UIEventSubtypeRemoteControlPlay = 100,
    
    UIEventSubtypeRemoteControlPause = 101,
    
    UIEventSubtypeRemoteControlStop = 102,
    
    UIEventSubtypeRemoteControlTogglePlayPause = 103,
    
    UIEventSubtypeRemoteControlNextTrack = 104,
    
    UIEventSubtypeRemoteControlPreviousTrack = 105,
    
    UIEventSubtypeRemoteControlBeginSeekingBackward = 106,
    
    UIEventSubtypeRemoteControlEndSeekingBackward = 107,
    
    UIEventSubtypeRemoteControlBeginSeekingForward = 108,
    
    UIEventSubtypeRemoteControlEndSeekingForward = 109,
    
    } UIEventSubtype;

    补充,转载:

    最近发现也有人在坛子里发帖求获取ios耳机线控事件,下面给大家分享一下代码,

    -(BOOL)canBecomeFirstResponder{
        NSLog(@"_____%s_____",__FUNCTION__);
        return YES;
    }
    
    
    //received remote event
    -(void)remoteControlReceivedWithEvent:(UIEvent *)event{
        NSLog(@"event tyipe:::%d   subtype:::%d",event.type,event.subtype);
        //type==2  subtype==单击暂停键:103,双击暂停键104
        if (event.type == UIEventTypeRemoteControl) {
            switch (event.subtype) {
    
                case UIEventSubtypeRemoteControlPlay:{
                    NSLog(@"play---------");
                }break;
                case UIEventSubtypeRemoteControlPause:{
                    NSLog(@"Pause---------");
                }break;
                case UIEventSubtypeRemoteControlStop:{
                    NSLog(@"Stop---------");
                }break;
                case UIEventSubtypeRemoteControlTogglePlayPause:{
                    //单击暂停键:103
                    NSLog(@"单击暂停键:103");
                }break;
                case UIEventSubtypeRemoteControlNextTrack:{
                    //双击暂停键:104
                    NSLog(@"双击暂停键:104");
                }break;
                case UIEventSubtypeRemoteControlPreviousTrack:{
                    NSLog(@"三击暂停键:105");
                }break;
                case UIEventSubtypeRemoteControlBeginSeekingForward:{
                    NSLog(@"单击,再按下不放:108");
                }break;
                case UIEventSubtypeRemoteControlEndSeekingForward:{
                    NSLog(@"单击,再按下不放,松开时:109");
                }break;
                default:
                    break;
            }
        }
    }
  • 相关阅读:
    WinForm控件常用设置(转)
    EF Core性能优化(一)
    如何更改已经释放的(released)传输请求(TR)的描述
    在新窗口调用Tcode[ABAP4_CALL_TRANSACTION]
    [代码]如何取得表/结构的列名字(cl_abap_structdescr)
    [代码]创建.ZIP压缩文件[CL_ABAP_ZIP]
    如何在表维护视图(maintenance view)上添加自定义按钮(SM30)
    [代码]基于动态内表的ALV
    物料单位转换函数[MD_CONVERT_MATERIAL_UNIT]
    拆分全路径名得到路径+文件名[STPU1_EXTRACT_FILENAME]
  • 原文地址:https://www.cnblogs.com/Milo-CTO/p/4498520.html
Copyright © 2011-2022 走看看