2015-06-09 17 views
9

Próbuję odtworzyć dźwięk w rozszerzeniu watchkita za pomocą WKAudioFilePlayer, jednak dźwięk nie jest odtwarzany. Używam haptic feedback code jako rodzaj debugowania, aby upewnić się, że go wykonuje (co robi). Na marginesie wyciszenie nie jest włączone, a nazwa pliku jest poprawna.Odtwarzanie dźwięku w 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

Czy członkostwo w pliku jest ustawione na rozszerzenie zestawu zegarów? Nie będzie grać, jeśli członkostwo jest ustawione na twoją aplikację. – WrightsCS

+0

Nie jestem pewien, jak się dowiedzieć, jednak plik został skopiowany do rozszerzenia Watchkit. Nie mogę też tego debugować, beta 1 ma problemy z ładowaniem sesji debugowania. –

Odpowiedz

8

Zaimplementowałem w następujący sposób i działało dobrze. (Niestety, to Swift)

1) Definiowanie właściwości dla obiektu odtwarzacza

var player: WKAudioFilePlayer! 

2) Konfiguracja aktywów i gracza kiedy to budząc

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) Play Jeśli gracz jest gotowy do gry.

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

Ponadto potrzebne do podłączenia zestawu słuchawkowego Bluetooth z watch.

+0

Położyłem to tak samo jak ty w Obj-c. Dostaję to samo powiadomienie dla zestawu słuchawkowego Bluetooth podczas korzystania z symulatora, jednak podczas działania na rzeczywistym zegarku po prostu powoduje awarię aplikacji i zamyka się po kilku sekundach. Wygląda na to, że jest to metoda odtwarzania muzyki, po prostu chcę odtwarzać niestandardowy dźwięk powiadomienia na zegarku. –

+2

To nie działa w moim przypadku. Po prostu nie grałem. –

+1

Próbowałem, a dźwięk jest odtwarzany tylko raz. Działa tylko z zestawem słuchawkowym Bluetooth. –

Powiązane problemy