美文网首页程序员
iOS音频——使用System Sound API

iOS音频——使用System Sound API

作者: 扑腾的蛾子 | 来源:发表于2021-02-01 19:24 被阅读0次

    是C语言的低层次API,可以播放短的声音,不能暂停或停止等控制。

    可以用来制作游戏音效和操作音,以及提醒用户要做某件事,还可以发出振动提醒,但是只能在iphone设备上。

    播放系统声音

    主要用于游戏音效和操作声音等。

    #import "ViewController.h"

    #import <AudioToolbox/AudioToolbox.h>

    @interface ViewController ()

    - (IBAction)playSystemSound:(id)sender;

    @end

    #pragma mark -定义一个回调函数,用于当声音播放完成之后回调

    void SoundFinishedPlayingCallback(SystemSoundID sound_id, void * user_data)

    {

        //注销声音播放完成事件回调函数

        AudioServicesRemoveSystemSoundCompletion(sound_id);

        //释放SystemSoundID

        AudioServicesDisposeSystemSoundID(sound_id);

    }

    @implementation ViewController

    - (void)viewDidLoad

    {

        [super viewDidLoad];

    }

    - (IBAction)playSystemSound:(id)sender

    {

        NSString *path = [[NSBundle mainBundle] pathForResource:@"AlertChordStroke" ofType:@"wav"];

        NSURL *system_sound_url = [NSURL fileURLWithPath:path];

        SystemSoundID system_sound_id;

        //创建SystemSoundID

        AudioServicesCreateSystemSoundID((__bridge CFURLRef)system_sound_url, &system_sound_id);

        //注销声音播放完成事件回调函数

        AudioServicesAddSystemSoundCompletion(system_sound_id, NULL, NULL, SoundFinishedPlayingCallback, NULL);

        //播放系统声音

        AudioServicesPlaySystemSound(system_sound_id);

    }

    @end

    发出警告提醒

    只在iphone下有振动。

    - (IBAction)alertSound:(id)sender

    {

        NSURL *system_sound_url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"AlertChordStroke" ofType:@"wav"]];

        SystemSoundID system_sound_id;

        AudioServicesCreateSystemSoundID((__bridge CFURLRef)system_sound_url, &system_sound_id);

        AudioServicesAddSystemSoundCompletion(system_sound_id, NULL, NULL, SoundFinishedPlayingCallback, NULL);

        AudioServicesPlayAlertSound(system_sound_id);

    }

    振动

    - (IBAction)vibrate:(id)sender

    {

        NSString *deviceModel = [[UIDevice currentDevice] model];

        if ([deviceModel isEqualToString:@"iPhone"])

        {

            AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

        }

        else

        {

            UIAlertController *alertC = [[UIAlertController alloc] init];

            [alertC setTitle:@"提示"];

            UIAlertAction *alertAction = [UIAlertAction actionWithTitle:@"设备不支持" style:UIAlertActionStyleDefault handler:nil];

            [alertC addAction:alertAction];

            [self presentViewController:alertC animated:YES completion:nil];

        }

    }

    相关文章

      网友评论

        本文标题:iOS音频——使用System Sound API

        本文链接:https://www.haomeiwen.com/subject/ilsstltx.html