声音选择器/macOS上的系统声音列表



好的。我正在寻找一种简洁的方式来列出使用 [NSSound soundNamed: ] 播放的系统声音 - 对我来说,API 似乎没有可用声音的列表。

我也用谷歌搜索了这个,发现了一些相当古老且部分已经弃用的来源。如果应用程序应该有一个声音选择器 - 获取系统提供的声音列表的最佳方法是什么?

这是我

的实现。

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

可免费使用,任何人都可以出于任何目的使用,如果您对其进行了增强,请分享:)

相关内容

  • 没有找到相关文章

最新更新