Friday, 16 September 2011

Recording with saving in iphone

#import <UIKit/UIKit.h>
#import <sqlite3.h>
@class record_audio_testViewController;

@interface record_audio_testAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    record_audio_testViewController *viewController;
    NSString *databaseName;
    NSString *databasePath;
    NSMutableArray *recoredAudioArray;
}
@property(nonatomic,retain)NSMutableArray *recoredAudioArray;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet record_audio_testViewController *viewController;
-(void) checkAndCreateDatabase;
-(void) readEngEntryArrayFromDatabase;
-(void) updateDatabase:(NSString *)pathName;
- (void)insertIntoDatabase:(NSString *)Name;
@end



//////////////////
 #import "record_audio_testAppDelegate.h"
#import "record_audio_testViewController.h"
#import "TableFields.h"
@implementation record_audio_testAppDelegate
@synthesize recoredAudioArray;
@synthesize window;
@synthesize viewController;


- (void)applicationDidFinishLaunching:(UIApplication *)application {  
    databaseName = @"100Songs5.sqlite";
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];
    databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
  
    // Execute the "checkAndCreateDatabase" function
    [self checkAndCreateDatabase];
    [self readEngEntryArrayFromDatabase];

  
    NSLog(@"%@",recoredAudioArray);
    // Override point for customization after app launch  
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
}
-(void) checkAndCreateDatabase{
    // Check if the SQL database has already been saved to the users phone, if not then copy it over
    BOOL success;
  
    // Create a FileManager object, we will use this to check the status
    // of the database and to copy it over if required
    NSFileManager *fileManager = [NSFileManager defaultManager];
  
    // Check if the database has already been created in the users filesystem
    success = [fileManager fileExistsAtPath:databasePath];
  
    // If the database already exists then return without doing anything
    if(success) return;
  
    // If not then proceed to copy the database from the application to the users filesystem
  
    // Get the path to the database in the application package
    NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
  
    // Copy the database from the package to the users filesystem
    [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
  
    [fileManager release];
}

-(void) readEngEntryArrayFromDatabase {
    // Setup the database object
  

    sqlite3 *database;
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];
    databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
    // Init the EngEntryArray Array
    recoredAudioArray = [[NSMutableArray alloc] init];
  
    // Open the database from the users filessytem
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
        // Setup the SQL Statement and compile it for faster access
        const char *sqlStatement = "select * from RecordedAudio";
        sqlite3_stmt *compiledStatement;
        if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
            // Loop through the results and add them to the feeds array
            while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
                // Read the data from the result row
                NSString *EngEntryNm = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
              
                 [recoredAudioArray addObject:EngEntryNm];
              
         }
        }
        // Release the compiled statement from memory
        sqlite3_finalize(compiledStatement);
      
    }
    sqlite3_close(database);
  
}

-(void) updateDatabase:(NSString *)pathName
{
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];
    databasePath = [documentsDir stringByAppendingPathComponent:databaseName];

    sqlite3 *db ;
    sqlite3_stmt *update_statement;
    
    NSString *sqlStr = [NSString stringWithFormat:@"UPDATE RecordedAudio SET File_Name='%@' WHERE File_ID='%d'",
                        pathName];
  
    const char *sql = [sqlStr UTF8String];
    if(sqlite3_open([databasePath UTF8String], &db) == SQLITE_OK) {
      
     if (sqlite3_prepare_v2(db, sql, -1, &update_statement, NULL) != SQLITE_OK) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"DatabaseNotAvailable", @"") message:[NSString stringWithUTF8String:sqlite3_errmsg(db)]
                                                       delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];  
        [alert release];
        //return NO;
    }
    }
    int success = sqlite3_step(update_statement);
    if (success == SQLITE_ERROR) {
        NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(db));
        //return NO;
    }
  
    sqlite3_finalize(update_statement);
    
}
- (void)insertIntoDatabase:(NSString *)Name{
    sqlite3 *database;
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];
    databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
  
   /* if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
        const char *sqlStatement;  
        sqlite3_stmt *addStmt;
      
    
            sqlStatement = "insert into RecordedAudio(File_Name) Values(?)";
     
        if(sqlite3_prepare_v2(database, sqlStatement, -1, &addStmt, NULL) != SQLITE_OK)
            NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
      
      
        sqlite3_bind_text(addStmt,1,[Name UTF8String],-1,SQLITE_TRANSIENT);
      
        if(SQLITE_DONE != sqlite3_step(addStmt))
            NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
      
        sqlite3_finalize(addStmt);
      
        //Reset the add statement.
       // sqlite3_reset(addStmt);
        sqlite3_close(database);
    }*/
 
  
    sqlite3_stmt *insert_statement;
  
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
        static char *sql = "insert into RecordedAudio(File_Name) Values(?)";
        if (sqlite3_prepare_v2(database, sql, -1, &insert_statement, NULL) != SQLITE_OK) {
            NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
        }
    }
  
    sqlite3_bind_text(insert_statement,1,[Name UTF8String],-1,SQLITE_TRANSIENT);
    
    int success = sqlite3_step(insert_statement);
    // Because we want to reuse the statement, we "reset" it instead of "finalizing" it.
    sqlite3_finalize(insert_statement);
    //sqlite3_reset(insert_statement);
    insert_statement=nil;
    if (success == SQLITE_ERROR) {
        NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(database));
    } else {
      
    //    primarykey = sqlite3_last_insert_rowid(db);
    }
   
}


- (void)dealloc {
    [viewController release];
    [window release];
    [super dealloc];
}


@end
/////////////////


#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <CoreAudio/CoreAudioTypes.h>
#import "record_audio_testAppDelegate.h"
@interface record_audio_testViewController : UIViewController <AVAudioRecorderDelegate> {

    record_audio_testAppDelegate *appDel;
    IBOutlet UIButton * btnStart;
    IBOutlet UIButton * btnPlay;
    IBOutlet UIActivityIndicatorView * actSpinner;
    BOOL toggle;
   
    //Variables setup for access in the class:
    NSURL * recordedTmpFile;
    AVAudioRecorder * recorder;
    NSError * error;
   
   
   
    AVAudioPlayer *audioPlayer;
    AVAudioRecorder *audioRecorder;
    int recordEncoding;
    enum
    {
        ENC_AAC = 1,
        ENC_ALAC = 2,
        ENC_IMA4 = 3,
        ENC_ILBC = 4,
        ENC_ULAW = 5,
        ENC_PCM = 6,
    } encodingTypes;
}


-(IBAction) startRecording;
-(IBAction) stopRecording;
-(IBAction) playRecording;
-(IBAction) stopPlaying;


@property (nonatomic,retain)IBOutlet UIActivityIndicatorView * actSpinner;
@property (nonatomic,retain)IBOutlet UIButton * btnStart;
@property (nonatomic,retain)IBOutlet UIButton * btnPlay;

- (IBAction) start_button_pressed;
- (IBAction) play_button_pressed;
@end

/////////////////

#import "record_audio_testViewController.h"


NSURL *   tempFilePath;
int countRecord;
@implementation record_audio_testViewController
@synthesize actSpinner, btnStart, btnPlay;



/*
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
    }
    return self;
}
*/

/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/



// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
   
    appDel=(record_audio_testAppDelegate *)[[UIApplication sharedApplication]delegate];
   
    recordEncoding = ENC_AAC;

    //Start the toggle in true mode.
    toggle = YES;
    //btnPlay.hidden = YES;

    //Instanciate an instance of the AVAudioSession object.
    AVAudioSession * audioSession = [AVAudioSession sharedInstance];
    //Setup the audioSession for playback and record.
    //We could just use record and then switch it to playback leter, but
    //since we are going to do both lets set it up once.
    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error: &error];
    //Activate the session
    [audioSession setActive:YES error: &error];
    countRecord=1;
}




-(IBAction) startRecording
{    NSLog(@"startRecording");
   
         NSString *audioFileName=[NSString stringWithFormat:@"Record%d",countRecord];
    NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
   
    NSString *docsDir = [dirPaths objectAtIndex:0];
   
   tempFilePath = [NSURL fileURLWithPath:[docsDir stringByAppendingPathComponent:[NSString stringWithFormat: @"%@.%@",audioFileName, @"caf"]]];
   
    NSLog(@"%@",tempFilePath);
    NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc] init];
    [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey];
    [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
    [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
    //stringByAppendingPathComponent: [NSString stringWithFormat: @"%@.%@",audioFileName, @"caf"]]];
   
   
    recorder = [[ AVAudioRecorder alloc] initWithURL:tempFilePath settings:recordSetting error:&error];
    [recorder setDelegate:self];
   
    [recorder prepareToRecord];
   
    [recorder record];

       NSLog(@"recording");
}

-(IBAction) stopRecording
{
    
    NSURL *url =  tempFilePath;
    NSData *data = [NSData dataWithContentsOfURL:url];
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    path = [path stringByAppendingString:[NSString stringWithFormat:@"Record%d",countRecord]];
    [data writeToFile:path atomically:YES];
   
    BOOL checkUpadte;
    [appDel readEngEntryArrayFromDatabase];
    NSMutableArray *checkArray=[[NSMutableArray alloc] init];
    checkArray=appDel.recoredAudioArray;
    NSLog(@"checkArray %@",checkArray);
    NSString *check=[NSString stringWithFormat:@"Record%d.caf",countRecord];
    for (int i=0; i<[checkArray count]; i++) {
       
        if ([[checkArray objectAtIndex:i] isEqualToString:check]) {
       
            checkUpadte=YES;
           
        }
        else{
            checkUpadte=NO;
            i=[checkArray count];
        }
    }
   
    if (checkUpadte==NO) {
        // insert
        [appDel insertIntoDatabase:check];//[NSString stringWithFormat:@"Record%d.caf",countRecord ]];
    }
    else{
        // update
        [appDel updateDatabase:check];//[NSString stringWithFormat:@"Record%d.caf",countRecord ]];
       
    }
    //UISaveVideoAtPathToSavedPhotosAlbum(path,self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:),self);   
   
  
    countRecord+=1;
    NSLog(@"stopRecording");
    [audioRecorder stop];
    NSLog(@"stopped");
}
- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
    NSString *message;
    NSString *title;
    if (!error) {
       
        title = NSLocalizedString(@"Photo ", @"");
        message = NSLocalizedString(@"Photo Is Saved To Photo Gallary Successfully", @"");
    } else {
        title = NSLocalizedString(@"Photo Is Not Saved To Photo Gallary", @"");
        message = [error description];
    }
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                    message:message
                                                   delegate:nil
                                          cancelButtonTitle:NSLocalizedString(@"ButtonOK", @"")
                                          otherButtonTitles:nil];
    [alert show];
    [alert release];
}

-(IBAction) playRecording
{
    NSLog(@"playRecording");
    // Init audio with playback capability
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
   
   // NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/Record1.caf", [[NSBundle mainBundle] resourcePath]]];
   // NSError *error;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:tempFilePath error:&error];
    audioPlayer.numberOfLoops = 0;
    [audioPlayer play];
    NSLog(@"playing");
}

-(IBAction) stopPlaying
{
    NSLog(@"stopPlaying");
    [audioPlayer stop];
    NSLog(@"stopped");
}

- (void)dealloc
{
    [audioPlayer release];
    [audioRecorder release];
    [super dealloc];
}



/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/

- (IBAction)  start_button_pressed{

    if(toggle)
    {
        toggle = NO;
        [actSpinner startAnimating];
        [btnStart setTitle:@"Stop Recording" forState: UIControlStateNormal ];   
        btnPlay.enabled = toggle;
        btnPlay.hidden = !toggle;
       
        //Begin the recording session.
        //Error handling removed.  Please add to your own code.
               
        //Setup the dictionary object with all the recording settings that this
        //Recording sessoin will use
        //Its not clear to me which of these are required and which are the bare minimum.
        //This is a good resource: http://www.totodotnet.net/tag/avaudiorecorder/
        NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc] init];
        [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey];
        [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
        [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
       
        //Now that we have our settings we are going to instanciate an instance of our recorder instance.
        //Generate a temp file for use by the recording.
        //This sample was one I found online and seems to be a good choice for making a tmp file that
        //will not overwrite an existing one.
        //I know this is a mess of collapsed things into 1 call.  I can break it out if need be.
        recordedTmpFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent: [NSString stringWithFormat: @"%.0f.%@", [NSDate timeIntervalSinceReferenceDate] * 1000.0, @"caf"]]];
        NSLog(@"Using File called: %@",recordedTmpFile);
        //Setup the recorder to use this file and record to it.
        recorder = [[ AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSetting error:&error];
        //Use the recorder to start the recording.
        //Im not sure why we set the delegate to self yet. 
        //Found this in antother example, but Im fuzzy on this still.
        [recorder setDelegate:self];
        //We call this to start the recording process and initialize
        //the subsstems so that when we actually say "record" it starts right away.
        [recorder prepareToRecord];
        //Start the actual Recording
        [recorder record];
        //There is an optional method for doing the recording for a limited time see
        //[recorder recordForDuration:(NSTimeInterval) 10]
       
    }
    else
    {
        toggle = YES;
        [actSpinner stopAnimating];
        [btnStart setTitle:@"Start Recording" forState:UIControlStateNormal ];
        btnPlay.enabled = toggle;
        btnPlay.hidden = !toggle;
       
        NSLog(@"Using File called: %@",recordedTmpFile);
        //Stop the recorder.
        [recorder stop];
    }
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
   
    // Release any cached data, images, etc that aren't in use.
}

-(IBAction) play_button_pressed{

    //The play button was pressed...
    //Setup the AVAudioPlayer to play the file that we just recorded.
    AVAudioPlayer * avPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:recordedTmpFile error:&error];
    [avPlayer prepareToPlay];
    [avPlayer play];
   
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    //Clean up the temp file.
    NSFileManager * fm = [NSFileManager defaultManager];
    [fm removeItemAtPath:[recordedTmpFile path] error:&error];
    //Call the dealloc on the remaining objects.
    [recorder dealloc];
    recorder = nil;
    recordedTmpFile = nil;
}


@end
.xib
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
    <data>
        <int key="IBDocument.SystemTarget">784</int>
        <string key="IBDocument.SystemVersion">10K549</string>
        <string key="IBDocument.InterfaceBuilderVersion">1306</string>
        <string key="IBDocument.AppKitVersion">1038.36</string>
        <string key="IBDocument.HIToolboxVersion">461.00</string>
        <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
            <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
            <string key="NS.object.0">301</string>
        </object>
        <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
            <bool key="EncodedWithXMLCoder">YES</bool>
            <string>IBUIButton</string>
            <string>IBUIActivityIndicatorView</string>
            <string>IBUIView</string>
            <string>IBProxyObject</string>
        </object>
        <object class="NSArray" key="IBDocument.PluginDependencies">
            <bool key="EncodedWithXMLCoder">YES</bool>
            <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
        </object>
        <object class="NSMutableDictionary" key="IBDocument.Metadata">
            <bool key="EncodedWithXMLCoder">YES</bool>
            <object class="NSArray" key="dict.sortedKeys" id="0">
                <bool key="EncodedWithXMLCoder">YES</bool>
            </object>
            <reference key="dict.values" ref="0"/>
        </object>
        <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
            <bool key="EncodedWithXMLCoder">YES</bool>
            <object class="IBProxyObject" id="372490531">
                <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
            </object>
            <object class="IBProxyObject" id="843779117">
                <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
            </object>
            <object class="IBUIView" id="774585933">
                <reference key="NSNextResponder"/>
                <int key="NSvFlags">274</int>
                <object class="NSMutableArray" key="NSSubviews">
                    <bool key="EncodedWithXMLCoder">YES</bool>
                    <object class="IBUIButton" id="1048870925">
                        <reference key="NSNextResponder" ref="774585933"/>
                        <int key="NSvFlags">292</int>
                        <string key="NSFrame">{{20, 20}, {280, 37}}</string>
                        <reference key="NSSuperview" ref="774585933"/>
                        <reference key="NSNextKeyView" ref="491348703"/>
                        <bool key="IBUIOpaque">NO</bool>
                        <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                        <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                        <int key="IBUIContentHorizontalAlignment">0</int>
                        <int key="IBUIContentVerticalAlignment">0</int>
                        <object class="NSFont" key="IBUIFont" id="265054451">
                            <string key="NSName">Helvetica-Bold</string>
                            <double key="NSSize">15</double>
                            <int key="NSfFlags">16</int>
                        </object>
                        <int key="IBUIButtonType">1</int>
                        <string key="IBUINormalTitle">Begin Recording</string>
                        <object class="NSColor" key="IBUIHighlightedTitleColor" id="494537766">
                            <int key="NSColorSpace">3</int>
                            <bytes key="NSWhite">MQA</bytes>
                        </object>
                        <object class="NSColor" key="IBUINormalTitleColor">
                            <int key="NSColorSpace">1</int>
                            <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes>
                        </object>
                        <object class="NSColor" key="IBUINormalTitleShadowColor" id="423988075">
                            <int key="NSColorSpace">3</int>
                            <bytes key="NSWhite">MC41AA</bytes>
                        </object>
                    </object>
                    <object class="IBUIButton" id="531567224">
                        <reference key="NSNextResponder" ref="774585933"/>
                        <int key="NSvFlags">292</int>
                        <string key="NSFrame">{{20, 225}, {280, 37}}</string>
                        <reference key="NSSuperview" ref="774585933"/>
                        <reference key="NSNextKeyView" ref="100974320"/>
                        <bool key="IBUIOpaque">NO</bool>
                        <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                        <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                        <int key="IBUIContentHorizontalAlignment">0</int>
                        <int key="IBUIContentVerticalAlignment">0</int>
                        <reference key="IBUIFont" ref="265054451"/>
                        <int key="IBUIButtonType">1</int>
                        <string key="IBUINormalTitle">stop Recording</string>
                        <reference key="IBUIHighlightedTitleColor" ref="494537766"/>
                        <object class="NSColor" key="IBUINormalTitleColor">
                            <int key="NSColorSpace">1</int>
                            <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes>
                        </object>
                        <reference key="IBUINormalTitleShadowColor" ref="423988075"/>
                    </object>
                    <object class="IBUIButton" id="100974320">
                        <reference key="NSNextResponder" ref="774585933"/>
                        <int key="NSvFlags">292</int>
                        <string key="NSFrame">{{20, 295}, {280, 37}}</string>
                        <reference key="NSSuperview" ref="774585933"/>
                        <reference key="NSNextKeyView"/>
                        <bool key="IBUIOpaque">NO</bool>
                        <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                        <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                        <int key="IBUIContentHorizontalAlignment">0</int>
                        <int key="IBUIContentVerticalAlignment">0</int>
                        <reference key="IBUIFont" ref="265054451"/>
                        <int key="IBUIButtonType">1</int>
                        <string key="IBUINormalTitle">Play</string>
                        <reference key="IBUIHighlightedTitleColor" ref="494537766"/>
                        <object class="NSColor" key="IBUINormalTitleColor">
                            <int key="NSColorSpace">1</int>
                            <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes>
                        </object>
                        <reference key="IBUINormalTitleShadowColor" ref="423988075"/>
                    </object>
                    <object class="IBUIActivityIndicatorView" id="491348703">
                        <reference key="NSNextResponder" ref="774585933"/>
                        <int key="NSvFlags">-2147483356</int>
                        <string key="NSFrame">{{141, 65}, {37, 37}}</string>
                        <reference key="NSSuperview" ref="774585933"/>
                        <reference key="NSNextKeyView" ref="853401572"/>
                        <bool key="IBUIOpaque">NO</bool>
                        <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                        <bool key="IBUIUserInteractionEnabled">NO</bool>
                        <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                        <int key="IBUIStyle">0</int>
                    </object>
                    <object class="IBUIButton" id="853401572">
                        <reference key="NSNextResponder" ref="774585933"/>
                        <int key="NSvFlags">-2147483356</int>
                        <string key="NSFrame">{{20, 122}, {280, 37}}</string>
                        <reference key="NSSuperview" ref="774585933"/>
                        <reference key="NSNextKeyView" ref="531567224"/>
                        <bool key="IBUIOpaque">NO</bool>
                        <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                        <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                        <bool key="IBUIEnabled">NO</bool>
                        <int key="IBUIContentHorizontalAlignment">0</int>
                        <int key="IBUIContentVerticalAlignment">0</int>
                        <reference key="IBUIFont" ref="265054451"/>
                        <int key="IBUIButtonType">1</int>
                        <string key="IBUINormalTitle">Play Recording</string>
                        <reference key="IBUIHighlightedTitleColor" ref="494537766"/>
                        <object class="NSColor" key="IBUINormalTitleColor">
                            <int key="NSColorSpace">1</int>
                            <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes>
                        </object>
                        <reference key="IBUINormalTitleShadowColor" ref="423988075"/>
                    </object>
                </object>
                <string key="NSFrame">{{0, 20}, {320, 460}}</string>
                <reference key="NSSuperview"/>
                <reference key="NSNextKeyView" ref="1048870925"/>
                <object class="NSColor" key="IBUIBackgroundColor">
                    <int key="NSColorSpace">3</int>
                    <bytes key="NSWhite">MC43NQA</bytes>
                    <object class="NSColorSpace" key="NSCustomColorSpace">
                        <int key="NSID">2</int>
                    </object>
                </object>
                <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
            </object>
        </object>
        <object class="IBObjectContainer" key="IBDocument.Objects">
            <object class="NSMutableArray" key="connectionRecords">
                <bool key="EncodedWithXMLCoder">YES</bool>
                <object class="IBConnectionRecord">
                    <object class="IBCocoaTouchOutletConnection" key="connection">
                        <string key="label">view</string>
                        <reference key="source" ref="372490531"/>
                        <reference key="destination" ref="774585933"/>
                    </object>
                    <int key="connectionID">7</int>
                </object>
                <object class="IBConnectionRecord">
                    <object class="IBCocoaTouchOutletConnection" key="connection">
                        <string key="label">actSpinner</string>
                        <reference key="source" ref="372490531"/>
                        <reference key="destination" ref="491348703"/>
                    </object>
                    <int key="connectionID">15</int>
                </object>
                <object class="IBConnectionRecord">
                    <object class="IBCocoaTouchOutletConnection" key="connection">
                        <string key="label">btnStart</string>
                        <reference key="source" ref="372490531"/>
                        <reference key="destination" ref="1048870925"/>
                    </object>
                    <int key="connectionID">16</int>
                </object>
                <object class="IBConnectionRecord">
                    <object class="IBCocoaTouchEventConnection" key="connection">
                        <string key="label">startRecording</string>
                        <reference key="source" ref="1048870925"/>
                        <reference key="destination" ref="372490531"/>
                        <int key="IBEventType">7</int>
                    </object>
                    <int key="connectionID">20</int>
                </object>
                <object class="IBConnectionRecord">
                    <object class="IBCocoaTouchEventConnection" key="connection">
                        <string key="label">stopRecording</string>
                        <reference key="source" ref="531567224"/>
                        <reference key="destination" ref="372490531"/>
                        <int key="IBEventType">7</int>
                    </object>
                    <int key="connectionID">24</int>
                </object>
                <object class="IBConnectionRecord">
                    <object class="IBCocoaTouchEventConnection" key="connection">
                        <string key="label">playRecording</string>
                        <reference key="source" ref="853401572"/>
                        <reference key="destination" ref="372490531"/>
                        <int key="IBEventType">7</int>
                    </object>
                    <int key="connectionID">26</int>
                </object>
                <object class="IBConnectionRecord">
                    <object class="IBCocoaTouchEventConnection" key="connection">
                        <string key="label">playRecording</string>
                        <reference key="source" ref="100974320"/>
                        <reference key="destination" ref="372490531"/>
                        <int key="IBEventType">7</int>
                    </object>
                    <int key="connectionID">29</int>
                </object>
            </object>
            <object class="IBMutableOrderedSet" key="objectRecords">
                <object class="NSArray" key="orderedObjects">
                    <bool key="EncodedWithXMLCoder">YES</bool>
                    <object class="IBObjectRecord">
                        <int key="objectID">0</int>
                        <reference key="object" ref="0"/>
                        <reference key="children" ref="1000"/>
                        <nil key="parent"/>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">-1</int>
                        <reference key="object" ref="372490531"/>
                        <reference key="parent" ref="0"/>
                        <string key="objectName">File's Owner</string>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">-2</int>
                        <reference key="object" ref="843779117"/>
                        <reference key="parent" ref="0"/>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">6</int>
                        <reference key="object" ref="774585933"/>
                        <object class="NSMutableArray" key="children">
                            <bool key="EncodedWithXMLCoder">YES</bool>
                            <reference ref="1048870925"/>
                            <reference ref="491348703"/>
                            <reference ref="853401572"/>
                            <reference ref="531567224"/>
                            <reference ref="100974320"/>
                        </object>
                        <reference key="parent" ref="0"/>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">8</int>
                        <reference key="object" ref="1048870925"/>
                        <reference key="parent" ref="774585933"/>
                        <string key="objectName">Button - Begin Recording</string>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">9</int>
                        <reference key="object" ref="491348703"/>
                        <reference key="parent" ref="774585933"/>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">17</int>
                        <reference key="object" ref="853401572"/>
                        <reference key="parent" ref="774585933"/>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">22</int>
                        <reference key="object" ref="531567224"/>
                        <reference key="parent" ref="774585933"/>
                        <string key="objectName">Button - Begin Recording</string>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">27</int>
                        <reference key="object" ref="100974320"/>
                        <reference key="parent" ref="774585933"/>
                        <string key="objectName">Button - Begin Recording</string>
                    </object>
                </object>
            </object>
            <object class="NSMutableDictionary" key="flattenedProperties">
                <bool key="EncodedWithXMLCoder">YES</bool>
                <object class="NSArray" key="dict.sortedKeys">
                    <bool key="EncodedWithXMLCoder">YES</bool>
                    <string>-1.CustomClassName</string>
                    <string>-2.CustomClassName</string>
                    <string>17.IBPluginDependency</string>
                    <string>22.IBPluginDependency</string>
                    <string>27.IBPluginDependency</string>
                    <string>6.IBEditorWindowLastContentRect</string>
                    <string>6.IBPluginDependency</string>
                    <string>8.IBPluginDependency</string>
                    <string>9.IBPluginDependency</string>
                </object>
                <object class="NSMutableArray" key="dict.values">
                    <bool key="EncodedWithXMLCoder">YES</bool>
                    <string>record_audio_testViewController</string>
                    <string>UIResponder</string>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                    <string>{{465, 298}, {320, 480}}</string>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                </object>
            </object>
            <object class="NSMutableDictionary" key="unlocalizedProperties">
                <bool key="EncodedWithXMLCoder">YES</bool>
                <reference key="dict.sortedKeys" ref="0"/>
                <reference key="dict.values" ref="0"/>
            </object>
            <nil key="activeLocalization"/>
            <object class="NSMutableDictionary" key="localizations">
                <bool key="EncodedWithXMLCoder">YES</bool>
                <reference key="dict.sortedKeys" ref="0"/>
                <reference key="dict.values" ref="0"/>
            </object>
            <nil key="sourceID"/>
            <int key="maxID">29</int>
        </object>
        <object class="IBClassDescriber" key="IBDocument.Classes"/>
        <int key="IBDocument.localizationMode">0</int>
        <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
        <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
            <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
            <integer value="784" key="NS.object.0"/>
        </object>
        <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
            <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
            <integer value="3000" key="NS.object.0"/>
        </object>
        <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
        <int key="IBDocument.defaultPropertyAccessControl">3</int>
        <string key="IBCocoaTouchPluginVersion">301</string>
    </data>
</archive>





No comments:

Post a Comment