ganzf f81ed45a4c 第一次上传 7 달 전
..
Classes f81ed45a4c 第一次上传 7 달 전
LICENSE f81ed45a4c 第一次上传 7 달 전
README.md f81ed45a4c 第一次上传 7 달 전

README.md

AFSoundManager v2

Build Status [alt text]() [alt text]()

AFSoundManager

iOS audio playing (both local and streaming) and recording made easy through a complete and block-driven Objective-C class. AFSoundManager uses AudioToolbox and AVFoundation frameworks to serve the audio.

##Installation

###CocoaPods

AFSoundManager is available on CocoaPods so you can get it by adding this line to your Podfile:

pod 'AFSoundManager'

###Manual

If you don't use CocoaPods, you will have to import these files into your project:

AFSoundManager.h
AFSoundPlayback.h
AFSoundPlayback.m
AFSoundItem.h
AFSoundItem.m
AFSoundQueue.h
AFSoundQueue.m
AFSoundRecord.h
AFSoundRecord.m
NSTimer+AFSoundManager.h
NSTimer+AFSoundManager.m

Also, you need to import AVFoundation, AudioToolbox and MediaPlayer frameworks.

##Roadmap

Since the v2.0 is a very first version, there's a lot of work remaining. This is a sneak peek of what's coming soon:

  • Integration with Control Center and Locked Screen controls
  • Improve data returning to give the developer more data about the current playing
  • A brand new class to let AFSoundPlayback handle real time effects like delay, a customized EQ, etc.
  • AFSoundManager-ready UI controls to integrate a fulfilled play control in your app at a glance, powered by AFSoundManager.

##Usage

###Playing a sound


objc AFSoundItem *item = [[AFSoundItem alloc] initWithLocalResource:@"demo.mp3" atPath:nil];

AFSoundPlayback *player = [[AFSoundPlayback alloc] initWithItem:item];

[player play];

[_queue listenFeedbackUpdatesWithBlock:^(AFSoundItem *item) {

NSLog(@"Item duration: %ld - time elapsed: %ld", (long)item.duration, (long)item.timePlayed);

} andFinishedBlock:^(void) {

NSLog(@"Track finished playing");

}];


###Playing a queue

So, an ```AFSoundItem``` object can be played individually, but it can also be part of a queue, managed by ```AFSoundQueue```.

objc

AFSoundItem *item1 = [[AFSoundItem alloc] initWithLocalResource:@"demo1.mp3" atPath:nil]; AFSoundItem *item2 = [[AFSoundItem alloc] initWithLocalResource:@"demo2.mp3" atPath:nil]; AFSoundItem *item3 = [[AFSoundItem alloc] initWithLocalResource:@"demo3.mp3" atPath:nil];

AFSoundQueue *queue = [[AFSoundQueue alloc] initWithItems:@[item1, item2, item3]]; [queue playCurrentItem];

[_queue listenFeedbackUpdatesWithBlock:^(AFSoundItem *item) {

NSLog(@"Item duration: %ld - time elapsed: %ld", (long)item.duration, (long)item.timePlayed);

} andFinishedBlock:^(AFSoundItem *nextItem) {

NSLog(@"Finished item, next one is %@", nextItem.title);

}];


The block will be executed each 1 second, returning a dictionary with info about the current item. **Expect more info returned by the block in future releases**, like the current item object (```AFSoundItem```), current queue index, etc.

###Current playing actions

####Standard

objc -(void)play; -(void)pause; -(void)restart; -(void)playAtSecond:(NSInteger)second;


####Queue

objc -(void)playCurrentItem; -(void)pause; -(void)playNextItem; -(void)playPreviousItem; -(void)playItem:(AFSoundItem *)item; -(void)playItemAtIndex:(NSInteger)index;


###Managing a queue

To manage a queue, you can both add items with ```-addItem:``` or ```addItem:atIndex:``` or remove items from the current queue with ```-removeItem:``` and ```-removeItemAtIndex:```


###Fetching metadata

Since you'll be working with ```AFSoundItem``` to manage your tracks, you can obtain the metadata related like the ```title```, ```album```, ```artist``` and ```artwork```.

[_queue listenFeedbackUpdatesWithBlock:^(AFSoundItem *item) {
        
    NSLog(@"Item duration: %ld - time elapsed: %ld", (long)item.duration, (long)item.timePlayed);
} andFinishedBlock:^(AFSoundItem *nextItem) {
        
    NSLog(@"Finished item, next one is %@, by %@ album from the album %@", nextItem.title, nextItem.artist, nextItem.album);
    
    [self updateArtwork:nextItem.artwork];
}];

###Recording a sound

As the previous version, ```AFSoundManager``` lets you record sound quickly thanks to ```AFSoundRecord```:

objc AFSoundRecord *recorder = [[AFSoundRecord alloc] initWithFilePath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]];

[recorder startRecording]; ```

##License AFSoundManager is under MIT license so feel free to use it!

##Author Made by Alvaro Franco. If you have any question, feel free to drop me a line at alvarofrancoayala@gmail.com