iOS学习,音频,本地选歌,播放

本文介绍如何在iOS应用中实现音乐播放器功能,包括选择本地音乐、播放控制等操作,并提供详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚开始学习ios开发,有很多知识点,与大家分享一下,同时也是一个总结,一个备份。

---------------------------------------------------------------------------------------------------------------------------------------------

使用MPMediaPickerController选择音乐

预备工作:

1.导入MediaPlayer框架
2.在需要进行选音乐的viewController.m中导入头文件:
#import <MediaPlayer/MediaPlayer.h>
3.在.m中添加代理:
<MPMediaPickerControllerDelegate>

正式开始:


1. 确定你要进行选音乐的viewController,在.h中

//4个button的action,从上到下的功能:
//选择本地歌曲
//开始/暂停
//上一首
//下一首
- (IBAction)choose:(id)sender;
- (IBAction)pauseOrStart:(id)sender;
- (IBAction)skipToPrevious:(id)sender;
- (IBAction)skipToNext:(id)sender;


2.在.m中
<pre name="code" class="objc">//歌曲选择的
MPMediaPickerController *mpc;

//歌曲播放的
MPMusicPlayerController *musicPlayer;

//歌曲列表
MPMediaItemCollection *itemList;
}


- (void)viewDidLoad
{
    [super viewDidLoad];
     
    musicPlayer = [MPMusicPlayerController applicationMusicPlayer];


	//初始化音乐选择Controller
    mpc = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio];

	//设置代理
    mpc.delegate = self;

	//选歌界面的title文字
    mpc.prompt = @"请选择喜欢的音乐";

   //设置是否允许多选
    mpc.allowsPickingMultipleItems = YES;

   //设置是否允许选择云端音乐
    mpc.showsCloudItems = YES;
}
//当用户在选歌界面选歌的时候
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
{
    	//保存用户选择的音乐列表
    itemList = mediaItemCollection;

    	//将用户选择的音乐列表设置为musicPlayer的播放列表
    [musicPlayer setQueueWithItemCollection:mediaItemCollection];
    [mpc dismissViewControllerAnimated:YES completion:NULL];

    	//此为循环播放,到最后一首,再回到第一首
    [musicPlayer setRepeatMode:MPMusicRepeatModeAll];

	//设置将要播放的歌曲,此处为从所添加的第一首开始播放
    musicPlayer.nowPlayingItem = [itemList.items objectAtIndex:0];

	//开始播放
    [musicPlayer play];
	//从添加的第一首歌开始播放,之后会继续播放后面的
}
- (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker
{ 
NSLog(@"用户取消了选择");
}



/开始/暂停button被按下
- (IBAction)pauseOrStart:(id)sender {

    if (musicPlayer.playbackState == MPMusicPlaybackStatePlaying) {
        [musicPlayer pause];
    }else{
        //当没有导入歌曲时,播放列表为空,点此不管用。程序不会崩溃。
        [musicPlayer play];
    }
}
//上一首button被按下
- (IBAction)skipToPrevious:(id)sender {
    [musicPlayer skipToPreviousItem];
}
//下一首button被按下
- (IBAction)skipToNext:(id)sender 
{ 
[musicPlayer skipToNextItem];
}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值