我正在尝试在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>
任何人都可以提供帮助吗?
答案 0 :(得分:3)
你可以在Framework AVFAudio的标题中找到一些有趣的东西。
您应该查看此帖子,我认为它可能对您有所帮助。
#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)
有两个音量按钮(音量增大和音量减小)。在音量增大按钮旁边,有一个切换(开关)按钮,实际上是一个静音按钮。