Để đọc file nhạc, ta sẽ làm một ứng dụng
nhỏ vui vui. Đó là ứng dụng giả tiếng ngáy, trẻ em rất thích ứng dụng kiểu này.
Tạo
một class hoặc project với tên tùy ý, ở ví dụ này class tên là ngay. Kéo các file nhạc vào cây thư mục bên trái, các
ảnh icon để dùng. Bạn có thể vào trang http://www.freesound.org/ để
tải các loại âm thanh miễn phí.
Nhập thư viện nghe nhạc vào.
import AVFoundation
Thêm dòng sau vào khai báo class.
AVAudioPlayerDelegate
Khai báo nút bấm, ảnh, các biến cần
dùng lên trên viewDidLoad.
var player = AVAudioPlayer()
var bu1:UIButton!
var bu2:UIButton!
var bu3:UIButton!
var bu4:UIButton!
var bu5:UIButton!
var bu6:UIButton!
let im1 = UIImage(named: "nn");
let im2 = UIImage(named: "cb")
let im3 = UIImage(named: "bb");
let im4 = UIImage(named: "bc")
var ima1: UIImageView!
var ima2: UIImageView!
var po=0;
var po2=0;
var po3=0;
var dem=0
var dem2=0
var dem3=0
Vẽ các ảnh cùng nút bấm vào vị trí,
set ảnh nền cho nút bấm, nhét vào view.
Copy xuống dưới viewDidLoad.
ima1 = UIImageView(frame: CGRect(x: 0, y: 10, width: 340, height: 340))
ima2 = UIImageView(frame: CGRect(x: 45, y: 420, width: 240, height: 40))
ima1.image = im1
ima2.image = im2
ima1.center = CGPoint(x: view.center.x, y:180)
ima2.center = CGPoint(x: view.center.x, y:390)
bu1 = UIButton(frame: CGRect(x:80, y: 440, width: 100, height: 42))
bu2 = UIButton(frame: CGRect(x:200, y: 440, width: 100, height: 42))
bu1.setBackgroundImage(im3, forState: .Normal)
bu2.setBackgroundImage(im4, forState: .Normal)
bu1.setTitle("Snore",forState: .Normal)
bu1.setTitleColor(UIColor.blueColor(), forState: .Normal)
bu2.setTitle("Pause",forState: .Normal)
bu2.setTitleColor(UIColor.blueColor(), forState: .Normal)
bu3 = UIButton(frame: CGRect(x:80, y: 500, width: 100, height: 42))
bu4 = UIButton(frame: CGRect(x:200, y: 500, width: 100, height: 42))
bu3.setTitle("Nút bấm",forState: .Normal)
bu4.setTitleColor(UIColor.blueColor(), forState: .Normal)
bu3.setTitle("Snore",forState: .Normal)
bu3.setTitleColor(UIColor.blueColor(), forState: .Normal)
bu5 = UIButton(frame: CGRect(x:80, y: 560, width: 100, height: 42))
bu6 = UIButton(frame: CGRect(x:200, y: 560, width: 100, height: 42))
bu4.setTitle("Pause",forState: .Normal)
bu6.setTitleColor(UIColor.blueColor(), forState: .Normal)
bu5.setTitle("Snore",forState: .Normal)
bu5.setTitleColor(UIColor.blueColor(), forState: .Normal)
bu6.setTitle("Pause",forState: .Normal)
bu3.setBackgroundImage(im3, forState: .Normal)
bu4.setBackgroundImage(im4, forState: .Normal)
bu5.setBackgroundImage(im3, forState: .Normal)
bu6.setBackgroundImage(im4, forState: .Normal)
view.backgroundColor = UIColor.whiteColor()
// Do any additional
setup after loading the view.
view.addSubview(bu1)
view.addSubview(bu2)
view.addSubview(bu3)
view.addSubview(bu4)
view.addSubview(bu5)
view.addSubview(bu6)
view.addSubview(ima1)
view.addSubview(ima2)
Ứng dụng bây giờ trông như sau.
Copy hàm để play nhạc xuống trên ngoặc
đóng dưới cùng.
func play(songPath: String){
let songUrl = NSURL.fileURLWithPath(songPath)
do {
tryplayer = AVAudioPlayer(contentsOfURL: songUrl)
player.delegate = self
player.prepareToPlay()
player.play()
player.numberOfLoops = -1
} catch (let error asNSError) {
//print("audioPlayer
error: \(error)")
}
player.play()
}
Thêm hàm cho hai nút đầu tiên.
func nut1(sender: UIButton){
dem=1
dem2=0
dem3=0
po=0
let songPath = NSBundle.mainBundle().pathForResource("ac", ofType: "WAV")!
play(songPath)
}
func nut2(sender: UIButton){
po=po+1
if(dem==1){
if(po%2==1){
player.pause()
}
else{
player.play()
}
}
}
Xem code một chút.
Tại nút 1 ta cho biến dem=1 tức đang play,
sẽ dùng nó bên nút Pause, bật nhạc và set để po=0 tức không phải đang chờ. Các
biến đếm khác = 0 tức không đang phát.
Sang nút Pause, ta cộng po lên rồi
chia chẵn lẻ để nếu người dùng ấn một lần thì dừng, hai lần lại bật, cứ như vậy.
Dùng biến đếm bên nút Snore dem=1 tức
là nếu đang phát thì mới Pause.
Các nút sau tương tự.
Copy thêm hàm cho các nút còn lại cùng
hàm để ẩn thanh bar cột sóng.
func nut3(sender: UIButton){
dem2=1
dem=0
dem3=0
po2=0
let songPath = NSBundle.mainBundle().pathForResource("a", ofType: "wav")!
play(songPath)
}
func nut4(sender: UIButton){
po2=po2+1
if(dem2==1){
if(po2%2==1){
player.pause()
}
else{
player.play()
}
}
}
func nut5(sender: UIButton){
dem3=1
dem=0
dem2=0
po3=0
let songPath = NSBundle.mainBundle().pathForResource("ab", ofType: "mp3")!
play(songPath)
}
func nut6(sender: UIButton){
po3=po3+1
if(dem3==1){
if(po3%2==1){
player.pause()
}
else{
player.play()
}
}
}
overridefunc prefersStatusBarHidden() ->Bool {
returntrue
}
Cuối cùng gắn các hàm vào các nút.
bu1.addTarget(self, action: #selector(ngay.nut1(_:)), forControlEvents: UIControlEvents.TouchUpInside)
bu2.addTarget(self, action: #selector(ngay.nut2(_:)), forControlEvents: UIControlEvents.TouchUpInside)
bu3.addTarget(self, action: #selector(ngay.nut3(_:)), forControlEvents: UIControlEvents.TouchUpInside)
bu4.addTarget(self, action: #selector(ngay.nut4(_:)), forControlEvents: UIControlEvents.TouchUpInside)
bu5.addTarget(self, action: #selector(ngay.nut5(_:)), forControlEvents: UIControlEvents.TouchUpInside)
bu6.addTarget(self, action: #selector(ngay.nut6(_:)), forControlEvents: UIControlEvents.TouchUpInside)
Chạy thử để thấy ứng dụng đã hoạt động,
ấn các nút để kiểm tra, đang chạy nút này lại ấn nút kia xem có phát bình thường
không.
Bạn có thể thêm nút Quit, trong đó để
lệnh player.stop() để dừng phát khi người
dùng thoát app.
No comments:
Post a Comment