ANN: DroidEx Android device projector, version 0.0.0.0.0.1

18 views
Skip to first unread message

Mark Murphy

unread,
Jan 28, 2009, 7:05:16 PM1/28/09
to cw-an...@googlegroups.com
(cross-posting, slightly altered, from [android-discuss])

In response to the "[android-developers] Re: Rendering the G1 screen on
a computer screen via VNC software?" thread, I tossed together a quick
and very dirty DroidEx.

DroidEx provides a window with a constantly-refreshing view of a device
connected to the host computer. You can use this for demonstrating
software that requires a G1/ADP1 instead of an emulator.

To get it, download the 3K JAR file from:

http://groups.google.com/group/cw-android/web/DroidEx.jar

To run it, you need to put it and the ddmslib.jar from your SDK tools/
folder on the classpath and invoke com.commonsware.droidex.DroidEx, such as:

java -cp
DroidEx.jar:/opt/android-sdk-linux_x86-1.0_r2/tools/lib/ddmlib.jar
com.commonsware.droidex.DroidEx

It also requires that the adb daemon be running, such as a development
PC/Mac.

It assumes there is precisely one device plugged in or emulator running.
All it does is open a window showing you the contents of that device's
or emulator's screen. It refreshes ~6 times/second, so it's not the
smoothest thing going, but at that speed it doesn't seem to drag the G1
down very much.

It also suffers from the following:

-- The screen-capture logic in Android proper seems to occasionally miss
updates for some reason. I've seen this with DDMS and hierarchyviewer
too, so I'm assuming it's something in the Android firmware. Hence,
sometimes DroidEx will appear to be a movement behind (e.g., you clicked
up in a list, and DroidEx still shows the previous one as the selected item)

-- Once, adb or the device seemed to reject DroidEx part-way through a
projection session, causing the image to freeze on DroidEx's window and
a bunch of error messages to be logged to stderr. Closing and reopening
DroidEx was sufficient to clear up this condition.

Also, this was compiled against 1.0r2's version of ddmslib.jar, so it
may or may not work with other versions of the SDK.

It is far from perfect, but it may be better than pointing a webcam at a
device for device-based demos. However, as the saying goes, "your
mileage may vary". I disclaim all warranties, will not be responsible if
your use of DroidEx rips a hole in the space-time continuum, etc.

If there's sufficient interest, and I have time, I'll clean up the
extremely ugly code (~100 lines) and post it somewhere.

If you have questions or comments regarding DroidEx, chime in!

--
Mark Murphy (a Commons Guy)
http://commonsware.com
Android Training in Sweden -- http://www.sotrium.com/training.php

Faber Fedor

unread,
Jan 28, 2009, 9:47:41 PM1/28/09
to cw-an...@googlegroups.com
On Wed, Jan 28, 2009 at 7:05 PM, Mark Murphy <mmu...@commonsware.com> wrote:
DroidEx provides a window with a constantly-refreshing view of a device
connected to the host computer. You can use this for demonstrating
software that requires a G1/ADP1 instead of an emulator.

Sweet!
 
It is far from perfect, but it may be better than pointing a webcam at a
device for device-based demos.

I'll let you know!  I've got an AppEngine/Android presentation in NYC in two or three weeks.
 
If there's sufficient interest, and I have time, I'll clean up the
extremely ugly code (~100 lines) and post it somewhere.

I'd like to see the ugly code as well. I amazed something like this could be done in ~100 LOC!


--

Faber Fedor
Cloud Computing New Jersey
http://cloudcomputingnj.com

j

unread,
Jan 28, 2009, 11:29:07 PM1/28/09
to cw-android
Thanks Mark for the much needed tool! I am going to try it tomorrow.
> Mark Murphy (a Commons Guy)http://commonsware.com

Mark Murphy

unread,
Jan 29, 2009, 8:37:41 AM1/29/09
to cw-an...@googlegroups.com
Faber Fedor wrote:
> It is far from perfect, but it may be better than pointing a webcam at a
> device for device-based demos.
>
> I'll let you know! I've got an AppEngine/Android presentation in NYC in
> two or three weeks.

Well, I'd still use the emulator if that's an option. Some things, like
accelerometers and real GPS, though, can't be readily demonstrated with
the emulator -- that's what DroidEx is for.

> I'd like to see the ugly code as well. I amazed something like this
> could be done in ~100 LOC!

Well, that's because most of the heavy lifting is done by ddmslib.jar.

The firmware has some screenshot mechanism that can be accessed by
adb-the-daemon (if not adb-the-command), and ddmslib provides most of
the hooks for communicating with adb-the-daemon and getting raw images
back from screenshots.

The ~100 lines just converts the raw stuff into a BufferedImage and
arranges to have it be displayed in a Swing JPanel (inside a JFrame).

But I'll release it at some point.

--
Mark Murphy (a Commons Guy)
http://commonsware.com

Android Training on the Ranch! -- Mar 16-20, 2009
http://www.bignerdranch.com/schedule.shtml

j

unread,
Feb 6, 2009, 4:49:27 PM2/6/09
to cw-android
DroidEx works on Windows XP. I will be using DroidEx for a demo next
week at my company. Thanks Mark!
> Mark Murphy (a Commons Guy)http://commonsware.com
Reply all
Reply to author
Forward
0 new messages