[iOS 转]系统声音服务与震动

news/2025/2/22 23:41:08

系统声音服务(System Sound Services)提供了一个接口,用于播放不超过30秒的声音。它支持的文件格式有限,具体地说只有CAF、AIF和使用PCM或IMA/ADPCM数据的WAV文件。由于这些函数没有提供操纵声音和控制音量的功能,所以当你为多媒体或者游戏创建专门的配乐时,不要使用系统声音服务。


iOS使用系统声音服务来支持三种不同的通知:
1. 声音:立刻播放一个简单的声音文件。如果手机被设置为静音,用户什么也听不到
2. 提醒:播放一个声音文件,如果手机被设置为静音或震动,将通过震动提醒用户
3. 震动:震动手机,而不考虑其他设置

要在项目中使用系统声音服务,首先要导入AudioToolbox.h

#import <AudioToolbox/AudioToolbox.h>

系统声音服务并非是通过类实现的,而是使用传统的C语言函数调用来触发播放操作。要播放音频,需要使用的两个函数是AudioServicesCreateSystemSoundID 和 AudioServicesPlaySystemSound。还需要声明一个类型为SystemSoundID的变量,它表示要使用的声音文件。下面演示了如何加载并播放声音:

- (IBAction)testSystemSound:(id)sender 
{
    SystemSoundID soundID;
    NSString *strSoundFile = [[NSBundle mainBundle] pathForResource:@"alertsound" ofType:@"wav"];
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:strSoundFile],&soundID);
    AudioServicesPlaySystemSound(soundID);
}

其实这段代码应该这样来理解:

在写这个功能时最主要是两句代码:

SystemSoundID soundID;
AudioServicesPlaySystemSound(soundID);

soundID ==> 1000 ~1035 以此类推

震动:

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

如果视图震动不支持震动的设备(如iPad2),将静默失败。因此将震动代码留在应用程序中不会有任何害处,而不管目标设备是什么。


http://www.niftyadmin.cn/n/1557682.html

相关文章

Ansible12:使用vault配置加密

目录 简介Ansible-vault常用操作Ansible-vault配置示例简介 在使用ansible的过程中&#xff0c;不可避免的会存储一些敏感信息&#xff0c;比如在变量文件中存储帐号密码信息等。 ansible通过ansible-vault命令行工具来提供对敏感文件的加密和解密。 ansible-vault可以创建、加…

react-antd Modal对话框自定义标题和图标

最近使用antd的modal对话框&#xff0c;头部和底部需要自己定义一些其他的东西。在官方文档里找到了写法。 一、效果 这个是官方的效果图 下面是我要实现的效果图&#xff1a; 这个就需要对header,footer自定义了。 二、实现过程 查找antd官网发现title和footer都可以传入…

[iOS 系统]系统音频.相册.相机 权限判断

自己写的demo 留下以供自己回顾 需要添加的库 #import <AudioToolbox/AudioToolbox.h> #import <AVFoundation/AVFoundation.h> #import <AssetsLibrary/AssetsLibrary.h> .m文件实现 #import "ViewController.h" #import <AudioToolbox/Au…

Cesium设置飞到矩形范围中心点(获取矩形范围中心点)

前言&#xff1a; 最近一个需求给了一个矩形范围让获取矩形范围中心点&#xff0c;找了api&#xff0c;记录一下实现过程。 一、需求获取矩形范围中心点 给了一个Rectangle&#xff08;w,s,e,n&#xff09;范围求取中心点。&#xff08;w,s,e,n为西南东北即西南为经度&#…

[iOS 文本输入限制]限制输入特定字符串等

通常我们需要限制输入数字 字符 字母 或者中文等等 一般情况我们用到textfiled的代理方法去做 // -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{NSCharacterSet *charer [NSCharacterSet…

cesium点击获取鼠标位置

很常见的功能&#xff0c;鼠标点击获取点击的经纬度。 var handler new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); //此方法获取鼠标点击位置经纬度handler.setInputAction(function (e) {var position viewer.scene.pickPosition(e.position);//将笛卡尔坐标转…

oracle 架构和一些工具了解

oracle的架构大概分为3部分&#xff0c; 客户端&#xff1a;用户端 oracle instance&#xff1a;叫做实例&#xff0c;由内存结构&#xff08;内存池或者叫SGA&#xff09;和后台进程组成。Oracle Instance是Oracle RDBMS的核心之一&#xff0c;负责RDBMS的管理功能。内存结构有…

[iOS 禁用第三方输入法] 禁用第三方输入法+ExtensionPointIdentifier理解

自从iOS8开始,许多第三方输入法出现,但是旧项目里面没有对第三方输入法做过适配,倒是用户出现许多问题, 网上有代码,在 Appdelegate.m中,添加 - (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier…