February 18th, 2011, 08:56 PM
Native Android control client
I'm starting a new thread instead of continuing to hijack the iPhone/Android NetRemote discussion.
Several years ago I put a Girder web interface together for a Nokia n800 tablet which worked nicely for simple home control. I became a fan of Android devices when I bought Hero and Evo phones, but my web interface didn't port as well as I would like. The experience was slow, the browser's own features get in the way, and I was frustrated that cool stuff like physical buttons, gestures, voice recognition, etc. would be hard if not impossible to leverage.
So I started writing a native Android app called "Andre". It's a server-agnostic client control interface that works with anything addressable through a web service (my focus being on Girder). I'd like to share what I've got so far and get some feedback from other Girder/Android users.
Here's some highlights:
- Totally customizable interface with advanced layout capabilities
- Works over WiFi or Cell network (with appropriate port forwarding)
- Fast, responsive control
- Physical button support
- Page & Button animation (transparency, scale & movement)
- Flexible screen size support
- Embeddable browser windows & Android widgets
- Haptic & audio/visual feedback
- Server-hosted, device-cached config and image files
- Voice recognition
- HTTPS/secure communication
- Sprite animations
- State variables & tokens
- Two-way data communication
- Expanded control options (sliders, toggles, multi-choice)
- PC-assisted layout tools
A few things to know:
For the time being, layout is done by editing an XML file. There are some good examples packaged with the app and a fairly comprehensive reference manual. There's also a feature called Layout Mode that uses the device itself to display changes in real-time (edit the XML on your server and it instantly appears on the device screen). Mac/Win based config/layout editing tools are in progress. The XML format is pretty easy to understand, and there's a DTD included so if you use a decent XML editor (XML Spy is nice), it'll warn you if the syntax is wrong.
Also there are no media management capabilities built-in. There are two-way data capabilities coming but probably not to the extent of full media catalog browsing (a la MediaBridge). Instead, Andre can embed browser windows into any of its pages. This way, any of the really cool media interfaces people (Tim in particular) have been writing can be seamlessly included right in a layout.
This is a beta, so there will be bugs and rough edges. I've run it on four different types of Android devices and none of them have started smoking or anything, nevertheless use at your own risk, etc.
Check the included manual for quick-start instructions and a guide to some good example/tutorial layouts that are also included. Also check for tips in the original thread above (though please post any new questions there, I don't want to further pollute that thread) or ask questions in this thread.
The file can be downloaded here: Andre 1.0.3b
Thanks for giving Andre a try! I welcome any comments and suggestions. I'm adding features and fixing bugs pretty fast, and will update this post as they're available.
February 20th, 2011, 10:51 AM
after a short play with Andre 1.03b on my Xperia X8 i would like to report some problems with:
1. Layout refresh has some problems refreshing LocaleDefs defined in the config.xml.
When i edit this file (add new <LocaleDef id) and then hit Menu->Refresh on my device, no new locations are available under Change Room menu option.
2. 'Back' button on my device doesn't close Andre - nothing happens when i press it.
3. New 'Layout Refresh Delay' setting doesn't seem to work. Every time i change my config.xml, i need to refresh layout manualy by 'Refresh' menu button.
February 20th, 2011, 03:15 PM
February 20th, 2011, 05:45 PM
Thanks for Your reply.
Originally Posted by HTLuke
I tried 'keyTrigger' Parameter - 'home' and 'menu' values work well for me, but 'back' value causes Andre to close with en error. I defined it like this:
<Button id="hard_back" hardButton="back">
Layout Mode works well i can see config.xml request in Girder every 500ms or so.
February 20th, 2011, 06:13 PM
It may be that 'back' isn't defined by default for the app type Andre is (a singular task), but perhaps I can enable it. I assume you'd want it to return to the app/launcher from which you launched Andre?
Originally Posted by woniol
Glad to hear Layout mode is working for you. I was really surprised how useful it was for tweaking designs. My intention is to create a simple tree-style editor for the PC/Mac to edit the config.xml in (so all the Parameters, attributes and syntax are are handled for you), and I think that plus Layout Mode will make for a pretty capable editing solution.
I'm thinking of exporting screenshots from the device up to this PC/Mac app so you don't have to stare at the device while editing. This way you get close to PC-based WYSIWYG editing that is guaranteed to look *exactly* like it will on your particular device without me having to basically re-implement all of Android's layout functionality on the PC and deal with different screen sizes, densities, OS anomalies, etc.
February 21st, 2011, 04:12 PM
Great project ! I used Netremote on my winmo phone since several years, but since a few weeks, I played with Android and I prefer it to Winmo.
As no port of Netremote on Android was expected, I start created HTML with Girder webserver but as you notice it, it was not as good as netremote.
I just discover your project. I will start to use it but I need to know If it will be possible in the future to display values from Girder variables ?
Thanks for this answer
Edit : I read your last posts and I saw that it will be possible in the near future ... Sorry for this bad question.
Last edited by rgouyet; February 21st, 2011 at 04:22 PM.
February 21st, 2011, 04:43 PM
February 24th, 2011, 04:12 PM
Enhancement (several API)
I'm using Girder as backend for Andre.
I will love to be able to mix several API behind my buttons.
I'm using the Device Manager functionality.
For example, sometimes I want to use the ajax_set_control.lhtml file instead of the ajax_sendevent.lhtml.
Could it be possible to add a "ServiceAPI" parameter to be able to set an other API file (like the serviceUrl )?
February 24th, 2011, 04:51 PM
March 5th, 2011, 09:33 AM
I was editing an example config file today. When I went to load it I kept getting forced closed when I run the app. I tried putting the original back but still kept getting forced closed. I uninstall app and then put back in but I am still getting force closed when I try to start up. I get the splash screen now and I can get to the settings screen but I don't have enough time to change anything before I get a force closed message.