Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>this line of code works for me fine </p> <p>now I have post my whole code for <strong>Record,save,play &amp; post to server</strong></p> <p><strong>Edited:-</strong></p> <p><strong>SoundRecordVC.h</strong> </p> <pre><code>///*********************** SoundRecordVC.h ***************************// #import &lt;UIKit/UIKit.h&gt; #import &lt;AVFoundation/AVFoundation.h&gt; @interface SoundRecordVC : UIViewController&lt;AVAudioPlayerDelegate,AVAudioRecorderDelegate&gt; { BOOL stopBtnFlag; BOOL pauseBtnFlag; NSTimer *timer; AVAudioPlayer *audioPlayer; AVAudioRecorder *audioRecorder; } // ------------------- Properties --------------------- @property (weak, nonatomic) IBOutlet UIButton *recordBtn; @property (weak, nonatomic) IBOutlet UIButton *playBtn; @property (strong, nonatomic) AVAudioRecorder *audioRecorder; @property (strong, nonatomic) AVAudioPlayer *audioPlayer; @property (strong,nonatomic) NSString *friendId; // ------------------- IBAction ----------------- - (IBAction)recordBtnPressed:(id)sender; - (IBAction)playBtnPressed:(id)sender; </code></pre> <p><strong>SoundRecordVC.m</strong> </p> <pre><code>//*********************** SoundRecordVC.m ***************************// #import "SoundRecordVC.h" @interface SoundRecordVC.m () @end @implementation SoundRecordVC.m @synthesize recordBtn; @synthesize playBtn; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; } #pragma mark - #pragma mark - methods - (IBAction)recordBtnPressed:(id)sender { if (!stopBtnFlag) { if (!audioRecorder.recording) { [self performSelectorOnMainThread:@selector(setUpAudioRecorder) withObject:nil waitUntilDone:YES]; [audioRecorder record]; NSLog(@"Recording..."); } stopBtnFlag = YES; } else { [audioRecorder stop]; stopBtnFlag = NO; } } -(void)setUpAudioRecorder { AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory:AVAudioSessionCategoryRecord error:nil]; // --------------------- Setting for audio ----------------------// NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:AVAudioQualityMedium],AVEncoderAudioQualityKey,[NSNumber numberWithInt:16],AVEncoderBitRateKey,[NSNumber numberWithInt:2],AVNumberOfChannelsKey,[NSNumber numberWithInt:44100.0],AVSampleRateKey, nil]; NSError *error = nil; // --------------------- File save Path ----------------------// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/sounds.caf", documentsDirectory]]; audioRecorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&amp;error]; audioRecorder.delegate = self; if ([audioRecorder prepareToRecord] == YES){ [audioRecorder prepareToRecord]; }else { int errorCode = CFSwapInt32HostToBig ([error code]); NSLog(@"Error: %@ [%4.4s])" , [error localizedDescription], (char*)&amp;errorCode); } } - (IBAction)playBtnPressed:(id)sender { AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil]; //----------------------loading files to player for playing------------------------------------// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/sounds.caf", documentsDirectory]]; NSError *error; NSLog(@"url is %@",url); [audioPlayer stop]; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&amp;error]; audioPlayer.numberOfLoops = 0; audioPlayer.delegate=self; [audioPlayer prepareToPlay]; if(!pauseBtnFlag){ NSLog(@"Playing......."); [audioPlayer play]; pauseBtnFlag=YES; }else{ NSLog(@"Pause"); [audioPlayer pause]; pauseBtnFlag=NO; } } #pragma mark - #pragma mark - AVRecorder Delegate -(void)audioRecorderDidFinishRecording: (AVAudioRecorder *)recorder successfully:(BOOL)flag { NSLog (@"audioRecorderDidFinishRecording:successfully"); NSLog(@"Stopped"); } -(void)audioRecorderEncodeErrorDidOccur:(AVAudioRecorder *)recorder error:(NSError *)error { NSLog(@"Encode Error occurred"); } -(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { } -(void)dataUploadOnServer { NSLog(@"upload"); recStateLabel.text = @"Uploading"; NSString *baseurl = @"http://efron.org.il/dev/singsong/upload.php"; NSURL *dataURL = [NSURL URLWithString:baseurl]; NSMutableURLRequest *dataRqst = [NSMutableURLRequest requestWithURL:dataURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0]; [dataRqst setHTTPMethod:@"POST"]; NSString *stringBoundary = @"0xKhTmLbOuNdArY---This_Is_ThE_BoUnDaRyy---pqo"; NSString *headerBoundary = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",stringBoundary]; [dataRqst addValue:headerBoundary forHTTPHeaderField:@"Content-Type"]; NSMutableData *postBody = [NSMutableData data]; // -------------------- ---- Audio Upload Status ---------------------------\\ //pass MediaType file [postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]]; [postBody appendData:[@"Content-Disposition: form-data; name=\"Data\"; filename=\"myVoice.mp3\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; [postBody appendData:[@"Content-Type: audio/caf\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; [postBody appendData:[@"Content-Transfer-Encoding: binary\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; //*******************load locally store audio file********************// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *audioUrl = [NSString stringWithFormat:@"%@/record.mp3", documentsDirectory]; // get the audio data from main bundle directly into NSData object NSData *audioData; audioData = [[NSData alloc] initWithContentsOfFile:audioUrl]; // add it to body [postBody appendData:audioData]; [postBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; // final boundary [postBody appendData:[[NSString stringWithFormat:@"--%@--\r\n", stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]]; // add body to post [dataRqst setHTTPBody:postBody]; NSHTTPURLResponse* response =[[NSHTTPURLResponse alloc] init]; NSError* error = [[NSError alloc] init] ; //synchronous filling of data from HTTP POST response NSData *responseData = [NSURLConnection sendSynchronousRequest:dataRqst returningResponse:&amp;response error:&amp;error]; //convert data into string NSString *responseString = [[NSString alloc] initWithBytes:[responseData bytes] length:[responseData length] encoding:NSUTF8StringEncoding]; NSLog(@"Response String %@",responseString); } #pragma mark - - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)viewDidUnload { [self setPlayBtn:nil]; [super viewDidUnload]; } </code></pre> <p>@end</p> <p>i hope it will works for u</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload