博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS系统声音列表
阅读量:7015 次
发布时间:2019-06-28

本文共 9100 字,大约阅读时间需要 30 分钟。

iOS系统声音列表

 

效果

 

说明

1. 点击cell就能发出声音

2. 只需要给出声音编号,就可以,非常简单易用

 

源码

////  SystemSound.h//  SystemSound////  Created by YouXianMing on 15/8/24.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import 
#import "SoundInfomation.h"@interface SystemSound : NSObject/** * 获取系统消息列表 */+ (void)accessSystemSoundsList;/** * 系统声音的列表 * * @return SoundInfomation对象数组 */+ (NSArray *)systemSounds;/** * 播放声音 * * @param sound 声音 */+ (void)playWithSound:(SoundInfomation *)sound;/** * 根据声音ID号播放声音 * * @param soundID 声音ID号码 */+ (void)playWithSoundID:(UInt32)soundID;@end
////  SystemSound.m//  SystemSound////  Created by YouXianMing on 15/8/24.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "SystemSound.h"#import 
static NSMutableArray *_systemSounds = nil;@implementation SystemSound+ (void)accessSystemSoundsList { static dispatch_once_t predicate; dispatch_once(&predicate, ^{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSMutableArray *audioFileList = [NSMutableArray array]; _systemSounds = [NSMutableArray array]; // 读取文件系统 NSFileManager *fileManager = [[NSFileManager alloc] init]; NSURL *directoryURL = [NSURL URLWithString:@"/System/Library/Audio/UISounds"]; NSArray *keys = [NSArray arrayWithObject:NSURLIsDirectoryKey]; NSDirectoryEnumerator *enumerator = [fileManager enumeratorAtURL:directoryURL includingPropertiesForKeys:keys options:0 errorHandler:^(NSURL *url, NSError *error) { return YES; }]; for (NSURL *url in enumerator) { NSError *error; NSNumber *isDirectory = nil; if (! [url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:&error]) { } else if (![isDirectory boolValue]) { [audioFileList addObject:url]; SystemSoundID soundID; AudioServicesCreateSystemSoundID((__bridge_retained CFURLRef)url, &soundID); SoundInfomation *sound = [[SoundInfomation alloc] init]; sound.soundID = soundID; sound.soundUrl = url; sound.soundName = url.lastPathComponent; [_systemSounds addObject:sound]; } } // 读取文件 NSString *path = [[NSBundle mainBundle] pathForResource:@"SystemSoundList" ofType:nil]; NSData *data = [[NSData alloc] initWithContentsOfFile:path]; NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSArray *array = [string componentsSeparatedByString:@"\n"]; for (int i = 0; i < array.count; i++) { NSString *tmp = array[i]; NSArray *soundInfo = [tmp componentsSeparatedByString:@"\t"]; SoundInfomation *sound = [[SoundInfomation alloc] init]; sound.soundID = (unsigned int)[soundInfo[0] integerValue]; sound.soundName = soundInfo[1]; [_systemSounds addObject:sound]; } }); });}+ (NSArray *)systemSounds { return _systemSounds;}+ (void)playWithSound:(SoundInfomation *)sound { AudioServicesPlaySystemSound(sound.soundID);}+ (void)playWithSoundID:(UInt32)soundID { AudioServicesPlaySystemSound(soundID);}@end
////  SoundInfomation.h//  SystemSound////  Created by YouXianMing on 15/8/24.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import 
@interface SoundInfomation : NSObject/** * 系统声音编号(必须有) */@property (nonatomic) UInt32 soundID;/** * 系统声音地址 */@property (nonatomic, strong) NSURL *soundUrl;/** * 声音的名字 */@property (nonatomic, strong) NSString *soundName;@end
////  SoundInfomation.m//  SystemSound////  Created by YouXianMing on 15/8/24.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "SoundInfomation.h"@implementation SoundInfomation@end
new-mail.caf    MailReceived   mail-sent.caf    MailSent   Voicemail.caf    VoicemailReceived   ReceivedMessage.caf    SMSReceived   SentMessage.caf    SMSSent   alarm.caf    CalendarAlert   low_power.caf    LowPower   sms-received1.caf    SMSReceived_Alert   sms-received2.caf    SMSReceived_Alert   sms-received3.caf    SMSReceived_Alert   sms-received4.caf    SMSReceived_Alert   -    SMSReceived_Vibrate   sms-received1.caf    SMSReceived_Alert   sms-received5.caf    SMSReceived_Alert   sms-received6.caf    SMSReceived_Alert   Voicemail.caf    -   tweet_sent.caf    SMSSent   Anticipate.caf    SMSReceived_Alert   Bloom.caf    SMSReceived_Alert   Calypso.caf    SMSReceived_Alert   Choo_Choo.caf    SMSReceived_Alert   Descent.caf    SMSReceived_Alert   Fanfare.caf    SMSReceived_Alert   Ladder.caf    SMSReceived_Alert   Minuet.caf    SMSReceived_Alert   News_Flash.caf    SMSReceived_Alert   Noir.caf    SMSReceived_Alert   Sherwood_Forest.caf    SMSReceived_Alert   Spell.caf    SMSReceived_Alert   Suspense.caf    SMSReceived_Alert   Telegraph.caf    SMSReceived_Alert   Tiptoes.caf    SMSReceived_Alert   Typewriters.caf    SMSReceived_Alert   Update.caf    SMSReceived_Alert   ussd.caf    USSDAlert   SIMToolkitCallDropped.caf    SIMToolkitTone   SIMToolkitGeneralBeep.caf    SIMToolkitTone   SIMToolkitNegativeACK.caf    SIMToolkitTone   SIMToolkitPositiveACK.caf    SIMToolkitTone   SIMToolkitSMS.caf    SIMToolkitTone   Tink.caf    PINKeyPressed   ct-busy.caf    AudioToneBusy   ct-congestion.caf    AudioToneCongestion   ct-path-ack.caf    AudioTonePathAcknowledge   ct-error.caf    AudioToneError   ct-call-waiting.caf    AudioToneCallWaiting   ct-keytone2.caf    AudioToneKey2   lock.caf    ScreenLocked   unlock.caf    ScreenUnlocked   -    FailedUnlock   Tink.caf    KeyPressed   Tock.caf    KeyPressed   Tock.caf    KeyPressed   beep-beep.caf    ConnectedToPower   RingerChanged.caf    RingerSwitchIndication   photoShutter.caf    CameraShutter   shake.caf    ShakeToShuffle   jbl_begin.caf    JBL_Begin   jbl_confirm.caf    JBL_Confirm   jbl_cancel.caf    JBL_Cancel   begin_record.caf    BeginRecording   end_record.caf    EndRecording   jbl_ambiguous.caf    JBL_Ambiguous   jbl_no_match.caf    JBL_NoMatch   begin_video_record.caf    BeginVideoRecording   end_video_record.caf    EndVideoRecording   vc~invitation-accepted.caf    VCInvitationAccepted   vc~ringing.caf    VCRinging   vc~ended.caf    VCEnded   ct-call-waiting.caf    VCCallWaiting   vc~ringing.caf    VCCallUpgrade   dtmf-0.caf    TouchTone   dtmf-1.caf    TouchTone   dtmf-2.caf    TouchTone   dtmf-3.caf    TouchTone   dtmf-4.caf    TouchTone   dtmf-5.caf    TouchTone   dtmf-6.caf    TouchTone   dtmf-7.caf    TouchTone   dtmf-8.caf    TouchTone   dtmf-9.caf    TouchTone   dtmf-star.caf    TouchTone   dtmf-pound.caf    TouchTone   long_low_short_high.caf    Headset_StartCall   short_double_high.caf    Headset_Redial   short_low_high.caf    Headset_AnswerCall   short_double_low.caf    Headset_EndCall   short_double_low.caf    Headset_CallWaitingActions   middle_9_short_double_low.caf    Headset_TransitionEnd   Voicemail.caf    SystemSoundPreview   ReceivedMessage.caf    SystemSoundPreview   new-mail.caf    SystemSoundPreview   mail-sent.caf    SystemSoundPreview   alarm.caf    SystemSoundPreview   lock.caf    SystemSoundPreview   Tock.caf    KeyPressClickPreview   sms-received1.caf    SMSReceived_Selection   sms-received2.caf    SMSReceived_Selection   sms-received3.caf    SMSReceived_Selection   sms-received4.caf    SMSReceived_Selection   -    SMSReceived_Vibrate   sms-received1.caf    SMSReceived_Selection   sms-received5.caf    SMSReceived_Selection   sms-received6.caf    SMSReceived_Selection   Voicemail.caf    SystemSoundPreview   Anticipate.caf    SMSReceived_Selection   Bloom.caf    SMSReceived_Selection   Calypso.caf    SMSReceived_Selection   Choo_Choo.caf    SMSReceived_Selection   Descent.caf    SMSReceived_Selection   Fanfare.caf    SMSReceived_Selection   Ladder.caf    SMSReceived_Selection   Minuet.caf    SMSReceived_Selection   News_Flash.caf    SMSReceived_Selection   Noir.caf    SMSReceived_Selection   Sherwood_Forest.caf    SMSReceived_Selection   Spell.caf    SMSReceived_Selection   Suspense.caf    SMSReceived_Selection   Telegraph.caf    SMSReceived_Selection   Tiptoes.caf    SMSReceived_Selection   Typewriters.caf    SMSReceived_Selection   Update.caf    SMSReceived_Selection   -    RingerVibeChanged   -    SilentVibeChanged   -    Vibrate

转载地址:http://bmhtl.baihongyu.com/

你可能感兴趣的文章
ASP.NET MVC5+EF6+EasyUI 后台管理系统(80)-自由桌面
查看>>
Java常考面试题(四)
查看>>
前端学数据库之记录操作
查看>>
学习Javascript闭包(Closure)
查看>>
【Todo】git的fast forward & git命令学习 & no-ff
查看>>
如何远程关闭一个ASP.NET Core应用?
查看>>
共享内存mmap学习 及与 shmxxx操作的区别
查看>>
你性格那么软,总是经常改变想法
查看>>
Summary of Critical and Exploitable iOS Vulnerabilities in 2016
查看>>
NeHe OpenGL教程 第十七课:2D图像文字
查看>>
查看Linux系统版本与位数
查看>>
更换CentOS7的下载源为阿里云
查看>>
退出Android程序时清除所有activity的实现方法
查看>>
eclipse注释模板设置(未整理)
查看>>
Hibernate框架 主配置文件(Hibernate.cfg.xml)基本
查看>>
学习SpringMVC——从HelloWorld开始
查看>>
Say Hello to ConstraintLayout
查看>>
awk打印指定列以后的所有内容
查看>>
代码16
查看>>
用 kGDB 调试 Linux 内核
查看>>