本文共 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"#importstatic 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/