iOS系统声音列表
效果
说明
1. 点击cell就能发出声音
2. 只需要给出声音编号,就可以,非常简单易用
源码
https://github.com/YouXianMing/SystemSound
//
// SystemSound.h
// SystemSound
//
// Created by YouXianMing on 15/8/24.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
//
#import <Foundation/Foundation.h>
#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 <AudioToolbox/AudioToolbox.h>
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 <Foundation/Foundation.h>
@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
时间: 2024-10-30 15:55:03