2016-05-26 3 views
1

В качестве учебного упражнения я решил написать игру Simon для Apple Watch (iOS 9.3, WatchKit 2.0).Есть ли ДЕЙСТВИТЕЛЬНО никакой способ воспроизвести короткие звуки на часах Apple без пользовательского интерфейса?

Я создал 4 коротких звуковых примечания для фортепиано в GarageBand. Я конвертировал их в файлы MP3 в Audacity, только чтобы найти, что Apple Watch не поддерживает MP3. Ок, отлично. Мне нужно преобразовать их в файлы WAV или CAF. Sigh ...

В любом случае, глядя на него, похоже, что единственный способ воспроизвести любые звуки - это отобразить медиа-контроллер на часах. (С использованием либо presentMediaPlayerControllerWithURL:options:completion: или WKInterfaceMovie.

Я просто хочу играть в разных 1/4 второго фортепиано звучит, как пользователь нажимает кнопку.

Есть ли другой способ с текущим WatchKit, который не требует отображающего медиа-контроллер?

+1

В этом ответе вы можете сделать это, если у вас установлена ​​синхронизация Bluetooth-гарнитуры ... http://stackoverflow.com/a/31759799/1671729 Кроме того, я полностью согласен с практикой Apple, не соответствующей реальному миру ... – Putz1103

+0

Спасибо за ваш вклад. Я видел этот поток и подтвердил, что этот код работает только в том случае, если у вас установлено Bluetooth-устройство. Если нет, вы получите сообщение с просьбой подключить его. Очень странно. –

+0

Вы отправили [запрос функции] (https://bugreport.apple.com/)? Хотя это не поможет решить дилемму «текущего WatchKit», Apple обращает внимание на количество запросов для определенной функции. –

ответ

0

Использование watchOS4 Я получил его для работы с использованием WKInterfaceMovie. Это не так обременительно и намного лучше, чем presentMediaPlayerControllerWithURL. Используя IB, вам нужно перетащить объект WKInterfaceInlineMovie на лицо часового (его размер очень мал - вы выиграли не видеть) Подключите объект к вашему WKInterfaceController:

@IBOutlet weak var myMovie: WKInterfaceInlineMovie! 

Я вытащил пару кнопок на контроллер интерфейса и вызвать следующие с идентификатором для правильного звукового файла, из IBAction, связанного с кнопкой:

func playSound(numberOfNote: Int) { 
     let soundURL = Bundle.main.url(forResource: "note\(numberOfNote)", withExtension: "wav")! 
     myMovie.setMovieURL(soundURL) 
     myMovie.playFromBeginning() 
    } 

я нажимаю на кнопку и звук воспроизводится громко (без наушников) сразу (в отличие от другого метода, который имеет длительную паузу, плюс представленный контроллер должен быть уволен). Это должно быть идеально для ваших заявленных потребностей.

 Смежные вопросы

  • Нет связанных вопросов^_^