iOS 简易音乐播放界面
来源:互联网 发布:电脑有趣的软件 编辑:程序博客网 时间:2024/06/15 18:51
/***原计划写一个音视频媒体全部支持的播放器,目前出于需求,只做了音乐(.MP3)的播放,后续视频及其他媒体类型播放会补上.***/
自定义音乐播放界面,实现以下三个功能:
1.根据URL读取并播放音乐文件(.MP3)
2.通过UISlider展示当前进度
3.手动滑动Slider的滑块能定位到实际进度并从实际进度开始播放
先上效果图:
代码如下:
//声明文件
JakMediaPlayerViewController.h:
//// JakMediaPlayerViewController.h//// Created by zyh on 16/8/4.// Copyright © 2016年 HC. All rights reserved.//#import <UIKit/UIKit.h>#import <AVFoundation/AVFoundation.h>@interface JakMediaPlayerViewController : UIViewController@end
//实现文件
JakMediaPlayerViewController.m:
//// JakMediaPlayerViewController.m//// Created by zyh on 16/8/4.// Copyright © 2016年 HC. All rights reserved.//#import "JakMediaPlayerViewController.h"#import "Define.h"@interface JakMediaPlayerViewController ()<AVAudioPlayerDelegate>@property(nonatomic,strong)AVAudioPlayer *musicPlayer;@property(nonatomic,strong)UIButton *playAndPauseBtn ;@property(nonatomic,strong)UISlider *playProgress;@property(nonatomic,strong)UILabel *currentLabel;@property(nonatomic,strong)NSTimer *timer;//定时器用来控制播放进度@property(nonatomic)BOOL isPlaying;//用来判断播放状态@end@implementation JakMediaPlayerViewController- (void)viewDidLoad { [super viewDidLoad]; NSURL *url = [NSURL URLWithString:@"xxxxx"]; self.musicPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil]; self.musicPlayer.delegate = self; [self.musicPlayer prepareToPlay]; //显示文件名称 UILabel *nameLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, MY_WIDTH+40 , MY_WIDTH, 30)]; nameLabel.textAlignment = NSTextAlignmentCenter; nameLabel.font = [UIFont systemFontOfSize:23]; nameLabel.text = @"xxxx"; [self.view addSubview:nameLabel]; //显示进度 self.playProgress = [[UISlider alloc]initWithFrame:CGRectMake(40, MY_HEIGHT - 150, MY_WIDTH - 80, 30)]; self.playProgress.value = 0.0; [self.playProgress addTarget:self action:@selector(valueChanged) forControlEvents:UIControlEventValueChanged]; self.playProgress.maximumTrackTintColor = [UIColor lightGrayColor]; [self.view addSubview:self.playProgress]; //显示当前已播放时间 self.currentLabel = [[UILabel alloc]initWithFrame:CGRectMake(20, MY_HEIGHT - 110, 40, 20)]; self.currentLabel.textAlignment = NSTextAlignmentCenter; self.currentLabel.text =[self getMinuteSecondWithTime:self.musicPlayer.currentTime]; [self.view addSubview:self.currentLabel]; //显示音乐文件总时间 UILabel * totalLabel = [[UILabel alloc]initWithFrame:CGRectMake(MY_WIDTH-60, MY_HEIGHT - 110, 40, 20)]; totalLabel.textAlignment = NSTextAlignmentCenter; totalLabel.text =[self getMinuteSecondWithTime:self.musicPlayer.duration]; [self.view addSubview:totalLabel]; //设置播放/暂停按钮 self.playAndPauseBtn = [[UIButton alloc]initWithFrame:CGRectMake(MY_WIDTH/2-25, MY_HEIGHT - 80, 50, 50)]; [self.playAndPauseBtn addTarget:self action:@selector(playAndPauseBtnTouched) forControlEvents:UIControlEventTouchUpInside]; [self.playAndPauseBtn setImage:[UIImage imageNamed:@"player_button_play"] forState:UIControlStateNormal]; [self.view addSubview:self.playAndPauseBtn]; }-(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated];// [self.musicPlayer play];}-(void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; self.isPlaying = NO; [self.musicPlayer stop];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}//播放时调用,进度条更新当前进度,当前时间标签更新当前时间-(void)playedMusic{ self.playProgress.value = self.musicPlayer.currentTime/self.musicPlayer.duration; self.currentLabel.text = [self getMinuteSecondWithTime:self.musicPlayer.currentTime];}//手动拖动进度条的时候调用-(void)valueChanged{ self.musicPlayer.currentTime = self.playProgress.value *self.musicPlayer.duration; self.isPlaying = NO; [self playAndPauseBtnTouched];}//点击播放/暂停 按钮时调用-(void)playAndPauseBtnTouched{ self.isPlaying = !self.isPlaying; if (self.isPlaying) { [self.playAndPauseBtn setImage:[UIImage imageNamed:@"player_button_stop"] forState:UIControlStateNormal]; [self.musicPlayer play]; self.timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(playedMusic) userInfo:nil repeats:YES]; }else{ [self.playAndPauseBtn setImage:[UIImage imageNamed:@"player_button_play"] forState:UIControlStateNormal]; [self.musicPlayer pause]; [self.timer invalidate]; }}//通过获取时间展示"分钟:秒钟"-(NSString *)getMinuteSecondWithTime:(NSTimeInterval)time{ int minute = (int)time / 60; int second = (int)time % 60; if (second > 9) { return [NSString stringWithFormat:@"%d:%d",minute,second]; } return [NSString stringWithFormat:@"%d:0%d",minute,second];}//代理方法,播放结束后调用#pragma mark -- AVAudioPlayerDelegate- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{ [self playAndPauseBtnTouched];}@end
尚有不足,欢迎指正.
1 0
- iOS 简易音乐播放界面
- 简易音乐播放器
- 简易音乐播放器
- 简易音乐播放器
- 简易的音乐播放
- pygame简易音乐播放
- 简易的音乐播放器
- android简易音乐播放器
- MFC简易音乐播放器
- 自定义简易音乐播放器
- 简易的音乐播放器
- iOS自定义控制中心音乐播放 锁屏界面背景图片
- 简易音乐播放器(本地播放)
- Android简易音乐播放器之界面实现(第一篇)
- ios后台播放音乐
- IOS 播放音乐实例
- iOS后台播放音乐
- IOS播放音乐
- 领域特性模块集
- 数据结构实验之栈四:括号匹配
- 二叉树的非递归遍历
- 文件上传(利用oss 和plupload)
- 欢迎使用CSDN-markdown编辑器
- iOS 简易音乐播放界面
- Hive 合并小文件
- 针对Java 四大域对象的汇总
- PHP 操作mongodb api大部分方法
- @GeneratedValue 与 @GenericGenerator
- 深度解析Java8 – AbstractQueuedSynchronizer的实现分析(下)
- HTML DOM Document 对象
- Java.Web学习笔记 JSP
- velocity模板引擎学习(1)