iOS系统声音未播放

时间:2017-05-10 00:01:43

标签: ios xcode system-sounds

我正在尝试在iOS 10.3.1上运行的应用中实现系统声音播放 我遇到的问题是,当我在viewDidLoad中,当正在调试应用程序时,正在播放声音。当应用程序正常运行时,它总是在振动。

AudioServicesPlayAlertSoundWithCompletion(1107, nil);

当我想使用相同的系统声音时,在应用程序的特定位置,应该产生声音的适当位置,在调试模式或正常运行时它不会做任何事情,没有声音也不振动。 / p>

在应用运行时,我没有看到任何错误或警告。 编辑*在我使用它的地方添加了一些代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    AudioServicesPlayAlertSoundWithCompletion(1107, nil);
    //AudioServicesPlayAlertSoundWithCompletion(1100, nil); (same)
}

这始终只是振动,如果打开振铃器无关紧要,或者是否将手机连接到Xcode。

我已导入此内容,如果它意味着什么:

#import <AVFoundation/AVFoundation.h>
#import <CoreLocation/CoreLocation.h>
#import "CoreLocationController.h"
#import <AudioToolbox/AudioServices.h>

任何人都可以提供帮助吗?

2 个答案:

答案 0 :(得分:3)

你可以在Framework AVFAudio的标题中找到一些有趣的东西。

Categories

Headers

您应该查看此帖子,我认为它可能对您有所帮助。

How to play Alert Sound

#include <arrayfire.h>
#include <cstdio>
#include <cstdlib>
#include <fstream>

using namespace af;

int main(int argc, char *argv[])
{
    const int N = 1000;

    try {

        // --- Select a device and display arrayfire info
        int device = argc > 1 ? atoi(argv[1]) : 0;
        af::setDevice(device);
        af::info();

        array A = randu(N, N, f64);
        af::array U, S, Vt;

        // --- Warning up
        timer time_last = timer::start();
        af::svd(U, S, Vt, A);
        S.eval();
        af::sync();
        double elapsed = timer::stop(time_last);
        printf("elapsed time using start and stop = %g ms \n", 1000.*elapsed);

        time_last = timer::start();
        af::svd(U, S, Vt, A);
        S.eval();
        af::sync();
        elapsed = timer::stop(time_last);
        printf("elapsed time using start and stop = %g ms \n", 1000.*elapsed);

    }
    catch (af::exception& e) {

        fprintf(stderr, "%s\n", e.what());
        throw;
    }

    return 0;
}
  

这两项功能都会震动iPhone。但是,当您在不支持振动的设备上使用第一个功能时,它会发出哔声。另一方面,第二个功能在不支持的设备上不执行任何操作。因此,如果您要持续振动设备,作为警报,常识说,请使用功能2。

答案 1 :(得分:0)

有两个音量按钮(音量增大和音量减小)。在音量增大按钮旁边,有一个切换(开关)按钮,实际上是一个静音按钮。