iOS 声音按键的监听

一、 添加两个框架 :MediaPlayer.framework和AudioToolbox.framework

  1. 添加两个头文件

#import <MediaPlayer/MediaPlayer.h>

#import <AudioToolbox/AudioToolbox.h>

  1. 添加通知

一般在程序刚刚启动的时候添加:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

}

实现监听的方法:

- (void) volumeChanged:(NSNotification *) notification

{

// 获取当前系统音量的值范围是0.0-1.0,是一个浮点型

float volume =

[[[notification userInfo]

objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"]

floatValue];

NSLog(@"----音量:%f-------",volume);

if (!self.isMuted && volume < self.volume) {

[[MPMusicPlayerController applicationMusicPlayer] setVolume:0.0];

} else if (volume > self.volume){

[[MPMusicPlayerController applicationMusicPlayer] setVolume:volume];

}

self.volume = volume;

}

// 判断是否静音(一般定义一个全局变量,在其getter方法里实现)

- (BOOL) isMuted

{

CFStringRef route;

UInt32 routeSize = sizeof(CFStringRef);

OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &routeSize, &route);

if (status == kAudioSessionNoError)

{

if (route == NULL || !CFStringGetLength(route))

return TRUE;

}

return FALSE;

}

注意记得销毁通知

- (void) dealloc

{

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

}

时间: 2024-11-05 22:43:13

iOS 声音按键的监听的相关文章

iOS 声音按键监听和实现

首先包含这两个头文件以及加入对应的框架 #import <MediaPlayer/MediaPlayer.h> #import <AudioToolbox/AudioToolbox.h> 添加声音通知的监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidCha

Android学习按键事件监听与Command模式

Android学习按键事件监听与Command模式 - Dufresne - 博客园 ? 一 Command模式 意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化: 对请求排队或记录请求日志,以及支持可撤销的操作. 将请求被封装成一个对象,当向某对象提交请求时,使我们可以不用去知道被具体的请求的操作或者请求的接收者, 实现了动作的请求者对象和动作的执行者对象之间的解耦合. 适用性: 使用Command模式代替callback形式的回调应用: 在不同的时刻指定.排列和执行请

JS组合按键事件监听插件

[1].[代码] [JavaScript]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 7

iOS:Reachability网络监听

iOS利用Reachability确认网络环境3G/WIFI 开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息.如果没有处理它们,是不会通过Apple的审查的. Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法.在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中.如下图: 我们来看看Reachability.h文件中的具体内容: #import <Found

ios 文本框变化 监听的3种方式

声明属性 @interface LoginControler() <UITextFieldDelegate> @property (weak, nonatomic) IBOutlet UITextField *userName; @end 1,代理方式 -(void) viewDidLoad {     _userName.delegate = self;    //添加代理 } -(BOOL)textField:(UITextField *)textField shouldChangeCha

EditText 内容 按键 输入法 监听 示例

内容.输入法.焦点 1.弹出窗口时自动让控件获取焦点,并弹出输入法.注意要在onCreate中法中设置,不能在onResume中设置. et.requestFocus(); new Timer().schedule(new TimerTask() {//Timer是一种定时器工具,用来在一个后台线程计划执行指定任务. //它可以计划执行一个任务一次或反复多次.TimerTask是一个抽象类,它的子类代表一个可以被Timer计划的任务. @Override public void run() {/

iOS手机信号网络监听

//设置网络监听 - (void)monitorNetworking { //监听网络状态 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; //显然是枚举值 /* typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { AFNetworkReachabilityStatusUnknown = -1,//未识别的网络

iOS 通讯录编程,监听系统通讯录变更

监听通讯录变更 客户端代码需要这么实现: /* 移除注册函数 */ -(void)dealloc{ ABAddressBookUnregisterExternalChangeCallback(_addressBook, ContactsChangeCallback, nil); } /* 注册回调函数 */ - (id)init { self = [super init]; [self addressBookHandle]; ABAddressBookRegisterExternalChange

[iOS]利用通知实现监听系统键盘

// // ViewController.m // text // // Created by 李东旭 on 16/1/22. // Copyright © 2016年 李东旭. All rights reserved. // #import <UIKit/UIKit.h> #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)v