Обнаружение любой гарнитуры Воспроизведение / пауза вперед / назад кнопка увеличения / уменьшения громкости быстро нажмите - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь создать приложение для аудиоплеера! Я не могу понять, как я могу заставить мое приложение отвечать за воспроизведение / паузу вперед / назад, нажатие кнопки увеличения / уменьшения громкости или щелчок с любого наушника или гарнитуры! Я нашел эту страницу из яблока! но мне это не понятно! Мне нравится пример кода!

Ссылка: https://developer.apple.com/documentation/mediaplayer/mpremotecommand

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Это мой код:

import UIKit import AVFoundation

var player = AVAudioPlayer ()

class ViewController: UIViewController {

override func viewDidLoad()
{
    super.viewDidLoad()

    //▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
    do{
        
        let audioPath = Bundle.main.path(forResource: "music", ofType: "mp3")
        let audioURL = URL(fileURLWithPath: audioPath!)

        player = try AVAudioPlayer(contentsOf: audioURL)
        player.prepareToPlay()
        player.play()
        
    }
    catch
    {
    }
    //▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

    
}

}

0 голосов
/ 09 июля 2020

Предполагая, что у вас уже есть класс, который будет обрабатывать воспроизведение мультимедиа, остальное довольно просто.

Как упоминалось в предоставленной вами ссылке, любое событие, связанное с мультимедиа, отправляется для приложений, которые его слушают не имеет значения, откуда происходит событие (центр управления, гарнитура ...), эта часть обрабатывается платформой Media Player Framework

В классе вам нужно получить командный центр MPF (среда Media Player Framework ) и установите функции, которые будут запускаться событиями, я покажу только ту, что указана в ссылке, которую вы указали.

class MediaPlayer {
    let commandCenter = MPRemoteCommandCenter.shared()

    init() {
        // this is for the play command, check the docs for more commands
        commandCenter.playCommand.addTarget { [unowned self] event in
            if self.player.rate == 0.0 { // <- is stopped?
                // do your stuff and say to the OS that everything worked
                return .success
            }
            // if the command does not run properly you must inform the OS
            return .commandFailed
        }
    }
}

Есть некоторый недостающий код, который зависит от вашей реализации, но то, что вы хотите, находится здесь , теперь, когда что-то запускает команду "play", ваше приложение обнаружит это, и если проигрыватель не воспроизводит какие-либо мультимедиа, оно запустится.

Вы можете увидеть в docs дополнительную информацию о MPRemoteCommandCenter и другие команды, которые следуют тому же шаблону.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...