AVQueuePlayer memutar audio hanya sekali dari array

Saya memiliki array QueuePlayer seperti di bawah ini,

Print Queue Player array : (
    "<AVQueuePlayer: 0x7fed625a51c0>",
    "<AVQueuePlayer: 0x7fed624baa00>",
    "<AVQueuePlayer: 0x7fed624c43c0>"
)

Pada klik tombol Saya memutar audio dari array di atas,

-(IBAction)click_Play:(UIButton *)sender {

    [(AVQueuePlayer *)[arrQueuePlayer objectAtIndex:sender.tag] setVolume:1.0];
    [(AVQueuePlayer *)[arrQueuePlayer objectAtIndex:sender.tag] play];
}

Alasan di balik pembuatan array QueuePlayer adalah, tombol putar saya ada di UITableView. Memutar audio dari array dengan mengklik tombol hanya berfungsi dengan baik untuk pertama kalinya. Jika saya mengklik tombol putar lagi. Itu tidak memutar suara. Tidak tahu apa yang salah. Saya memeriksanya dengan men-debug kode, array saya dibatalkan atau apa pun. Lalu kenapa tidak diputar lagi saat tombol diklik?

Tolong bantu aku. Terima kasih sebelumnya!


person iGatiTech    schedule 09.03.2016    source sumber
comment
Apakah Anda mengizinkan untuk memutar trek lengkap dan setelah itu mencoba memutarnya lagi?   -  person Tirth    schedule 09.03.2016
comment
@Tirth Ya, saya mencoba memutarnya lagi setelah memutar lagu lengkap satu kali.   -  person iGatiTech    schedule 09.03.2016
comment
bagaimana Anda menambahkan trek di AVQueuePlayer?   -  person Tirth    schedule 09.03.2016
comment
@Tirth Itu logika yang cukup besar. Karena saya memiliki trek audio yang ditambahkan secara lokal. Pengguna diperbolehkan memilih trek audio sebanyak yang mereka inginkan. Kemudian setelah saya secara berurutan menambahkan semua trek audio di QueuePlayer dan membuat array ini untuk UITableView. Tapi saya bertanya-tanya, Jika ini pertama kali memutar suara dari array, mengapa tidak lagi?   -  person iGatiTech    schedule 09.03.2016
comment
Masalah Anda berasal dari kode lain tetapi bukan Anda yang memberikan kode di sini.   -  person Tirth    schedule 09.03.2016


Jawaban (1)


Saat Anda memainkan pemain antrian dari array, ada kemungkinan menjadi nihil setelah bermain sekali. Saya tidak yakin apakah ini masalah Anda yang sebenarnya atau tidak. Karena saya tidak tahu bagaimana Anda membuat objek pemutar antrian ini dan menambahkannya ke dalam array. Tapi saya kira objek antrian pemain menjadi nihil setelah bermain seharusnya menjadi masalahnya.

Jika demikian, maka untuk itu Anda harus membuat ulang pemutar antrean Anda setelah diputar. Karena AVQueuePlayer tidak memiliki metode delegasi seperti audioPlayerDidFinishPlaying:(Ini adalah metode delegasi AVAudioPlayer). Jadi untuk AVQueuePlayer perlu menambahkan pengamat untuk playerItemDidReachEnd: seperti di bawah ini,

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(playerItemDidReachEnd:)
                                                 name:AVPlayerItemDidPlayToEndTimeNotification
                                               object:item];

Dalam metode pengamat ini, buat ulang pemutar antrian Anda dan gantikan di array Anda. Semoga ini bisa membantu Anda! Bersulang..

person Maddy    schedule 10.03.2016