音乐播放器
1 #import "ViewController.h" 2 3 @interface ViewController () 4 5 @end 6 7 @implementation ViewController 8 9 - (void)viewDidLoad { 10 [super viewDidLoad]; 11 // Do any additional setup after loading the view, typically from a nib. 12 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 13 dispatch_async(queue, ^{ 14 // 创建一个定时器 15 [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES]; 16 17 // 保持线程活跃 18 [[NSRunLoop currentRunLoop] run]; 19 }); 20 21 // 播放 22 play1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 23 play1.frame = CGRectMake(30, 360, 90, 35); 24 play1.backgroundColor = [UIColor redColor]; 25 [play1 setTitle:@"播放" forState:UIControlStateNormal]; 26 [play1 addTarget:self action:@selector(playAction:) forControlEvents:UIControlEventTouchUpInside]; 27 28 [self.view addSubview:play1]; 29 // 停止播放 30 stop = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 31 stop.frame = CGRectMake(30, 260, 90, 35); 32 stop.backgroundColor = [UIColor redColor]; 33 [stop setTitle:@"停止" forState:UIControlStateNormal]; 34 [stop addTarget:self action:@selector(stopAction:) forControlEvents:UIControlEventTouchUpInside]; 35 [self.view addSubview:stop]; 36 // 暂停播放 37 pause = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 38 pause.frame = CGRectMake(30, 160, 90, 35); 39 pause.backgroundColor = [UIColor redColor]; 40 [pause setTitle:@"暂停" forState:UIControlStateNormal]; 41 [pause addTarget:self action:@selector(pauseAction:) forControlEvents:UIControlEventTouchUpInside]; 42 [self.view addSubview:pause]; 43 // 声音UILabel 44 sound = [[UILabel alloc] initWithFrame:CGRectMake(90, 210, 100, 20)]; 45 sound.text = @"声音:"; 46 [self.view addSubview:sound]; 47 // 声音UISlider 48 audioPlayer = [[UISlider alloc] initWithFrame:CGRectMake(150, 170, 200, 100)]; 49 [audioPlayer addTarget:self action:@selector(audioSilderChanged:) forControlEvents:UIControlEventValueChanged]; 50 51 [self.view addSubview:audioPlayer]; 52 // 进度UISlider 53 _timeSlider = [[UISlider alloc] initWithFrame:CGRectMake(160, 270, 150, 100)]; 54 [_timeSlider addTarget:self action:@selector(timeSliderChanged:) forControlEvents:UIControlEventValueChanged]; 55 [self.view addSubview:_timeSlider]; 56 // 当前进度 57 _startTimeLabel = [[UILabel alloc] initWithFrame:CGRectMake(130, 270, 100, 100)]; 58 [self.view addSubview:_startTimeLabel]; 59 // 音乐总长 60 _endTimeLabel = [[UILabel alloc] initWithFrame:CGRectMake(320, 270, 100, 100)]; 61 [self.view addSubview:_endTimeLabel]; 62 _audioPlayer.delegate = self; 63 64 65 } 66 - (void)timerAction:(NSTimer *)timer 67 { 68 // 回到主线程刷新UI 69 dispatch_async(dispatch_get_main_queue(), ^{ 70 _startTimeLabel.text = [NSString stringWithFormat:@"%d",(int)_audioPlayer.currentTime]; 71 _timeSlider.value = _audioPlayer.currentTime; 72 }); 73 } 74 75 -(void)pauseAction:(UIButton *)pause{ 76 [_audioPlayer pause]; 77 } 78 -(void)stopAction:(UIButton *)stop{ 79 [_audioPlayer stop]; 80 _audioPlayer = nil; 81 } 82 -(void)audioSilderChanged:(UISlider *)audio{ 83 UISlider *slider = (UISlider *)audioPlayer; 84 // 7.设置音量的大小 85 _audioPlayer.volume = slider.value; 86 87 88 } 89 -(void)playAction:(UIButton *)pl{ 90 if (_audioPlayer == nil) { 91 // 1.音乐文件的路径 92 NSString *urlString = [[NSBundle mainBundle] pathForResource:@"王绎龙-邻家美眉" ofType:@"mp3"]; 93 // 2.转化成本地路径 94 NSURL *url = [NSURL fileURLWithPath:urlString]; 95 // 3.创建播放对象 96 _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 97 _audioPlayer.numberOfLoops = -1; 98 99 // 5.记录音乐的总时长 duration声音的持续时间 100 _startTimeLabel.text = @"0"; 101 // 音乐总长UILabel 102 _endTimeLabel.text = [NSString stringWithFormat:@"%d",(int)_audioPlayer.duration]; 103 // 6.设置滑条的参数 104 _timeSlider.minimumValue = 0; 105 _timeSlider.maximumValue = _audioPlayer.duration; 106 // 7.设置音量的大小 107 _audioPlayer.volume = 0.0; 108 } 109 110 // 5.播放 111 [_audioPlayer play]; 112 } 113 -(void)timeSliderChanged:(UISlider *)time{ 114 // 播放进度的改变 115 _audioPlayer.currentTime = _timeSlider.value; 116 } 117 118 @end
时间: 2024-10-22 11:20:30