Gaia/System/Activities: Difference between revisions

m
mNo edit summary
 
(43 intermediate revisions by 7 users not shown)
Line 1: Line 1:
==Status==
== Design Specs==  
* Stage: Development
For the latest UX specifications, please visit
* Latest:
https://mozilla.box.com/system
* Release target:
 
 
== Team ==
* UX: Patryk
* UX: Josh
* Dev: Vivien
* Dev: Etienne
* B2G: Fabrice
* API: Mounir
 
 


== Background ==
== Background ==
Line 68: Line 56:
The system maintains a record ''(via a central registry in Activities API?)'' of which apps support which Actions & Types, and uses this record to populate the list of available handler apps when the user selects an Action.
The system maintains a record ''(via a central registry in Activities API?)'' of which apps support which Actions & Types, and uses this record to populate the list of available handler apps when the user selects an Action.


== App Interaction Matrix ==
Details of each of the currently implemented activities are here: https://etherpad.mozilla.org/gaia-activities-audit
<div style="overflow-x:scroll">
{| border="1" cellpadding="5" style="font-size:smaller;"
|-
!&nbsp;!! colspan="15" |Handler App
|-
!Initiating App!!Bluetooth!!Browser!!Calendar!!Camera!!Contacts!!Dialer!!Email!!Gallery!!Homescreen!!Music!!PDFjs!!Settings!!SMS!!Video!!Wallpaper
|-
!Bluetooth
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Browser
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| Add to Home <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Calendar
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Camera
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| Browse, Open <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Contacts
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| Dial <!-- Dialer -->
| New <!-- Email -->
| Pick <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| New <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Dialer
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| New <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Email
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| Pick, New <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Gallery
| Share <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| Record <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| Share <!-- Wallpaper -->
|-
!Homescreen
| &nbsp; <!-- Bluetooth -->
| open{{sup|2}} <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Music
| Share <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!PDFJS
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Settings
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!SMS
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| Pick, New <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Video
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Wallpaper
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| Pick-wallpaper <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|}
</div>
# The browser currently handles any activity where activity.source.data.type is 'url' by opening a new tab, but I don't think this activity is initiated by the homescreen itself but at a lower level.


== Requirements ==
== Requirements ==


''Please fill in the following for each app''
=== Browser ===
==== Share Function ====
* 1. Select from list of compatible applications that the link can be shared to:
** Email, Compose message
*** subject line: "[name] shared a link with you"
*** body text: [link name][link url]
** Messaging/SMS
*** Open to New Message screen
*** Open keyboard
*** Add link url to a new blank message
*** Place cursor one space after url
* 2. User sends message or completes sharing operation
* 3. Share operation is completed in background and user is returned to browser
 
==== In browser content mailto: link ====
* 1. User taps email link
* 2. Email, Compose message
** to: [mailto: email address]
* 3. User sends email
* 4. Email send operation is completed in background while user is returned to browser.
 
==== In browser content link pattern ====
* 1. Pattern match website addresses  (ie: www.domain.com)
* 2. User taps link
* 3. Link opens
 
==== In browser content phone number pattern ====
* 1. Pattern matches phone numbers (eg XXX-XXX-XXXX formatted)
* 2. User taps phone number
* 3. Dialer application is opened with phone # added to number field.
 
==== Open .PDF url ====
# User taps a .PDF url (ie: www.domain.com/menu.pdf)
# Open headless PDF.js app
# Pass through url.
# PDF.js loads the content, user interacts with it.
# User taps "Close" button, activity closes, user is returned to origin app
 
 
=== Camera ===
==== Image/Video capture ====
* 1. After Image/Photo is captured, it is automatically inserted into Gallery application.
** Thumbnail of last capture is added to 'filmstrip' of thumbnail images for quick viewing.
* 2. After Video is captured, it is automatically inserted in Video application
** Thumbnail of last video capture is added to 'filmstrip' of thumbnail images for quick viewing.
 
==== Captured image view ====
* 1. User taps on image thumbnail to reveal full sized image from gallery.
 
=== Calendar ===
Calender events with email participants:
 
==== Add Calender Event ====
* 1. User adds new calender event and email participants
* 2. Email event invite request is sent for each email participant in background
 
==== Update, Delete Calender Event ====
* 1. User updates calender event
* 2. Event update is sent for each email participant in background.
 
=== Contacts ===
==== Contact website entry ====
* 1. User taps on website address
* 2. Web browser opens and navigates to address
 
==== Contact phone number entry ====
* 1. User taps phone number
* 2. Dialer opens and immediately dials phone number
 
==== Contact email address entry ====
* 1. User taps email address
* 2. Email app opens to Compose Message view
** "To" field is populated with email address
** Keyboard opens
** Subject field is selected
* 3. User sends email
* 4. Email "Send" operation is completed in background, and user is returned to Contact entry.
 
==== Send SMS/MMS/Message contact ====
* 1. User taps on Send message
* 2. New SMS/MMS/Message
** To: contact phone #
* 3. User sends message
* 4. Send message operation is completed in background, user is returned to Contact entry.
 
=== Send Contact Entry ===
* 1. User Shares contact entry
* 2. Email, Compose Message Opens
** Attachment: contact vcf file
* 3. User sends email
* 4. Email send operation is completed in background, user is returned to Contact entry.
 
=== Dialer ===
==== Add phone number to contact ====
* 1. User taps Add Contact button
* 2. Contacts app opens, to Add Contact view
* 3. User enters contact details
* 4. User cancels or saves contact, activity closes, user is returned to Dialer.
 
=== Email ===
==== Add Email recipient from Contacts ====
* 1. User selects to, cc, bcc recipient field
* 2. Live search or add email address from contacts application
 
==== Read Email Contact ====
* 1. Match any emails in Contacts application
* 2. User taps on contact
* 3. Open entry in Contacts.
 
==== Read Email Content ====
* Should exhibit same behavior as Browser Content
 
==== Open .PDF ====
# User taps a .PDF attachment (ie: www.domain.com/menu.pdf)
# Open headless PDF.js app
# Pass through PDF attachment.
# PDF.js loads the PDF, user interacts with it.
# User taps "Close" button, activity closes, user is returned to origin app
 
 
=== Gallery ===
==== Share item ====
* 1. User selects gallery item to share
* 2. Select from list of compatible applications that the item can be shared to:
** Email, Compose message
*** subject line: "[name] Is sharing a [item type] with you"
*** attachment: [gallery item]
** Messaging/MMS
*** Include [gallery item]
* 2. User sends message or completes sharing operation
* 3. Share operation is completed in background and user is returned to browser
 
=== Music ===
=== SMS/MMS ===
* Add recipient same as Email
* Message content same as Browser content
 
==== Take photo for MMS message ====
* 1. User selects Take Photo for new message
* 2. Camera application opens
* 3. User takes photo
* 4. Camera Modal dialogue
Use this photo
Retake | Continue
* 5. User is returned to new message with photo inserted into message contents.


==== Browser ====
==== Save Picture from MMS message ====
==== Camera ====
* 1. User Press and hold message image and selects 'Save Image
==== Calendar ====
* 2. Image is saved to Gallery in background
==== Contacts ====
* 3. User continues in Conversation view.
==== Dialer ====
==== Email ====
==== Gallery ====
==== Music ====
==== SMS/MMS ====
==== Video ====


==Design Spec==
==== Open .PDF url (may be for v2) ====
# User taps a .PDF url (ie: www.domain.com/menu.pdf)
# Open headless PDF.js app
# Pass through url.
# PDF.js loads the content, user interacts with it.
# User taps "Close" button, activity closes, user is returned to origin app


Interaction Design Spec (Draft): https://www.dropbox.com/s/ohrypdms37tfa69/Activities.pdf
=== Video ===
=== Settings ===
* Background / Lock screen image picker -- opens photo gallery
Confirmed users
208

edits