Как я могу воспроизводить определенный звук, когда мое приложение обнаруживает определенное изображение с ARKit? - PullRequest
0 голосов
/ 20 января 2019

В моем приложении я использую функцию ARKit 1.5 для распознавания изображений, и когда он идентифицирует конкретное изображение, он показывает в ViewController информацию. Я установил кнопку для воспроизведения описания изображения, но на данный момент это общий звук.

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

Вот мой код, разделенный на то, что такое ViewController.

ViewController:

struct ImageInformation {
    let name: String
    let description: String
    let image: UIImage
    let audio: AVAudioPlayer
}

let images = ["Mona_Lisa" : ImageInformation(name: "Mona Lisa", description: "The Mona Lisa is a half-length portrait painting by the Italian Renaissance artist Leonardo da Vinci that has been described as 'the best known, the most visited, the most written about, the most sung about, the most parodied work of art in the world.", image: UIImage(named: "Mona_Lisa")!),

              "image1" : ImageInformation(name: "Hi1", description: "Hello1", image: UIImage(named: "image1")!),

              "image2" : ImageInformation(name: "Hi2", description: "hello2", image: UIImage(named: "image2")!),

              "Raffaello_Angelo" : ImageInformation(name: "image3", description: "hello3", image: UIImage(named: "image3")!),]

InformationViewController:

    if let actualImageInformation = imageInformation {
        self.nameLabel.text = actualImageInformation.name
        self.imageView.image = actualImageInformation.image
        self.descriptionText.text = actualImageInformation.description

    }

    func listenAudio(){

    guard let url = Bundle.main.url(forResource: "temperatures-rising", withExtension: "mp3") else { return }

    do {
        try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
        try AVAudioSession.sharedInstance().setActive(true)

        self.player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)

        guard let player = self.player else { return }

        player.play()

        self.audioButton.setTitle("Stop", for: UIControl.State.normal)
        self.player!.play()


    } catch let error {
        print(error.localizedDescription)
    }

}
...