com.googlecode.android_scripting.facade
Class EventFacade

java.lang.Object
  extended by com.googlecode.android_scripting.jsonrpc.RpcReceiver
      extended by com.googlecode.android_scripting.facade.EventFacade

public class EventFacade
extends RpcReceiver

Manage the event queue.

Usage Notes:
EventFacade APIs interact with the Event Queue (a data buffer containing up to 1024 event entries).
Events are automatically entered into the Event Queue following API calls such as startSensing() and startLocating().
The Event Facade provides control over how events are entered into (and removed from) the Event Queue.
The Event Queue provides a useful means of recording background events (such as sensor data) when the phone is busy with foreground activities.

Author:
Felix Arends (felix.arends@gmail.com)

Nested Class Summary
 class EventFacade.BroadcastListener
           
static interface EventFacade.EventObserver
           
 
Constructor Summary
EventFacade(FacadeManager manager)
           
 
Method Summary
 void addGlobalEventObserver(EventFacade.EventObserver observer)
           
 void addNamedEventObserver(java.lang.String eventName, EventFacade.EventObserver observer)
           
 void eventClearBuffer()
          Example (python): droid.eventClearBuffer()
 java.util.Set<java.lang.String> eventGetBrodcastCategories()
           
 java.util.List<Event> eventPoll(java.lang.Integer number_of_events)
          Actual data returned in the map will depend on the type of event.
 void eventPost(java.lang.String name, java.lang.String data, java.lang.Boolean enqueue)
           Example: import android from datetime import datetime droid = android.Android() t = datetime.now() droid.eventPost('Some Event', t)
 boolean eventRegisterForBroadcast(java.lang.String category, java.lang.Boolean enqueue)
          Registers a listener for a new broadcast signal
 void eventUnregisterForBroadcast(java.lang.String category)
           
 Event eventWait(java.lang.Integer timeout)
           
 Event eventWaitFor(java.lang.String eventName, java.lang.Integer timeout)
           
 void postEvent(java.lang.String name, java.lang.Object data)
          Post an event and queue it
 void postEvent(java.lang.String name, java.lang.Object data, boolean enqueue)
          Posts an event with to the event queue.
 Event receiveEvent()
           
 void removeEventObserver(EventFacade.EventObserver observer)
           
 void rpcPostEvent(java.lang.String name, java.lang.String data)
           
 void shutdown()
          Invoked when the receiver is shut down.
 int startEventDispatcher(java.lang.Integer port)
           
 void stopEventDispatcher()
           
 Event waitForEvent(java.lang.String eventName, java.lang.Integer timeout)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EventFacade

public EventFacade(FacadeManager manager)
Method Detail

eventClearBuffer

@Rpc(description="Clears all events from the event buffer.")
public void eventClearBuffer()
Example (python): droid.eventClearBuffer()


eventRegisterForBroadcast

@Rpc(description="Registers a listener for a new broadcast signal")
public boolean eventRegisterForBroadcast(@RpcParameter(name="category")
                                                        java.lang.String category,
                                                        @RpcParameter(name="enqueue",description="Should this events be added to the event queue or only dispatched")@RpcDefault(value="true")
                                                        java.lang.Boolean enqueue)
Registers a listener for a new broadcast signal


eventUnregisterForBroadcast

@Rpc(description="Stop listening for a broadcast signal")
public void eventUnregisterForBroadcast(@RpcParameter(name="category")
                                                       java.lang.String category)

eventGetBrodcastCategories

@Rpc(description="Lists all the broadcast signals we are listening for")
public java.util.Set<java.lang.String> eventGetBrodcastCategories()

eventPoll

@Rpc(description="Returns and removes the oldest n events (i.e. location or sensor update, etc.) from the event buffer.",
     returns="A List of Maps of event properties.")
public java.util.List<Event> eventPoll(@RpcParameter(name="number_of_events")@RpcDefault(value="1")
                                                             java.lang.Integer number_of_events)
Actual data returned in the map will depend on the type of event.
 Example (python):
     import android, time
     droid = android.Android()
     droid.startSensing()
     time.sleep(1)
     droid.eventClearBuffer()
     time.sleep(1)
     e = eventPoll(1).result
     event_entry_number = 0
     x = e[event_entry_ number]['data']['xforce']
 
e has the format:
[{u'data': {u'accuracy': 0, u'pitch': -0.48766891956329345, u'xmag': -5.6875, u'azimuth': 0.3312483489513397, u'zforce': 8.3492730000000002, u'yforce': 4.5628165999999997, u'time': 1297072704.813, u'ymag': -11.125, u'zmag': -42.375, u'roll': -0.059393649548292161, u'xforce': 0.42223078000000003}, u'name': u'sensors', u'time': 1297072704813000L}]
x has the string value of the x force data (0.42223078000000003) at the time of the event entry.


eventWaitFor

@Rpc(description="Blocks until an event with the supplied name occurs. The returned event is not removed from the buffer.",
     returns="Map of event properties.")
public Event eventWaitFor(@RpcParameter(name="eventName")
                                                java.lang.String eventName,
                                                @RpcParameter(name="timeout",description="the maximum time to wait (in ms)")@RpcOptional
                                                java.lang.Integer timeout)
                   throws java.lang.InterruptedException
Throws:
java.lang.InterruptedException

eventWait

@Rpc(description="Blocks until an event occurs. The returned event is removed from the buffer.",
     returns="Map of event properties.")
public Event eventWait(@RpcParameter(name="timeout",description="the maximum time to wait")@RpcOptional
                                             java.lang.Integer timeout)
                throws java.lang.InterruptedException
Throws:
java.lang.InterruptedException

eventPost

@Rpc(description="Post an event to the event queue.")
public void eventPost(@RpcParameter(name="name",description="Name of event")
                                     java.lang.String name,
                                     @RpcParameter(name="data",description="Data contained in event.")
                                     java.lang.String data,
                                     @RpcParameter(name="enqueue",description="Set to False if you don\'t want your events to be added to the event queue, just dispatched.")@RpcOptional@RpcDefault(value="false")
                                     java.lang.Boolean enqueue)
 Example:
   import android
   from datetime import datetime
   droid = android.Android()
   t = datetime.now()
   droid.eventPost('Some Event', t)
 


postEvent

public void postEvent(java.lang.String name,
                      java.lang.Object data)
Post an event and queue it


postEvent

public void postEvent(java.lang.String name,
                      java.lang.Object data,
                      boolean enqueue)
Posts an event with to the event queue.


rpcPostEvent

@RpcDeprecated(value="eventPost",
               release="r4")
@Rpc(description="Post an event to the event queue.")
@RpcName(name="postEvent")
public void rpcPostEvent(@RpcParameter(name="name")
                                                                              java.lang.String name,
                                                                              @RpcParameter(name="data")
                                                                              java.lang.String data)

receiveEvent

@RpcDeprecated(value="eventPoll",
               release="r4")
@Rpc(description="Returns and removes the oldest event (i.e. location or sensor update, etc.) from the event buffer.",
     returns="Map of event properties.")
public Event receiveEvent()

waitForEvent

@RpcDeprecated(value="eventWaitFor",
               release="r4")
@Rpc(description="Blocks until an event with the supplied name occurs. The returned event is not removed from the buffer.",
     returns="Map of event properties.")
public Event waitForEvent(@RpcParameter(name="eventName")
                                                                          java.lang.String eventName,
                                                                          @RpcParameter(name="timeout",description="the maximum time to wait")@RpcOptional
                                                                          java.lang.Integer timeout)
                   throws java.lang.InterruptedException
Throws:
java.lang.InterruptedException

startEventDispatcher

@Rpc(description="Opens up a socket where you can read for events posted")
public int startEventDispatcher(@RpcParameter(name="port",description="Port to use")@RpcDefault(value="0")@RpcOptional
                                               java.lang.Integer port)

stopEventDispatcher

@Rpc(description="Stops the event server, you can\'t read in the port anymore")
public void stopEventDispatcher()
                         throws java.lang.RuntimeException
Throws:
java.lang.RuntimeException

shutdown

public void shutdown()
Description copied from class: RpcReceiver
Invoked when the receiver is shut down.

Specified by:
shutdown in class RpcReceiver

addNamedEventObserver

public void addNamedEventObserver(java.lang.String eventName,
                                  EventFacade.EventObserver observer)

addGlobalEventObserver

public void addGlobalEventObserver(EventFacade.EventObserver observer)

removeEventObserver

public void removeEventObserver(EventFacade.EventObserver observer)