The Moseycode application can be invoked from Android applications for the purpose of reading barcodes. Execution is temporarily ceded to Moseycode (by launching a sub-activity with a particular intent) for a user to scan a barcode at which point control is returned to the originating application along with information about the barcode(s) scanned. By design, the Moseycode user interface is completely uncluttered and should 'gel' with any style of application.
The application also attempts to launch an activity (using intents documented here) each time a user activates a barcode. This allows other applications to be launched automatically in response to particular barcodes. An intent is also broadcast each time a user activates a barcode from the Moseycode application; applications can use this to conduct background tasks too.
There is one action that can be used to invoke Moseycode as a sub activity:
Behaviour of the Moseycode activity is customized via the data URI and extras bundle.
The data URI of the intent specifies the source of the image(s) to be scanned for barcodes. At present four schemes are supported:
. The image format used must be one supported by the Android platform.
Bitmapthat has been stored as a property of the intent's extras bundle. For example, for the URI
property://photoMoseycode will obtain the image data via
. Note: Subject to future feedback on performance and memory usage, this scheme may be removed.
camera://0refers to the primary camera on the device. Since the Android platform does not currently support multiple camera devices, this is the only valid URI.
file://) are not currently supported, support has been deferred until anticipated changes to the operation of the Android file system have been published.
Note that for any of the above schemes, a data type must be specified so that
the intent will match the Moseycode
IntentFilter. In the case of
content schemes, the image mime type
should be used (eg.
image/* should be used.
In the case of moving images (ie. from a camera) the Moseycode activity will not finish until a barcode has been resolved (or the user cancels the activity by pressing the back button). For still images the activity will will finish if no barcode is located immediately.
The Moseycode activity can be further customized by supplying extra parameters to the Intent used to launch it.
"MOSEYCODE". Supplying an empty string indicates that no formats should be considered. Not supplying a value indicates that all formats should be considered.
If the Moseycode activity doesn't fail (in the context of the Activity system).
The results of the barcode scan will be communicated in the extras bundle passed to
The bundle will contain a property named
which contains an array of
android.os.Bundle objects, one for each barcode identified.
If no barcodes were found, the array will be empty. The order in which barcodes are
reported is undefined.
The properties of each
Bundle provide information relating to a particular barcode.
The following properties are supplied:
"DATA"; provided as a convenience.
Uri, may be null if no such representation is possible. This property is only available if the return type is either
Uri, may be null if no such representation is possible. This property is only available if the return type is
For some information about how to interpret the portal numbers see the Moseycode Encoding documentation. Of course, your application is free to interpret the data in any way that it wants.
As a convenience, the properties for the first listed barcode are applied to the intent's extras bundle directly. This makes it more straightforward to access the properties of a single scanned barcode.
The following action is used by the Moseycode application to launch an activity at the time a user activates a barcode.
If an intent filter of an external activity matches the intent, then the foreign application is assumed to be handling the activation and the Moseycode application will take no further actions; otherwise the default action is taken.
The data URI for the intent will be derived from the barcode data and may be null.
Example schemes include
http for barcoded links,
tel for barcoded contact details.
The intent will host all of the extra properties that could be expected on
a bundle that stores information about a single barcode (see above) with the
exception of the
com.tomgibara.intent.barcodeUri which provides
the intent's data.
The following action is broadcast by the Moseycode application after a user has activated a barcode.
All of the data and extras associated with this action are identical
to those for the
A fully documented sample Android application that demonstrates how to use Moseycode in your own applications is provided with this release. See the release page for links to download the demo application and its source code.