views:

1974

answers:

3

I have been looking for a way to show the iPhone screen (not the simulator) on a monitor or projector for demo purposes.
Previous SO post suggested jailbreak (Veency, iDemo/DemoGod, screensplitr) or simulator.

Release notes iOS 3.2 (External Display Support) and iOS 4.0 (Inherited Improvements) mentions that it should be possible to connect external displays to iOS 4.0 devices.

Is it now possible to demo an iPhone device on a monitor without using the simulator, or are the release notes about other improvements?

Anyone tried to display an iOS 4.0 device on a projector or monitor?

Update 22.Jul.2010:

  • To mirror iPhone screen: Jailbreak and use Veency, iDemo or screensplitr
  • To output to external device from your application: Implement External Display Support in your app in iOS 3.2, 4.0
+3  A: 

Check Apple Composite AV Cable and Apple Component AV Cable. These connect to a TV and computer so may be you can find a way to get it on a projector.

lukya
@lukya: Thanks, will try the connector. Have you tried it?
Kb
Yes. On a TV. Looks pretty neat.
lukya
+5  A: 

http://code.google.com/p/iphoneos-screen-mirroring/ Has code to allow you to mirror your screen using the cables mentioned above. This code uses private apis so make sure you don't ship with it. This can be done by creating a new target in xcode and conditionally compiling the mirroring code in.

Elfred
That project no longer uses private calls. `UIGetScreenImage` is no longer a private API. Apple has said they will support it going forward, and applications submitted to the App Store can use that call.
Jason
That's good to know, thanks for the clarification.
Elfred
@Elfred: Thanks +1
Kb
UIGetScreenImage is again a private API but the code don't use this API anymore. The problem is that the code squeezes the image vertically and has problems when you rotate the device.
Digital Robot
+8  A: 

The iPhone 4 supports the VGA adapter that launched with the iPad. Within your application, any external display appears as an additional UIScreen instance. You can create a UIWindow, associate it with the UIScreen, and place content there that you would like to have displayed on the secondary monitor.

I show how to do this in the video for the iPad session of my course on iTunes U, and provide some code for this in the course notes. Matt Gemmell also has a nice writeup on the subject.

Brad Larson
@Brad Larson: +1 and green mark. Thanks
Kb
@Brad Larson: As I understand, it is still not possible to show the iPhone screen using the VGA adapter. The apps has to support the external device, right. So if I use KeyNote on iPad it will display the slides, but my own app will not show unless I take care of the external screen allocation. Did I understand this correctly?
Kb
@Kb - Correct, you need to manually put content on the external display, it won't automatically mirror the main display. You can effectively mirror your application's interface by creating duplicate UI elements on the external display (sized to fit the resolution of that display) and then making sure that the state of the secondary display changes with the state of the main display.
Brad Larson