2010-04-06 50 views
7

Tôi đang lên kế hoạch phát hành 10 bản ghi âm miễn phí nhưng được tích hợp trong ứng dụng iphone. Họ không có sẵn trên web hoặc itunes hoặc bất cứ nơi nào như bây giờ.Phát nhiều tệp âm thanh bằng AVAudioPlayer

Tôi mới dùng iPhone sdk (mới nhất) như bạn có thể tưởng tượng, vì vậy tôi đã xem qua tài liệu dành cho nhà phát triển, nhiều diễn đàn và ngăn xếp để tìm hiểu.

Ứng dụng mẫu avTouch của Apple là một khởi đầu tuyệt vời. Nhưng tôi muốn ứng dụng của tôi phát tất cả 10 bản nhạc một. Tất cả các bài hát được thêm vào thư mục tài nguyên và được đặt tên theo track1, track2 ... track10.

Trong mã ứng dụng avTouch tôi có thể thấy 2 phần sau đây là nơi tôi nghĩ rằng tôi cần phải thực hiện thay đổi để đạt được những gì tôi đang tìm kiếm. Nhưng tôi bị lạc.

// Load the array with the sample file 
NSURL *fileURL = [[NSURL alloc] 
       initFileURLWithPath: 
       [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"m4a"]]; 


- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 
{ 
if (flag == NO) 
    NSLog(@"Playback finished unsuccessfully"); 

[player setCurrentTime:0.]; 
[self updateViewForPlayerState]; 
} 

thể ai vui lòng giúp tôi về
1. làm thế nào để tải các mảng với tất cả 10 bài hát được thêm vào thư mục nguồn
2. và khi tôi nhấn chơi, người chơi nên bắt đầu ca khúc đầu tiên. khi bản nhạc đầu tiên kết thúc bản nhạc thứ 2 sẽ bắt đầu và cứ như vậy cho các bản nhạc còn lại.

Cảm ơn bạn

Trả lời

8

inScript, bạn có tìm thấy giải pháp cho điều này chưa? bạn có thể muốn gắn bó với một cái gì đó đơn giản như một tuyên bố if { // do something } else { // do something else } để chơi chúng back-to-back.

Để tải vào một mảng, hãy tạo tệp plist mới (nhấp chuột phải vào cây thư mục -> Thêm -> Tệp mới "và tìm danh sách thuộc tính ở đó; hãy đặt tên tệp âm thanh. Tiếp theo, mở tệp mới đó, nhấp chuột phải trên nó, nơi nó nói "Từ điển" theo mặc định, đi xuống "Loại giá trị" và chọn "Mảng" ... Nếu bạn nhìn sang phía xa bên phải của dòng đó, bạn sẽ thấy một nút tìm kiếm 3 thanh nhỏ, nhấp đó để thêm mục đầu tiên của bạn Bây giờ bạn thêm một mục tại một thời điểm, "track01", "track02" vv ... mỗi dòng

mã này đi trong file .h của bạn:..

NSArray* soundsList; 

Mã này nằm trong bạn r .m file:

NSString *soundsPath = [[NSBundle mainBundle] pathForResource:@"soundslist" ofType:@"plist"]; 
soundsList = [[NSArray alloc] initWithContentsOfFile:soundsPath]; 

Mảng luôn bắt đầu tại chỉ mụC# 0 ... vì vậy nếu bạn có 5 bản nhạc, track01 sẽ là chỉ số 0, track02 sẽ là chỉ mục 1, v.v. Nếu bạn muốn nhanh chóng thăm dò ý kiến ​​mảng của mình để xem nội dung trong đó, bạn có thể thêm đoạn mã sau:

Tất cả những gì cần tính là có bao nhiêu mục trong mảng của bạn (tức là 5 hoặc 10 hoặc nhiều bài hát) và objectAtIndex: sẽ trả về đối tượng ở bất kỳ số chỉ mục nào bạn gửi vào đó.

Đối chơi back-to-back bạn muốn chỉ cần đặt lệnh if-then trong phương pháp audioPlayerDidFinishPlaying

Nếu bạn muốn chơi các tập tin, bạn có thể làm:

NSString* filename = [soundsList objectAtIndex:YOURINDEXNUMBER]; 
NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"]; 

AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
self.theAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded 

[newAudio release]; // release the audio safely 

theAudio.delegate = self; 
[theAudio prepareToPlay]; 
[theAudio setNumberOfLoops:0]; 
[theAudio play]; 

nơi YOURINDEXNUMBER là bất kỳ track nào bạn muốn chơi (hãy nhớ, 0 = track01, 1 = track02, v.v.)

Nếu bạn cần trợ giúp thiết lập các biến trong tệp .h, hãy cho tôi biết và tôi có thể hướng dẫn bạn.Ngoài ra, hãy nhớ phát hành theAudio trong phương thức dealloc của bạn để nó sẽ phát hành nó khi chương trình thoát.

0

Trong mã của bạn U có thể gọi lại trình phát ur và phát lại âm thanh trong âm thanhPlayerDidFinishPhát và theo dõi u phát số lượng bản nhạc (bằng cách sử dụng Bộ đếm).

Making đang độ u quản lý ur player để chơi liên tục 10 ca khúc một lần nữa và một lần nữa .....

Đối với nhiều chức năng hơn u có được tham khảo từ AVAudio lớp người chơi tham khảo ...

Đối với Better trông u đặt nút khác nhau và khối lượng tùy chỉnh xoay noob .... sử dụng CoreAnimation Class ....

Best Of Luck

Các vấn đề liên quan