Page 2 of 60 FirstFirst 12341252 ... LastLast
Results 11 to 20 of 591

Thread: Native Android control client

  1. #11
    Join Date
    Mar 2004
    Posts
    316

    Default

    Quote Originally Posted by HTLuke View Post
    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
    - Gestures
    - 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

    Coming soon:
    - 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.

    Luke

    First of all let me say awesom app and bravo on stepping up to put this kind of time and effort into a native Android solution. I've been using RDP for a while now and it's working but as I look to recreate a tablet sized interface I certialy would like a native Android app. I really love the idea that I can include widgets and use hard keys, those are 2 major reasons I don't want to stick with the RDP solution. I would love to switch over to Andre but there are a few things holding me back... Ever since I got my EVO the PDAs seem so outdated (small screens, resistive screens, battery). I'm thinking soon my EVO is going to get lost (become wifi only ) and I'll pay Sprint the $150 deducible for a new one so I have a dedicated EVO at home for this setup plus the one I use as a phone.

    Your Locale setup is interesting but offers limited scalability. In a modern app we need to be able to define Zone (locale/room), Input device, and Output device while minimizing the work to setup the screens. I came up with a solution in NR that I have used for years and it works great...

    In my current Netremote/Girder setup I use variables on the netremote side to pick zones and devices. I'll explain...

    My remote is setup with zones (rooms), IN devices (Sat, Music, DVD, etc), OUT devices (TV, PJ, AMP). At the top of my device I have a drop-down type of menu to select a zone, then I have a out device botton that toggles between 1, 2 or 3 OUT devices (amp, tv, pj) depending on the room although with a larger screen I might have a button for each instead of a toggle. Then there is a line of icons for IN devices (Sat, DVD, Music, etc). When I select a zone (room), a OUT device, and IN device the values behind the NR buttons are dynamic in that what gets sent to girder is based on the values of the variables for zones and devices.

    So let's say I have selected a ZONE of Livingroom, a INDEVICE of DVD, OUTDEVICE of TV.
    An INDEVICE button (i.e. play button) would have the following code (variables) for the girder send event ({ZONE}.{INDEVICE}.PLAY) which would really equal (LIVINGROOM.DVD.PLAY).

    An OUTDEVICE button (i.e. vol- button) would have the following code (variables) for the girder send event ({ZONE}.{OUTDEVICE}.VOL-) which would really equal (LIVINGROOM.TV.VOL-).

    You can see that with this setup you really only need to create most of your buttons once and you simply let NR handle assigning the variables to send the correct girder send events for each key. It's very dynamic and scalable for more in or out devices and zones. If I move any device to a different room I just need to move the events in girder for the commands and nothing needs to change on the client.

    In theory Andre can achive the same end result with the locale setup although it would be a lot of additional work because every button that has a different value needs to be recreated over and over for all the combinations. In my case I have 5 zones, up to 3 out device in some zones, and up to 5 in devices in some zones.

    Ok, this a this where this setup gets cool. Let's say I in Living room watching a DVD on the TV so I have these things selected in NR. Now if I select Music it will send an event to girder telling it I selected Music then girder will quick lookup what device I last used for music in the living room (AMP) and will set the OUTDEVICE variable on this NR client to AMP. So as I switch from DVD and Music the variable for OUTDEVICE gets automatically gets updated and all my buttons automiatically switch to control the AMP. I can also hide buttons based on the value of variables. Might seems pointless for Music and AMP but sometimes I might want to have Music up on my TV even if it is just music. I originally came up with this because in my theater room I have a AMP, PJ, and TV. I often my have Sat on the TV while having the PS3 on the PJ and maybe my Music on my AMP so with this setup I can push 1 button (Sat, PS3, or Music) and it's smart enough to know that last OUTDEVICE I used on all my INDEVICES.

    This all works the same for zones too. If I select my living room I looks up and sees that I last watched Sat on the TV so I as I click the zone (room) it automatically selects Sat and TV or whatever the last IN and OUT devices were. Makes switching between zones a lot less work. The goal with this whole setup was to minimize the botton pushes and it really works well!

    So with all this being said it would be really great if Andre had the following capabilites.

    *Variables - Set locally with a button push or by girder. Girder send events can contain these variables. Must be able to target a specific Andre as there may be many running at one time.

    *Ability to jump to a Andre page from girder. Also must be able to targer a specific Andre from Girder.

    *Button states - So I can change the graphic based on a value of a variable. Or I might set certain buttons to hide if a variable is a certian value. (i.e. Maybe I hide display type buttons on the page if I have AMP selected.

    Because of these capabilties in NR I only basically need 1 page for each INDEVICE and all ZONES and OUTDEVICES are simply controlled by variables.
    Last edited by rkirmeier; March 6th, 2011 at 10:24 AM.

  2. #12
    Join Date
    May 2008
    Posts
    119

    Default

    I got it going. I was able to hit refresh before it crashed and not it is working again. I guessed I screwed up the config file pretty bad


    I am going to try and recreate as much as I can of my netremote skin with this. Here are a few of the pages I want to create and was wondering if some of this will be possible.

    Home Screen


    Seems pretty basic. Button group on top to launch other pages and bottom button group just triggers events in Girder.


    Remote Screen:


    This seems like it shouldn't be to hard basically what you had with just some different graphics.

    Security Screen:

    This is one where I am not sure how to do. The arming buttons are easy. I just send events to Girder but I'm not sure how I would do the keypad part.

    Lights Screen:
    http://img145.imageshack.us/img145/6...ghtslayout.png (had to link to this picture ... only 4 pics in one post allowed)
    The top part again doesn't seem that hard with just the buttons but wondering how I would go about the sliders?

    I was just wondering if you had some thoughts about going about creating that or if there are things that might not be possible to do.

    Thanks for app so far looks great.

  3. #13
    Join Date
    Mar 2004
    Posts
    316

    Default

    Thought of one other feature that would be really helpful. Overlay pages.

  4. #14
    Join Date
    Mar 2005
    Location
    Hutchinson, Kansas, USA
    Posts
    217

    Default

    Is Andre still in development? I installed the apk linked in the first post but it reports that that version has expired...
    Terry

  5. #15
    Join Date
    Mar 2004
    Posts
    316

    Default

    Sure would like to see that new version with the variable support!

  6. #16
    Join Date
    May 2004
    Location
    France
    Posts
    250

    Default

    Any new version to come ? The first beta is no more usable since many days...
    thanks

  7. #17
    Join Date
    Mar 2007
    Posts
    277

    Default

    Sorry for being MIA for awhile guys, I forgot the message board by default doesn't send more than one notification email unless I visit, and I thought this thread was quiet! I'm glad people are finding Andre potentially useful.

    I've been cranking away at Andre and got pretty deep into an architectural refactoring in order to start supporting states and variables, and the app was pretty unstable for awhile. My intention was to continue to clean things up until I reached a higher level of day-to-day useability but I know the old version has timed out and I don't want to leave people with nothing to experiment with, so I'm releasing a rough cut of the current state.

    Here it is:

    http://www.buriedaliveinteractive.co...ndre1.2.1a.zip

    Because this isn't what I'd normally release for public consumption, please keep in mind that while it is pretty stable, some of the newest features (Actions, States and advanced animations) have a few quirks and a few capabilities that I've not completed. I also have not had the time to completely update the manual. Here is a list of most of what's new:

    Bug fixes:
    + BUG: Changes to options menu & locales menu only takes affect when the app launches.
    + BUG: Parameters on inherited buttons that come from Page Parameters set don’t exist
    + BUG: Pre-load the animation images
    + BUG: Image hash should not dependent on full URL, only filename
    + BUG: Our rest client object should derive host from the URL
    + BUG: Sprite animations show the sprite’s first frame as full-screen before shrinking to sprite dimensions
    + BUG: Delay when starting sprite animations
    + BUG: Fix a bunch of force-close issues and bad exception handling

    New/changed features:
    + Added custom, programmable button in the system Menu (MenuLink)
    + Added search-launcher Parameter (openSearch)
    + Added page history Parameter (linkPreviousPage)
    + Enabled Wallpaper (live and non) as background
    + Enable full TTF font downloading and referencing
    + Change Settings that use text fields to use hints instead of pre-filled values
    + Add serviceApi Parameter type, rename Settings option as 'default service api'
    + Add serviceUsername/servicePassword Parameters for service calls (not just global username/password)
    + Moved button hilite color to a Parameter (buttonTintColor), remove from global Settings
    + Restructure code in preparation for state-based visual/control elements
    + Added Parameter ‘action’ attribute for determining behavior at each stage of a press (display, touch, heldstart, heldrepeat, release)
    + Added Layout mode indicators by adding check-mark in menu, ‘Layout Mode’ message at the bottom of the screen
    + Added check-mark in 'choose location' to identify which locale is currently selected
    + Add sprite animation handling, display and XML parsing
    + Change Settings to identify the Authentication items for just config and resources
    + Don't allow another refresh to start if a refresh is happening.
    + Change where Repeat Frequency is set
    + Add customizable Alpha, Scale, Rotate and Move animations for Buttons and Pages
    + Removed pre-defined animations in lieu of new animation system
    + Removed displayAnim Parameter as redundant (animation Parameter with action="display" is equivelent)

    Of most interest are the following:

    - Separate out serviceApi, serviceUsername and servicePassword as Parameters so you can call multiple web service APIs.

    - Custom TrueType font support: Load .ttf files from your server and use them for text labels.

    - 'action' attribute on Parameters: this lets you specify what part(s) of a Button press the action pertains to, initial display, very first touch, long press, repeat (when repeatFrequency defined) and release.

    - 'state' attribute on Parameters: this represents user-defined alternate states for Buttons. States currently can be changed by a Button using the 'changeState' Parameter but eventually will also be changeable by web service calls, timers, etc.

    - SpriteAnimations and translational animations (scale, alpha, rotate, position): Buttons can now play cell-based sprite animations as their image. Buttons and Pages benefit from a completely configurable animation engine, replacing the pre-fabricated animations from before


    Most new features are at least minimally documented in the latest manual, but there are definitely gaps and probably some outdated information (the config tutorial/examples at the end of the manual are now totally deprecated for example). The only config included with this version is my real-world testing platform, but it has most new features represented, so it's a good thing to scan through for usage examples.

    If you run into any issues or have any questions on how stuff works, please let me know. I'll visit the thread more often, I promise.

    Luke

  8. #18
    Join Date
    Mar 2007
    Posts
    277

    Default

    Quote Originally Posted by rkirmeier View Post
    *Variables - Set locally with a button push or by girder. Girder send events can contain these variables. Must be able to target a specific Andre as there may be many running at one time.

    *Ability to jump to a Andre page from girder. Also must be able to targer a specific Andre from Girder.

    *Button states - So I can change the graphic based on a value of a variable. Or I might set certain buttons to hide if a variable is a certian value. (i.e. Maybe I hide display type buttons on the page if I have AMP selected.

    Because of these capabilties in NR I only basically need 1 page for each INDEVICE and all ZONES and OUTDEVICES are simply controlled by variables.
    Thanks for the kind words and great suggestions. As it happens the version I've been working on supports some of the functionality you're looking for. The new 'state' attribute for Parameters would let you re-assign a (set of) Button(s) Parameter values by clicking other Buttons (and eventually by reading a web service or other push/pull data update).

    These states can alter all Parameters; the serviceParams so you can alter the web service call variables, and they can change the button graphic/label/etc so you can literally make one button into as many fully distinct states as you need.

    This is still not exactly what you're looking for, since you still need to create the alternative Parameters for each, but you can use logical ButtonGroups and Parameter inheritance to minimize actual config code. Beyond that, I will be implementing bonafide tokenized variables in the configuration too at some point, which will let you push new values into the Parameters from any action/data source, which is more of what I think you'd really like for this application.

    I hadn't actually given thought to the addressable nature of each Andre version running, that's a good point. Having not put a lot of effort into it yet, I had assumed I'd do it just by IP, but explicitly naming each and have a subscribe/listen pattern for two-way data comms is definitely a smarter approach.

  9. #19
    Join Date
    Mar 2007
    Posts
    277

    Default

    Hey Jumbodogs, looking at the security screen, the keypad is very similar to the one I have in the demo config.xml. If you press the # button you'll get to another screen that has the keypad, which you could tighten up the spacing on and use almost verbatim. For your extra two buttons on the left, just align the keypad to the right and then align the two buttons against the left edge of the keypad.

    If you'd like me to take a stab at such a layout, I'd be more than happy to.

    The sliders are something I'm looking at how best to implement. There are some trickery you could do to get some semblence of slider behavior but I think they're all less than ideal. My intention is to add bonafide slider support however.

  10. #20
    Join Date
    May 2008
    Posts
    119

    Default

    For the keypad what I was wondering is how would I send the code to Girder to disarm my alarm? I can create an event in Girder to disarm it by just triggering an event but I would think it would be safer to send the code. I was also thinking maybe just use the keypad buttons to make the disarm button usable. I would still have to use a macro in Girder that turns alarm off but at least if someone did get my phone then would still need code to disarm alarm.

Page 2 of 60 FirstFirst 12341252 ... LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •