美文网首页
Swift 获取本地音乐

Swift 获取本地音乐

作者: darrenW | 来源:发表于2017-08-07 17:31 被阅读776次

最近产品爸爸又增加一个新的功能,获取本地音乐。如果iTunes里面没有音乐的话,可以电脑上下载一首拉进手机里,方法请自行百度(一堆)。
在iOS中,获取本地音乐主要用到MPMediaQuery,如果对音乐进行条件筛选的话就用到MPMediaPropertyPredicate。废话不多说,直接上代码:
首先要在TARGETS的info里添加权限:Privacy - Media Library Usage Description
然后import MediaPlayer

1、获取全部音乐

        //从ipod库中读出音乐文件
        let everything =  MPMediaQuery()
        let itemsFromGenericQuery = everything.items
        for song in itemsFromGenericQuery! {
            //获取音乐名称
            let songTitle = song.value(forProperty: MPMediaItemPropertyTitle)
            print("songTitle==\(songTitle!)")
            //获取作者名称
            let songArt = song.value(forProperty: MPMediaItemPropertyArtist)
            print("songArt=\(songArt!)") 
            //获取音乐路径
            let songUrl = song.value(forProperty: MPMediaItemPropertyAssetURL)
            print("songUrl==\(songUrl!)")
        }

在[MPMediaItem]中还可以获取很多音乐的信息,比如封面、专辑名称等

2、有条件获取音乐

1、一个条件查找 查找名称为xxxx的歌曲
        let everything =  MPMediaQuery()
        let songTitle = MPMediaPropertyPredicate.init(value: "xxxx", forProperty: MPMediaItemPropertyTitle)
        everything.addFilterPredicate(songTitle)
        let itemsFromGenericQuery = everything.items
        for song in itemsFromGenericQuery! {
            let songtitle = song.value(forProperty: MPMediaItemPropertyTitle)
            print("songtitle==\(String(describing: songtitle))")
        }
2、多个条件查找 查找名为xxxx的艺术家的yyyy专辑
        let everything =  MPMediaQuery()
        let songArt = MPMediaPropertyPredicate.init(value: "xxxx", forProperty: MPMediaItemPropertyArtist)
        let songAlbumTitle = MPMediaPropertyPredicate.init(value: "yyyy", forProperty: MPMediaItemPropertyAlbumTitle)
        everything.addFilterPredicate(songArt)
        everything.addFilterPredicate(songAlbumTitle)
        let itemsFromGenericQuery = everything.items
        for song in itemsFromGenericQuery! {
            let songtitle = song.value(forProperty: MPMediaItemPropertyTitle)
            print("songtitle==\(String(describing: songtitle))")
        }

当然了,MPMediaPropertyPredicate还能查找很多东西以及指定类型,看文档就知道了,这里不一一列举。

PS:
有时候觉得自己写的东西很简单,内容很少,不够丰富,可是又觉得我只要把基本用法写出来就好了。回想起当年自学swift的时候也是从最基本的开始,看别人的代码一知半解,查资料问别人。我可以把[MPMediaItem]里面的类型都写出来,可是又怎样呢?这种看一下文档就知道的东西,就不用来凑字数了。MPMediaPropertyPredicate的方法也能写出几十行,但是大同小异。仁者见仁.......

相关文章

网友评论

      本文标题:Swift 获取本地音乐

      本文链接:https://www.haomeiwen.com/subject/gkualxtx.html