gpt4 book ai didi

ios - 如何快速播放文档目录中的下一首轨道

转载 作者:行者123 更新时间:2023-11-29 01:49:15 25 4
gpt4 key购买 nike

我做了一个简单的媒体播放器。我有一个 UITableViewController,其中包含文档目录中的 mp3 文件和播放 mp3 文件的 UIViewController。我将一个 mp3 文件的 NSURLUITableViewController 传递给 UIViewController 并且我可以播放它。我想让按钮变成下一个或上一个轨道。我怎样才能做到?

代码在特定文件上传递 NSURL。

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var playerVC = (segue.destinationViewController as! UINavigationController).topViewController as! PlayMusicViewController
var indexPath = tableView.indexPathForSelectedRow()
var nameOfObjectForPass = listOfMP3Files![indexPath!.row] // default it's name and
var fileManager = NSFileManager.defaultManager()

var wayToFile = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)
var passMusicFileURL: NSURL? // for pass mp3

if let documentPath: NSURL = wayToFile.first as? NSURL {
let musicFile = documentPath.URLByAppendingPathComponent(nameOfObjectForPass)
println(musicFile)
passMusicFileURL = musicFile
}
if segue.identifier == "listenMusic" {
playerVC.nameMusicFile = nameOfObjectForPass // name
playerVC.mp3URL = passMusicFileURL

// test
playerVC.allUrlsVC = allURLS
}

代码正在播放mp3文件

    func playMusic() {
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) // == true
AVAudioSession.sharedInstance().setActive(true, error: nil)
var error: NSError?
audioPlayer = AVAudioPlayer(contentsOfURL: mp3URL, error: &error)
// audioPlayer.prepareToPlay()
if currentPause == nil {
} else {
audioPlayer.currentTime = currentPause
}
//
audioPlayer.volume = 0.5
audioPlayer.play()
}

更新

我做了以下

  var arrayMP3url: Array<AnyObject>!

func playNextSound() {
var queue = AVQueuePlayer(URL: mp3URL)
var current = queue.currentItem

var arrayForSearch = arrayMP3url as! [NSURL]

var arrNS = arrayForSearch as NSArray

var index = arrNS.indexOfObject(mp3URL!)
println("index \(index)")

println("array for search \(arrayForSearch)")

println("current song \(current)")
}

但我总是从 NSArray 得到相同的索引

最佳答案

使用您的 mp3 文件数组,并使用 indexPath 确定 current playing index,在单击按钮时增加或减少 current playing index作为 Next, or, Prev,并根据索引更改 mp3 文件。重放音乐。

简单。

如果您需要更多帮助,请联系。

更新

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var playerVC = (segue.destinationViewController as! UINavigationController).topViewController as! PlayMusicViewController

var indexPath = tableView.indexPathForSelectedRow();

//We only need to pass current index, and array of mp3 urls

playerVC.curIndex=indexPath.row;
playerVC.mp3s= listOfMP3Files;

}

所以如上所述,只需在您的playerVC中声明两个属性,即

curIndex 作为 int,mp3s 作为 NSArray。

在函数中

func playMusic() {

var nameOfObjectForPass = mp3s![curIndex]; // default it's name and
var fileManager = NSFileManager.defaultManager()

var wayToFile = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)
var passMusicFileURL: NSURL? // for pass mp3

if let documentPath: NSURL = wayToFile.first as? NSURL {
let musicFile = documentPath.URLByAppendingPathComponent(nameOfObjectForPass)
println(musicFile)
passMusicFileURL = musicFile
}

self.nameMusicFile = nameOfObjectForPass // name
self.mp3URL = passMusicFileURL

// test
self.allUrlsVC = allURLS

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) // == true
AVAudioSession.sharedInstance().setActive(true, error: nil)
var error: NSError?
audioPlayer = AVAudioPlayer(contentsOfURL: mp3URL, error: &error)
// audioPlayer.prepareToPlay()
if currentPause == nil {
} else {
audioPlayer.currentTime = currentPause
}
//
audioPlayer.volume = 0.5
audioPlayer.play()
}

然后简单地定义你的下一个和上一个索引计算,如

func playNextSound(){
self.curIndex++;
var maxCount=self.mp3s.count-1;
if(self.curIndex>maxCount){
self.curIndex=maxCount;
}

playMusic();
}

func playPrevSound(){
self.curIndex--;
if(self.curIndex<0){
self.curIndex=0;
}

playMusic();
}

希望对您有所帮助。干杯。

关于ios - 如何快速播放文档目录中的下一首轨道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31584337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com