您好,登錄后才能下訂單哦!
下面是代碼,代碼中都有注釋:
[cpp] view plaincopy
//
// RootViewController.h
// SoundDemo
//
// Created by on 13-6-21.
// Copyright (c) 2013年 DoubleMan. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>
@interface RootViewController : UIViewController <AVAudioPlayerDelegate>
{
AVAudioPlayer *player;
}
@property (nonatomic, retain) AVAudioPlayer *player;
@property (nonatomic, retain) UISlider *slider;
@property (nonatomic, retain) NSTimer *timer;
@end
[cpp] view plaincopy
//
// RootViewController.m
// SoundDemo
//
// Created by on 13-6-21.
// Copyright (c) 2013年 DoubleMan. All rights reserved.
//
#import "RootViewController.h"
@interface RootViewController ()
@end
@implementation RootViewController
@synthesize player;
@synthesize slider;
@synthesize timer;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *musicPlay = [UIButton buttonWithType:UIButtonTypeRoundedRect];
musicPlay.frame = CGRectMake(10, 10, 90, 35);
[musicPlay setTitle:@"Play" forState:UIControlStateNormal];
[musicPlay addTarget:self action:@selector(playMusic) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:musicPlay];
UIButton *pause = [UIButton buttonWithType:UIButtonTypeRoundedRect];
pause.frame = CGRectMake(115, 10, 90, 35);
[pause setTitle:@"Pause" forState:UIControlStateNormal];
[pause addTarget:self action:@selector(pause) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:pause];
UIButton *stop = [UIButton buttonWithType:UIButtonTypeRoundedRect];
stop.frame = CGRectMake(220, 10, 90, 35);
[stop setTitle:@"stop" forState:UIControlStateNormal];
[stop addTarget:self action:@selector(stop) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:stop];
slider = [[UISlider alloc] initWithFrame:CGRectMake(10, 65, 300, 20)];
[slider addTarget:self action:@selector(sliderValueChange:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:slider];
//
NSString *path = [[NSBundle mainBundle] pathForResource:@"找一個相愛的理由-晨熙-艾歌" ofType:@"wav"];
NSURL *url = [NSURL fileURLWithPath:path];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
// 設置循環(huán)次數(shù),-1為一直循環(huán)
player.numberOfLoops = -1;
// 準備播放
[player prepareToPlay];
// 設置播放音量
player.volume = 50;
// 當前播放位置,即從currentTime處開始播放,相關于android里面的seekTo方法
player.currentTime = 15;
// 設置代理
player.delegate = self;
int dur = player.duration;
slider.maximumValue = dur;
// 一秒一次更新播放進度
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES];
// 從ipod庫中讀出音樂文件
// MPMediaQuery *everything = [[MPMediaQuery alloc] init];
// // 讀取條件
// MPMediaPropertyPredicate *albumNamePredicate =
// [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeMusic ] forProperty: MPMediaItemPropertyMediaType];
// [everything addFilterPredicate:albumNamePredicate];
//
// NSLog(@"Logging items from a generic query...");
// NSArray *itemsFromGenericQuery = [everything items];
// for (MPMediaItem *song in itemsFromGenericQuery) {
// NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
// NSLog (@"%@", songTitle);
// }
//
// [everything release];
}
// 更新播放進度
- (void)updateSlider {
slider.value = player.currentTime;
}
// 進度滑塊變化時,跳轉到進度播放
- (void)sliderValueChange:(UISlider *)mSlider {
player.currentTime = mSlider.value;
NSLog(@"value: %.0f", mSlider.value);
}
// 停止
- (void)stop {
player.currentTime = 0;
[player stop];
}
// 暫停
- (void)pause {
[player pause];
NSLog(@"pause");
}
// 開始播放
- (void)playMusic {
NSLog(@"start play");
[player play];
}
#pragma mark - AVAudioPlayerDelegate
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
// 播放完成時調用 只有當播放結束時才會調用,循環(huán)播放時不會調
[timer invalidate];
NSLog(@"audioPlayerDidFinishPlaying");
}
/* if an error occurs while decoding it will be reported to the delegate. */
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error {
// 解碼出錯時調用
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)dealloc
{
[player stop];
[player release];
[slider release];
[timer release];
[super dealloc];
}
@end
上一篇IOS學習:用UIWindow自定義AlertView(最基本代碼)
下一篇IOS開發(fā)學習:MKMapView自定義CalloutView
頂
2
踩
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。