LiveFolders as feeds
● Dataflows (uniformly typed data streams with
timestamps attached to items)
● Often come with “action” part in data items that
refer to larger data (e.g. links to web pages)
● Dataflow programming patterns can be applied
● Combining a stream of data from other streams
● Switching between multiple streams based on the
latest value of another stream
● Dynamic folder manager by the Launcher
● LiveFolders are
● Discoverable (by a special intent-based protocol)
● Provides uniform data so that a single client can be
used to browse them (part of the Launcher)
● Dynamic data (the source of the live folder must
implement a content provider)
● Data may have “action” part (Intent that is fired
when the item is “activated” (e.g. clicked upon)
● Client broadcasts ACTION_CREATE_LIVE_FOLDER
● LiveFolder data source has an Activity that listens to
intents with this action
● When ACTION_CREATE_LIVE_FOLDER intent is
received, this Activity returns an Intent that describes the
● ContentProvider URI
● List mode (list or icon grid)
● Base intent (used to form the Intent that is fired when the
item is activated)
● The outcome of the discovery phase is that the
client has the URI of the LiveFolder
ContentProvider and the way to present the
● LiveFolder ContentProviders are simple things,
they just return _ID and NAME columns.
● The client (Launcher) presents the result in icon
grid or list format
LiveFolders as feeds
● LiveFolders are very much like feeds because
● They are discoverable
● They provide uniform data formats (string)
● Action (firing Intent) can also be associated to a
● Big difference: no timestamp for LiveFolder items
although timestamp can be implied (e.g. items with
larger _ID are later).
● What if we applied feed aggregation to
● An aggregator application would access certain
LiveFolders and would create one or more new
LiveFolder by combining these LiveFolders.
● Tool set (e.g. standard aggregation operations)
and representation of context values (location,
sensor values, time, etc.) could be provided as
What has been done?
● Not much (a prototype:
● This prototype combines two feeds (all contacts and starred
contacts) into a third one (non-starred contacts).
● Acts as both LiveFolder client (when accessing the source
LiveFolders) and LiveFolder source (when producing the resulting
● Not very useful, not efficient, not easy to understand either.
● Need to turn into an easy-to-use component set.
● Potential: easy mix-and-match of applications like mashups on