我已將AVFoundation
和AudioToolbox
框架添加到我的項目中。在我想要播放系統聲音的課程中,我和#include <AudioToolbox/AudioToolbox.h>
和AudioServicesPlaySystemSound(1007);
。我在運行iOS 8
的設備上進行測試,聲音已打開且音量足夠高,但我在運行應用程序時聽不到任何系統聲音,並且調用了AudioServicesPlaySystemSound(1007);
...我可能會丟失什麼?AudioServicesPlaySystemSound不能在iOS 8設備中播放任何聲音
回答
這將播放系統聲音。
但記住系統聲音不會播放更長的聲音。
NSString *pewPewPath = [[NSBundle mainBundle] pathForResource:@"engine" ofType:@"mp3"];
NSURL *pewPewURL = [NSURL fileURLWithPath:pewPewPath];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)pewPewURL, &_engineSound);
AudioServicesPlaySystemSound(_engineSound);
你可以給出一些建議,如何發揮更長的聲音或重複音?我必須播放重複的聲音,直到通話未被選中。 – Aditya
根據文檔:
此功能(
AudioServicesPlaySystemSound()
)將在 被廢棄以後的版本中。改爲使用AudioServicesPlaySystemSoundWithCompletion 。
使用下面的代碼片段播放聲音:
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:filename withExtension:nil]; //filename can include extension e.g. @"bang.wav"
if (fileURL)
{
SystemSoundID theSoundID;
OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID);
if (error == kAudioServicesNoError)
{
AudioServicesPlaySystemSoundWithCompletion(theSoundID, ^{
AudioServicesDisposeSystemSoundID(theSoundID);
});
}
}
此外,完成塊確保其設置的前播放聲音完成。
如果這不能解決問題,也許你的問題不是代碼相關的,而是相關的設置(靜音/模擬器的設備聲音從MAC系統偏好靜音,確保「播放用戶界面聲音效果」被選中)
你能鏈接到文檔嗎?我找不到你的報價。 – Suragch
這是來自SDK頭文件。嘗試使用已棄用的方法,XCode會顯示警告消息。 –
隨着iOS10這樣播放音頻不起作用:
SystemSoundID audioID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)pathURL, &mySSID);
AudioServicesPlaySystemSound(audioID);
使用這個代替:
AudioServicesCreateSystemSoundID((__bridge CFURLRef)pathURL, &audioID);
AudioServicesPlaySystemSoundWithCompletion(audioID, ^{
AudioServicesDisposeSystemSoundID(audioID);
});
我剛剛測試了運行iOS 8的iPad和iPhone上的代碼,並且它正在使用真實設備。
對於一些非常奇怪的原因,它不適用於任何設備的iOS 8模擬器,即使它適用於iOS 7和7.1模擬器。
否則下面的代碼在所有實際設備中都可以正常工作。
NSString *pewPewPath = [[NSBundle mainBundle] pathForResource:@"engine" ofType:@"mp3"];
NSURL *pewPewURL = [NSURL fileURLWithPath:pewPewPath];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)pewPewURL, &_engineSound);
AudioServicesPlaySystemSound(_engineSound);
的迅速3.x和Xcode中8:
var theSoundID : SystemSoundID = 0
let bundleURL = Bundle.main.bundleURL
let url = bundleURL.appendingPathComponent("Invitation.aiff")
let urlRef = url as CFURL
let err = AudioServicesCreateSystemSoundID(urlRef, &theSoundID)
if err == kAudioServicesNoError{
AudioServicesPlaySystemSoundWithCompletion(theSoundID, {
AudioServicesDisposeSystemSoundID(theSoundID)
})
}
- 1. AudioServicesPlaySystemSound不播放聲音
- 2. iPhone - 聲音不能播放AudioServicesPlaySystemSound和AVAudioPlayer
- 3. 用AudioServicesPlaySystemSound一次播放1個聲音
- 4. 在特定設備中播放聲音
- 5. 可以阻止iOS AudioServicesPlaySystemSound直到完成播放聲音?
- 6. 設備上不播放聲音[Titanium]
- 7. AVAudioPlayer不播放聲音IOS
- 8. 在Flex(Flash)中播放聲音並聽不到任何聲音
- 9. mediaplayer未知不能在某個設備上播放聲音
- 10. UILocalNotification聲音不能在設備上播放
- 11. iOS有可能在設備靜音時播放本地通知聲音
- 12. 在IOS上播放聲音
- 13. 如何在iOS中播放聲音?
- 14. 如何選擇聲音設備播放聲音?
- 15. 不管設備音量如何,播放聲音
- 16. 在iOS設備上同時播放聲音
- 17. AVQueuePlayer不能播放聲音
- 18. 無法在Windows 8中播放聲音
- 19. 聲音在模擬器中播放,但不在設備上
- 20. 聲音在模擬器中播放但不在設備上
- 21. UILocalNotifications在模擬器中播放聲音,但不在設備上
- 22. 不能在Java中播放聲音
- 23. 聲音不能在Titanium中播放
- 24. AVAudioPlayer不播放任何聲音
- 25. .wav文件不播放任何聲音
- 26. 聲音沒有在iOS設備上播放,但在iOS模擬器中工作
- 27. 如何在所有音頻設備上播放聲音
- 28. 我的.aif短聲音文件只能在iOS模擬器上播放,而不是在設備上播放?
- 29. avplayer不能在IOS中播放音頻
- 30. Ionic/Cordova應用程序在模擬器中播放聲音,但不在Android設備上播放聲音
你是否檢查了無聲開關? –
@JasonNam是的,聲音在... – AppsDev
其他音頻聽起來不錯嗎? –