search
top
Currently Browsing: iPhone / iPad

Duplicam : wireless camera pairing using iPad and iPhones

I’ve been curious as to being able to put remote cameras on things, such as my friends remote control helicopter recently. I wanted to create a feed from the helicopter to my iPad. I aslo wanted to control the helicopter.

Well controlling the helicopter is another thing, but for now let’s stick with getting a feed from a iPhone, or specifically, multiple iPhones.

Amazingly ‘there’s an app for that’. It’s called Duplicam, and it available from the app store for £1.19.

It’s simple to use, and simple in concept, it’s hard to go wrong with it, so I’m impressed already fro the usability point of view. It’s nicely designed which always makes things more enjoyable.

Essentially, you can pair one iPad with any number of iPhones and grab a live feed from them. When you want, take a picture, from all or one, and save it to you iPhone, iPad or both.

Nice! I was so impressed i felt obligated to download the WordPress iPad app and blog about it :)

Obj-C: UIAlert

Display a simple message to the user thus:

UIAlertView *alert =
        [[UIAlertView alloc] initWithTitle: @"Title goes here"
                             message: @"Message goes here"
                             delegate: self
                             cancelButtonTitle: @"OK"
                             otherButtonTitles: nil];
    [alert show];
    [alert release];

If you want to catch the button press :

- (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) id {
    NSLog(@"button clicked: %d", id);
}

Obj-C: performSelector instead of NSTimer

Often times I just want to delay a single call by a number of seconds. I don’t really want to loop it.

Previous I had used NSTimer to create the call, then I had to remove the time when the call was made. This was less than ideal, and more code that I would have liked. However, I’ve since discover the excellent ‘PerformSelector’:

To use:

[self performSelector:@selector(method) withObject:nil afterDelay:5.0];

To cancel:

[NSRunLoop cancelPreviousPerformRequestsWithTarget:self];

For more information, check out apples docs here: apple docs

Obj-C: StringWithFormat tokens

This is a quick reference for NSString StringWithFormat format specifiers or tokens, as I’m often trying to remember them myself.

Specifier Description
%@ Objective-C object, printed as the string returned by descriptionWithLocale: if available, ordescription otherwise. Also works with CFTypeRef objects, returning the result of theCFCopyDescription function.
%% '%' character
%d%D,%i Signed 32-bit integer (int)
%u%U Unsigned 32-bit integer (unsigned int)
%hi Signed 16-bit integer (short)
%hu Unsigned 16-bit integer (unsigned short)
%qi Signed 64-bit integer (long long)
%qu Unsigned 64-bit integer (unsigned long long)
%x Unsigned 32-bit integer (unsigned int), printed in hexadecimal using the digits 0–9 and lowercase a–f
%X Unsigned 32-bit integer (unsigned int), printed in hexadecimal using the digits 0–9 and uppercase A–F
%qx Unsigned 64-bit integer (unsigned long long), printed in hexadecimal using the digits 0–9 and lowercase a–f
%qX Unsigned 64-bit integer (unsigned long long), printed in hexadecimal using the digits 0–9 and uppercase A–F
%o%O Unsigned 32-bit integer (unsigned int), printed in octal
%f 64-bit floating-point number (double)
%e 64-bit floating-point number (double), printed in scientific notation using a lowercase e to introduce the exponent
%E 64-bit floating-point number (double), printed in scientific notation using an uppercase E to introduce the exponent
%g 64-bit floating-point number (double), printed in the style of %e if the exponent is less than –4 or greater than or equal to the precision, in the style of %f otherwise
%G 64-bit floating-point number (double), printed in the style of %E if the exponent is less than –4 or greater than or equal to the precision, in the style of %f otherwise
%c 8-bit unsigned character (unsigned char), printed by NSLog() as an ASCII character, or, if not an ASCII character, in the octal format \\ddd or the Unicode hexadecimal format \\udddd, where d is a digit
%C 16-bit Unicode character (unichar), printed by NSLog() as an ASCII character, or, if not an ASCII character, in the octal format \\ddd or the Unicode hexadecimal format \\udddd, where d is a digit
%s Null-terminated array of 8-bit unsigned characters. %s interprets its input in the system encoding rather than, for example, UTF-8.
%S Null-terminated array of 16-bit Unicode characters
%p Void pointer (void *), printed in hexadecimal with the digits 0–9 and lowercase a–f, with a leading 0x
%L Length modifier specifying that a following aAeEfFg, or G conversion specifier applies to a long double argument
%a 64-bit floating-point number (double), printed in scientific notation with a leading 0x and one hexadecimal digit before the decimal point using a lowercase p to introduce the exponent
%A 64-bit floating-point number (double), printed in scientific notation with a leading 0X and one hexadecimal digit before the decimal point using a uppercase P to introduce the exponent
%F 64-bit floating-point number (double), printed in decimal notation
%z Length modifier specifying that a following dioux, or X conversion specifier applies to a size_t or the corresponding signed integer type argument
%t Length modifier specifying that a following dioux, or X conversion specifier applies to a ptrdiff_tor the corresponding unsigned integer type argument
%j Length modifier specifying that a following dioux, or X conversion specifier applies to a intmax_tor uintmax_t argument

‘We Love Apple’ : So say Adobe

Adobe today, making a bold statement in an attempt to correct any potential damage that has be caused by the Flash versus Apple (iPod,iPad,iPhone) debate. Could also help mend some bridges with Apple.

[popeye ids="387"]

Flash on the iPhone?
Adobe have been pushing for some time to get Flash on to the above platforms. Seems really sensible, to have a multiplatform tool that can publish to any number of devices. It works in theory for the developer, because he/she only has one development workflow. It works for the device manufacturers because they need to make their devices as seemingly marketable as possible ( ie. It’s got to do everything!). It also works for Adobe, as they have the best position to push their own creative suite of applications to the market.

What Apple think
Apple however, disagree, and want to maintain control over the flow from developer to customer. Many people feel that this is unfair, that this is ‘a bit Microsoft’. I can see their point, I felt the same.

Apple vs Flash : A Brief History

Steve Jobs is right?

However, if you step back and have a look, you can see the points that Apple make are actually valid. The ones that appeal to me are:

  • Control of UI is retained and thus promotes better usability and better user experience
  • Optimised documented APIs mean battery draining code is kept out, and to a minimum
  • Undocumented APIs can potentially open up security leaks
  • Less bugs, as the closed code source is maintained by one party, and then quickly fixed
  • New features of the iPhone platform, quickly available to market, rather than having to wait for 3rd party development software to support it

I’ve worked with Flash since Flash 4. I created sites in 1998 because I believed I could do better, offer a better web experience to the user. Make things move, flow, add some class to a web page that was sorely lacking in the early. Just check out Yahoo from 1998.

[popeye ids="389"]

Verdict

I believe Apple are trying to attain to a dream, a standard that they have idealised. Personally, I love that approach. It means they care about their end user. They care about the ideal. I’m all for that. For that reason, despite developing in Flash for all these years, I’ll happily move on to the next challenge, and develop applications that give me the power to create software I believe in.

Page 1 of 212
top