+(void)showRouteOnMapFrom:(CLLocationCoordinate2D)sourceCoordinate to:(CLLocationCoordinate2D) destCoordinate
{
NSString* urlString = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f",
sourceCoordinate.latitude, sourceCoordinate.longitude,destCoordinate.latitude, destCoordinate.longitude];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
}
I am an iOS developer. Sharing what I’ve learned with others is the main reason why I started this blog. Most of my blogs are going to be on design and programming as this is what I do most of the time :) .
Monday, May 28, 2012
Launching Map App on iOS to show route between source and destination location
Labels:
coordinates,
destination,
google,
iOS,
iPhone,
location,
map,
route,
Source
Saturday, May 26, 2012
Enable ARC in a Non ARC project
Small trick to enable ARC on a specific file in a non-ARC project by using the flag
-fobjc-arcSunday, March 25, 2012
Documents Directory
Simple C function to retrive the path of the documents directory in iOS
NSString *documentsDirectory(void)
{
static NSString *docPath = nil;
if(docPath == nil)
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docPath = [[paths objectAtIndex:0] retain];
}
return docPath;
}
Thursday, September 30, 2010
Create Movie Using AVFoundation
Steps to Create Movie Using AVFoundation:-
1. Create a AVMutableComposition
CFAbsoluteTime currentTime = CFAbsoluteTimeGetCurrent(); //Debug purpose - used to calculate the total time taken
NSError *error = nil;
AVMutableComposition *saveComposition = [AVMutableComposition composition];
2. Get the video and audio file path
NSString *tempPath = NSTemporaryDirectory();
NSString *videoPath = nil ;//<Video file path>;
NSString *audioPath = nil ;//<Audio file path>;;
3. Create the video asset
NSURL * url1 = [[NSURL alloc] initFileURLWithPath:videoPath];
AVURLAsset *video = [AVURLAsset URLAssetWithURL:url1 options:nil];
[url1 release];
4. Get the AVMutableCompositionTrack for video and add the video track to it.
The method insertTimeRange: ofTrack: atTime: decides the what portion of the video to be added and also where the video track should appear in the final video created.
AVMutableCompositionTrack *compositionVideoTrack = [ addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *clipVideoTrack = [[video tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [video duration]) ofTrack:clipVideoTrack atTime:kCMTimeZero error:nil];
NSLog(@"%f %@",CMTimeGetSeconds([video duration]),error);
5. Create the Audio asset
NSURL * url2 = [[NSURL alloc] initFileURLWithPath:audioPath];
AVURLAsset *audio = [AVURLAsset URLAssetWithURL:url2 options:nil];
[url2 release];
6. Get the AVMutableCompositionTrack for audio and add the audio track to it.
AVMutableCompositionTrack *compositionAudioTrack = [saveComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *clipAudioTrack = [[audio tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [audio duration]) ofTrack:clipAudioTrack atTime:kCMTimeZero error:nil];
NSLog(@"%f %@",CMTimeGetSeconds([audio duration]),error);
7. Get file path for of the final video.
NSString *path = [tempPath stringByAppendingPathComponent:@"mergedvideo.mov"];
if([[NSFileManager defaultManager] fileExistsAtPath:path])
{
[[NSFileManager defaultManager] removeItemAtPath:path error:nil];
}
NSURL *url = [[NSURL alloc] initFileURLWithPath: path];
8. Create the AVAssetExportSession and set the preset to it.
The completion handler will be called upon the completion of the export.
AVAssetExportSession *exporter = [[[AVAssetExportSession alloc] initWithAsset:saveComposition presetName:AVAssetExportPresetHighestQuality] autorelease];
exporter.outputURL=url;
exporter.outputFileType=[[exporter supportedFileTypes] objectAtIndex:0];
[exporter exportAsynchronouslyWithCompletionHandler:^{
NSLog(@"export completed : %lf",CFAbsoluteTimeGetCurrent()-currentTime);
}];
The above technique can be used to merge N number of video and audio tracks and create a movie. I hope this tutorial helps to create movie using AVFoundation.
Saturday, August 28, 2010
Integrating google analytics into Blogger
It's very important to keep track of the traffic that your site receives. So, Google Analytics the way to go.It's very simple to integrate Google analytics into Blogger.Follow these steps
- Sign into Google Analytics
- create your profile.
- fill the details like your blogger URL, time zone etc
- hit continue and Copy the code
- Sign into blogger
- Click on the 'Layout' Tab, then click on 'Edit HTML'
- Paste the code between the header tag as shown . <head>........ paste your code here </head>
- Press 'Save Template' to save the changes.
- Back in Google Analytics, click on 'Check Status' or 'Verify Tracking Code' under the Status column. Once your tracking code has been verified, the status will change to: 'Receiving Data.'
Subscribe to:
Posts (Atom)