声音拾取器/系统的清单听起来[复制](sound picker / list of system s

2019-06-25 09:25发布

这个问题已经在这里有一个答案:

  • 播放系统声音,但不导入自己的 9个答案

好的。 我一直在寻找一种巧妙的方法列出正在玩[NSSound soundNamed:]系统声音 - 和对我来说似乎API没有可用的声音列表。

我也与谷歌搜索,发现这个漂亮的一些老部分已经过时的来源。 如果应用程序应该有一个soundpicker -这将是获得系统提供的声音列表的最佳方式?

Answer 1:

这是我的实现。

NSSound(systemSounds.h):

#import <AppKit/AppKit.h>

@interface NSSound (systemSounds)

+ (NSArray *) systemSounds;

@end

NSSound(systemSounds.m):

#import "NSSound (systemSounds).h"

@implementation NSSound (systemSounds)

static NSArray *systemSounds = nil;

+ (NSArray *) systemSounds
{
    if ( !systemSounds )
    {
        NSMutableArray *returnArr = [[NSMutableArray alloc] init];
        NSEnumerator *librarySources = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSAllDomainsMask, YES) objectEnumerator];
        NSString *sourcePath;

        while ( sourcePath = [librarySources nextObject] )
        {
            NSEnumerator *soundSource = [[NSFileManager defaultManager] enumeratorAtPath: [sourcePath stringByAppendingPathComponent: @"Sounds"]];
            NSString *soundFile;
            while ( soundFile = [soundSource nextObject] )
                if ( [NSSound soundNamed: [soundFile stringByDeletingPathExtension]] )
                    [returnArr addObject: [soundFile stringByDeletingPathExtension]];           
        }

        systemSounds = [[NSArray alloc] initWithArray: [returnArr sortedArrayUsingSelector:@selector(compare:)]];
        [returnArr release];
    }
    return systemSounds;
}

@end

自由使用,可供任何人以任何目的,如果你提高它,请分享:)



Answer 2:

检查所有系统声音iOSSystemSoundsLibrary



文章来源: sound picker / list of system sounds [duplicate]