2015-06-09 4 views
9

Я пытаюсь воспроизвести звук через расширение сторожевого таймера с помощью WKAudioFilePlayer, однако звук не воспроизводится. Я использую код тактильной обратной связи в качестве своего рода отладки, чтобы убедиться, что он выполняет его (что он делает). Как побочная заметка, отключить звук отключено, и имя файла верное.Воспроизведение звука в Apple Watchkit

NSURL *falcon = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
             pathForResource:@"falcon" 
             ofType:@"mp3"]]; 
WKAudioFileAsset *asset = [WKAudioFileAsset assetWithURL:falcon]; 
WKAudioFilePlayerItem *sound = [WKAudioFilePlayerItem playerItemWithAsset:asset]; 
audioPlayer = [WKAudioFilePlayer playerWithPlayerItem:sound]; 


[audioPlayer play]; 

WKInterfaceDevice *device = [WKInterfaceDevice currentDevice]; 
[device playHaptic:WKHapticTypeClick]; 
+1

Является ли целевое членство для файлов установленным на расширение набора часов? Это не будет играть, если членство настроено на ваше приложение. – WrightsCS

+0

Я не уверен, как узнать, однако файл был скопирован с расширением watchkit. Я не могу его отлаживать, у бета-1, похоже, есть проблемы с загрузкой сеанса отладки. –

ответ

8

Я реализовал следующим образом, и он отлично работал. (К сожалению, это Swift)

1) Определить свойство для игрока объекта

var player: WKAudioFilePlayer! 

2) Настройка актива и игрока, когда он проснувшись

override func awakeWithContext(context: AnyObject?) { 
    super.awakeWithContext(context) 

    let filePath = NSBundle.mainBundle().pathForResource("se_tap", ofType: "m4a")! 
    let fileUrl = NSURL.fileURLWithPath(filePath) 
    let asset = WKAudioFileAsset(URL: fileUrl) 
    let playerItem = WKAudioFilePlayerItem(asset: asset) 
    player = WKAudioFilePlayer(playerItem: playerItem) 
} 

3) Играть если игрока готов играть.

@IBAction func playBtnTapped() { 
    switch player.status { 
    case .ReadyToPlay: 
     player.play() 
    case .Failed: 
     print("failed") 
    case .Unknown: 
     print("unknown") 
    } 
} 

Кроме того, необходимо подключить Bluetooth-гарнитура с watch.

+0

Я положил его так же, как вы в Obj-c. Я получаю такое же уведомление для гарнитуры bluetooth при использовании симулятора, однако при работе на фактических часах он просто сбрасывает приложение и закрывается через несколько секунд. Кажется, что это метод воспроизведения музыки, я просто хочу воспроизвести на часах настраиваемый звуковой сигнал уведомления. –

+2

В моем случае это не работает. Просто не играл. –

+1

Я попробовал, и звук воспроизводится только один раз. И он работает только с Bluetooth-гарнитурой. –