zoukankan      html  css  js  c++  java
  • iOS 监听音量调节事件

    做项目需要音量调节的事件来控制其他动作,找了半天,调试了一下,一下代码都可以直接使用。经过测试的。
    有两个方法:
    方法一:
    添加AudioToolbox.framework
    Appdelegate.m中,添加头文件#include
    在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions方法中添加

        AudioSessionInitialize(NULL, NULL, NULL, NULL);

        AudioSessionSetActive(true);

        AudioSessionAddPropertyListener(kAudioSessionProperty_CurrentHardwareOutputVolume ,

                                        volumeListenerCallback,

                                        (__bridge void *)(self)

                                        );

    外加回调函数

    void volumeListenerCallback (

                                 void                      *inClientData,

                                 AudioSessionPropertyID    inID,

                                 UInt32                    inDataSize,

                                 const void                *inData

                                 ){

        const float *volumePointer = inData;

        float volume = *volumePointer;

        NSLog(@"volumeListenerCallback %f", volume);

    }

    搞定。

    方法二:较为简单实用

    添加MediaPlayer.framework 

       AVFoundation.framework

    在Appdelegate.m中

    在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions方法中添加

      NSError *error;
      [[AVAudioSession sharedInstance] setActive:YES error:&error];//加上这句可以在按音量键的时候不显示音量提示视图

        [[NSNotificationCenter defaultCenter] addObserver:self

                                                 selector:@selector(volumeChanged:)

                                                 name:@"AVSystemController_SystemVolumeDidChangeNotification"

                                                   object:nil];

        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];//注,ios9上不加这一句会无效,加了这一句后,

        //在移除通知时候加上这句[[UIApplication sharedApplication] endReceivingRemoteControlEvents];

    然后添加方法

    -(void)volumeChanged:(NSNotification *)noti

    {                                   

        float volume =

        [[[noti userInfo]

          objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"]

         floatValue];

        NSLog(@"volumn is %f", volume);

    }

     在viewdidload中新增一个音量视图替换掉系统的音量视图

        MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(0, 0, 200, 20)];

        volumeView.center = CGPointMake(-550,370);//设置中心点,让音量视图不显示在屏幕中

        [volumeView sizeToFit];

        [self.view addSubview:volumeView];

     到此监听音量调节事件就搞定了

     
  • 相关阅读:
    OK335xS-Android mkmmc-android-ubifs.sh hacking
    OK335xS-Android pack-ubi-256M.sh hacking
    OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建
    Qt Quick Hello World hacking
    Qt QML referenceexamples attached Demo hacking
    QT 5.4.1 for Android Ubuntu QtWebView Demo
    I.MX6 working note for high efficiency
    QT 5.4.1 for Android Windows环境搭建
    mkbootimg hacking
    Generate And Play A Tone In Android hacking
  • 原文地址:https://www.cnblogs.com/weilaikeji/p/2952828.html
Copyright © 2011-2022 走看看