У меня есть кнопка переключения громкости. Когда нажимаю кнопку, то вызывается пауза или плей с некоторым затуханием. Проблема в том, что если я быстро дважды нажму кнопку, например, паузы, а затем воспроизведения, то услышу скачок громкости. Более того, если я быстро вызову play, а потом резко нажму и вызову паузу, то в режиме воспроизведения звук остановится из-за вызова DispatchQueue с задержкой. Как это исправить?
ViewController:
class ViewController: UIViewController {
@objc func soundState() {
if defaults.string(forKey: "sound") == "false" {
audio.pause(volume: 0.0, duration: 3.0)
} else if defaults.string(forKey: "sound") == "true" {
audio.play(volume: 1.0, duration: 3.0)
}
}
}
Аудиоконтроллер:
class Audio: NSObject, AVAudioPlayerDelegate {
var audioPlayer: AVAudioPlayer!
func loopedAudio(fileName: String, fileExtension: String) {
try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategorySoloAmbient)
try? AVAudioSession.sharedInstance().setActive(true)
let url = Bundle.main.url(forResource: fileName, withExtension: fileExtension)
do {
audioPlayer = try AVAudioPlayer(contentsOf: url!)
audioPlayer.prepareToPlay()
audioPlayer.delegate = self
audioPlayer.numberOfLoops = -1
} catch {
print("error")
}
}
func play(volume: Float, duration: Double) {
audioPlayer.volume = 0
audioPlayer.play()
audioPlayer.setVolume(volume, fadeDuration: duration)
}
func pause(volume: Float, duration: Double) {
audioPlayer.volume = 1
audioPlayer.setVolume(volume, fadeDuration: duration)
DispatchQueue.main.asyncAfter(deadline: .now() + duration) {
self.audioPlayer.pause()
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... on-quickly
Ошибка при быстром нажатии кнопки звука ⇐ IOS
Программируем под IOS
1737268623
Anonymous
У меня есть кнопка переключения громкости. Когда нажимаю кнопку, то вызывается пауза или плей с некоторым затуханием. Проблема в том, что если я быстро дважды нажму кнопку, например, паузы, а затем воспроизведения, то услышу скачок громкости. Более того, если я быстро вызову play, а потом резко нажму и вызову паузу, то в режиме воспроизведения звук остановится из-за вызова DispatchQueue с задержкой. Как это исправить?
ViewController:
class ViewController: UIViewController {
@objc func soundState() {
if defaults.string(forKey: "sound") == "false" {
audio.pause(volume: 0.0, duration: 3.0)
} else if defaults.string(forKey: "sound") == "true" {
audio.play(volume: 1.0, duration: 3.0)
}
}
}
Аудиоконтроллер:
class Audio: NSObject, AVAudioPlayerDelegate {
var audioPlayer: AVAudioPlayer!
func loopedAudio(fileName: String, fileExtension: String) {
try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategorySoloAmbient)
try? AVAudioSession.sharedInstance().setActive(true)
let url = Bundle.main.url(forResource: fileName, withExtension: fileExtension)
do {
audioPlayer = try AVAudioPlayer(contentsOf: url!)
audioPlayer.prepareToPlay()
audioPlayer.delegate = self
audioPlayer.numberOfLoops = -1
} catch {
print("error")
}
}
func play(volume: Float, duration: Double) {
audioPlayer.volume = 0
audioPlayer.play()
audioPlayer.setVolume(volume, fadeDuration: duration)
}
func pause(volume: Float, duration: Double) {
audioPlayer.volume = 1
audioPlayer.setVolume(volume, fadeDuration: duration)
DispatchQueue.main.asyncAfter(deadline: .now() + duration) {
self.audioPlayer.pause()
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79368518/error-when-pressing-the-sound-button-quickly[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия