cuốn sách gpt4 ai đã làm

Sự cố kích hoạt lại AVAudioSession - ios - Sự cố kích hoạt lại AVAudioSession

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 00:53:36 26 4
mua khóa gpt4 Nike

Tôi nhận được lỗi sau:

[0x19bf89310] AVAudioSession.mm:646: -[AVAudioSession setActive:withOptions:error:]: Tắt hoặc tạm dừng phiên âm thanh đang chạy I/O trước khi tắt phiên âm thanh.

Tôi đã đọc bài viết này:

Nhưng các giải pháp ở đó không giải quyết được vấn đề của tôi. Đây là:

  • Ứng dụng nhỏ (trò chơi)
  • Xử lý nhạc nền âm thanh trong AudioHelper.swift
  • sử dụng SKActino.playSoundFile Âm thanh "đốm" bổ sung được phát

sao chép

  • Bắt đầu trò chơi (nhạc nền bắt đầu phát)
  • Kết thúc trò chơi (nhạc dừng)
  • Khởi động lại trò chơi (âm nhạc bắt đầu lại)
  • Xảy ra lỗi trên
  • SKAction.playSoundFile không còn luôn hoạt động nữa (một số thì có, một số thì không)

Mã xử lý âm thanh của tôi (còn gọi là AudioHelper.swift)

lớp Trình trợ giúp âm thanh: NSObject, AVAudioPlayerDelegate {
trình phát var: AVAudioPlayer?

lớp var defaultHelper : AudioHelper {
cấu trúc tĩnh {
ví dụ tĩnh: AudioHelper = AudioHelper()
}

trả về Static.instance
}

ghi đè init() {
super.init()
}

func khởi tạoAudio() {
var url = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sound_float", ofType: ".mp3")!)
self.player = AVAudioPlayer(contentsOfURL: url, error: nil)
self.player?.numberOfLoops = -1
self.player?.play()
}

func stopAudio() {
self.player?.stop()
self.player?.prepareToPlay()
AVAudioSession.sharedInstance().setActive(false, error: nil)
}

func startAudio() {
AVAudioSession.sharedInstance().setActive(true, error: nil)
self.player?.play()
}

func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, gắn cờ thành công: Bool) {
self.stopAudio()
}
}

tôi đang đi qua Đại biểu ứng dụng

Khởi tạo, tạm dừng và bắt đầu
lớp AppDelegate: UIResponder, UIApplicationDelegate {


cửa sổ var: UIWindow?

ứng dụng func (ứng dụng: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
AudioHelper.defaultHelper.initializeAudio()
trả lại sự thật
}

ứng dụng funcWillResignActive(ứng dụng: UIApplication) {
// Được gửi khi ứng dụng sắp chuyển từ trạng thái hoạt động sang không hoạt động. Điều này có thể xảy ra đối với một số loại gián đoạn tạm thời (chẳng hạn như cuộc gọi đến hoặc tin nhắn SMS) hoặc khi người dùng thoát khỏi ứng dụng và bắt đầu chuyển sang trạng thái này. trạng thái nền.
// Sử dụng phương pháp này để tạm dừng các tác vụ đang diễn ra, tắt bộ tính giờ và giảm tốc độ khung hình OpenGL ES. Các trò chơi nên sử dụng phương pháp này để tạm dừng trò chơi.
AudioHelper.defaultHelper.stopAudio()
}

ứng dụng funcDidBecomeActive(ứng dụng: UIApplication) {
// Khởi động lại mọi tác vụ đã bị tạm dừng (hoặc chưa bắt đầu) trong khi ứng dụng không hoạt động. Nếu trước đó ứng dụng ở chế độ nền, hãy tùy ý làm mới giao diện người dùng.
AudioHelper.defaultHelper.startAudio()
}
}

Tôi đã sai ở đâu?

câu trả lời hay nhất

tôi phải setActive(sai) Chuyển sang phương thức ủy quyền. Lớp người trợ giúp mới trông như thế này:

nền tảng nhập khẩu
nhập khẩu AVFoundation

lớp Trình trợ giúp âm thanh: NSObject, AVAudioPlayerDelegate {
trình phát var: AVAudioPlayer?


lớp var defaultHelper : AudioHelper {
cấu trúc tĩnh {
ví dụ tĩnh: AudioHelper = AudioHelper()
}

trả về Static.instance
}

ghi đè init() {
super.init()
}

func khởi tạoAudio() {
var url = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sound_float", ofType: ".mp3")!)
self.player = AVAudioPlayer(contentsOfURL: url, error: nil)
self.player?.numberOfLoops = -1
self.player?.play()

}

func stopAudio() {
self.player?.stop()
self.player?.prepareToPlay()
}

func startAudio() {
AVAudioSession.sharedInstance().setActive(true, error: nil)
self.player?.play()
}


func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, gắn cờ thành công: Bool) {
AVAudioSession.sharedInstance().setActive(false, error: nil)
}
}

hiện đang làm việc

Về vấn đề kích hoạt lại ios - AVAudioSession, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/27200453/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress