web-dev-qa-db-ja.com

Appleスピーカーを見る

Apple Watchのスピーカーから音を再生する方法はありますか?オンラインでドキュメントを見つけることができませんでした。

12
frenchie4111

これは、watchOS2以降でWKAudioFilePlayerまたはWKInterfaceMovieを使用して可能になりました。

NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"file" withExtension:@"wav"];

WKAudioFilePlayer例:

WKAudioFileAsset *asset = [WKAudioFileAsset assetWithURL:assetURL];
WKAudioFilePlayerItem *playerItem = [WKAudioFilePlayerItem playerItemWithAsset:asset];
WKAudioFilePlayer *audioFilePlayer = [WKAudioFilePlayer playerWithPlayerItem:playerItem];
[audioFilePlayer play];

WKInterfaceMovie例:

[self presentMediaPlayerControllerWithURL:assetURL options:nil completion:nil];
17
Ric Santos

Apple Watchのスピーカーからサウンドを再生することはできませんが、iPhoneでサウンドファイルの再生をトリガーすることはできます。これは スレッド です。

3
sheraza

WatchOS3の場合、元の質問に対する答えはWKInterfaceInlineMovie https://developer.Apple.com/reference/watchkit/wkinterfaceinlinemovie です。

ウィジェットを非表示にして、インターフェイスデザインを変更しないようにすることができます。ブルートゥーススピーカーが接続されていない場合は、時計のスピーカーからオーディオファイルを再生します。

3
ghr
  • presentMediaPlayerControllerWithURL:options:completion:(watchOS 2.0の新機能)

URL再生するメディアファイルのURL。 URLはファイルを指定する必要があります。ストリーミングメディアはサポートされていません。ファイルには、オーディオ、ビデオ、またはその両方が含まれている場合があります。

リモートサーバー上のファイルのURLを指定すると、このメソッドは最初にファイルをダウンロードし、操作の進行状況を示す進行状況インジケーターを表示します。 WatchKitはWebサーバーからファイルをダウンロードするときにAppTransport Security(ATS)を使用するため、ファイルは安全なサーバー上にある必要があり、URLはhttpsスキームを使用する必要があります。サーバーがATSレベルのセキュリティをサポートしていない場合は、ファイルを再生する前に自分でダウンロードしてください。

ファイルの保存には、sharedcontainer、watchextensionsを使用してください。

この方法を使用して再生するオーディオは、ペアリングされたBluetoothオーディオデバイスが利用可能な場合はそれにルーティングされます。 Bluetoothオーディオデバイスが利用できない場合、オーディオはAppleウォッチスピーカーにルーティングされます。

3
zeAttle

InterfaceController.Swiftファイル内

シミュレーターとデバイスで正常に動作します最新のWatchOS5でも利用可能

import AVFoundation

var player = AVAudioPlayer()
let audioSession = AVAudioSession.sharedInstance()


    override func willActivate() {
    // This method is called when watch view controller is about to be visible to user
    super.willActivate()

    do {
        // Working Reroutes to headset
        //            try session.setCategory(AVAudioSession.Category.playback,
        //                                    mode: .default,
        //                                    policy: .longForm,
        //                                    options: [])

        // Plays in watch speaker
        try audioSession.setCategory(AVAudioSession.Category.playback,
                                mode: .default,
                                policy: .default,
                                options: [])
    } catch let error {
        fatalError("*** Unable to set up the audio session: \(error.localizedDescription) ***")
    }
    if let path = Bundle.main.url(forResource: "piano", withExtension: "mp3") {
        let fileUrl = path
        do{
            player = try AVAudioPlayer(contentsOf: fileUrl)
        }
        catch
        {
            print("*** Unable to set up the audio player: \(error.localizedDescription) ***")
            // Handle the error here.
            return
        }
    }
}

このコードを使用して、オーディオセッションを呼び出し、再生ボタンアクション内で、またはオーディオを再生する場合にオーディオを再生します。

     audioSession.activate(options: []) { (success, error) in
            guard error == nil else {
                print("*** error occurred: \(error!.localizedDescription) 
                     ***")
                // Handle the error here.
                return
            }
            if(success){
                // Play the audio file.
                self.player.play()
            }
        }

それでもオーディオを再生できない場合は、オーディオファイルでnil値を取得しているためである必要があります。指定されたオーディオファイルは、検索している正しいバンドルに含まれていません。

1
Bharath Varma
import AVFoundation
var player: AVAudioPlayer?

if let path = Bundle.main.path(forResource: "siren", ofType: "wav") {

        let fileUrl = URL(fileURLWithPath: path)

        do{
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
            try AVAudioSession.sharedInstance().setActive(true)

            player = try AVAudioPlayer(contentsOf: fileUrl)

            guard let player = player else { return }

            player.play()

        }
        catch
        {

        }

    }

これを使用してApple watch(4.3)スピーカーからカスタムサウンドを再生し、問題なく動作しました。オーディオファイルのターゲットメンバーシップをウォッチキットに設定することを忘れないでください。

0
Rafael Bonini