(aff301) fire phone: the dynamic perspective api, under the hood | aws re:invent 2014

48
November 13, 2014 | Las Vegas, NV AFF301 Fire Phone: The Dynamic Perspective API Under the Hood Peter Heinrich, Amazon Appstore Bilgem Cakir, Fire Phone Development Team

Upload: amazon-web-services

Post on 30-Jun-2015

950 views

Category:

Technology


0 download

DESCRIPTION

Fire phone's Dynamic Perspective adds a whole new dimension to UI and customer interaction, combining dedicated hardware and advanced algorithms to enable real-time head-tracking and 3D effects. This session goes behind the scenes with the Dynamic Perspective team, diving into the unique technical challenges they faced during development. Afterward, we explore the Dynamic Perspective SDK together so you leave the session knowing how to add innovative features like Peek, Tilt, 3D controls, and Parallax to your own apps.

TRANSCRIPT

Page 1: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

November 13 2014 | Las Vegas NV

AFF301

Fire Phone The Dynamic Perspective API

Under the Hood

Peter Heinrich Amazon Appstore

Bilgem Cakir Fire Phone Development Team

Jhaymesisviphotography

Wikimedia commons

Wikimedia commons

Materials Lighting Shadows Animations

lt-- Manifest file syntax for Euclid themes --gt

ltapplication androidtheme=ldquoeuclidstyleThemeEuclidLight

ltapplication androidtheme=ldquoeuclidstyleThemeEuclidDark

lt-- Wrapping a control in ZContainer + ZShadowReceiver --gt

ltxml version=10 encoding=utf-8gt

ltcomamazoneuclidwidgetZShadowReceiver

xmlnsandroid=httpschemasandroidcomapkresandroid

xmlnsamazon=httpschemasandroidcomapkresamazon

xmlnseuclid=httpschemasandroidcomapkreseuclid

androidlayout_width=match_parent

androidlayout_height=match_parentgt

ltLinearLayout androidlayout_width=match_parent

androidlayout_height=match_parent androidpaddingTop=50dp

androidorientation=verticalgt

ltcomamazoneuclidwidgetZContainer

androidlayout_width=match_parent

androidlayout_height=wrap_content

euclidautoPadding=truegt

ltcomamazoneuclidwidgetZButton

androidid=+iddummy_button1

androidlayout_width=200dp androidlayout_height=wrap_content

androidpaddingBottom=25dp androidonClick=onButtonClicked

androidtext=stringdummy_button1

euclidlayout_depth=wrap_content gt

ltcomamazoneuclidwidgetZContainergt

Setting up an event listener

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingManagerregisterListener(thisActivity)

public void onHeadTrackingEvent(HeadTrackingEvent event)

Extract head tracking data

final float x_coor = eventx_mm

final float y_coor = eventy_mm

final float z_coor = eventz_mm

final boolean face = eventisFaceDetected

final boolean tracking = eventisTracking

Polling for data

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingPoller = mHeadTrackingManagerregisterPoller()

mHeadTrackingEvent = HeadTrackingEventobtain()

mHeadTrackingPollersample(mHeadTrackingEvent)

mXCoorsetText(getString(Rstringxcoor mHeadTrackingEventx_mm))

mYCoorsetText(getString(Rstringycoor mHeadTrackingEventy_mm))

mZCoorsetText(getString(Rstringzcoor mHeadTrackingEventz_mm))

mFaceDetectedsetText(getString(Rstringfacedetected) +

mHeadTrackingEventisFaceDetected)

mHeadTrackingsetText(getString(Rstringheadtracking) +

mHeadTrackingEventisTracking)

Register for GestureEvent (Tilt)

mGestureManager = GestureManagercreateInstance(thisActivity)

mTiltGesture = GesturegetGestureFromId(GestureTILT)

Override

public void onGestureEvent(GestureEvent event)

Move drawer down if it is not already down

if (mDrawerDown)

final TranslateAnimation translate = new TranslateAnimation(0 0 -mDropDownDrawergetHeight() 0)

translatesetDuration(ANIMATE_DURATION)

translatesetFillAfter(true)

mDropDownDrawerstartAnimation(translate)

mDrawerDown = true

Adding auto scrolling to a ListView

private TiltScrollController mTiltScrollController

Override

public void onCreate(Bundle savedInstanceState)

superonCreate(savedInstanceState)

setContentView(Rlayoutmain)

Create an instance of TiltScrollController

mTiltScrollController = new TiltScrollController(this)

Set up ListView and ListAdapter

ListltStringgt cities = readCities()

ListAdapter adapter = new ArrayAdapterltStringgt(this Rlayoutcity_layout Ridcity_name cities)

ListView cityListView = (ListView) findViewById(Ridcity_listview)

cityListViewsetAdapter(adapter)

Attach the ViewGroup and ListView to the TiltScrollController

ViewGroup containerView = (ViewGroup) findViewById(Ridcontainer)

mTiltScrollControllerattach(containerView cityListView)

Add a TouchEventTrigger to the TiltScrollController

This trigger disables tilt scrolling when the view is in a touch event

mTiltScrollControlleraddScrollStateTrigger(new TouchEventTrigger(cityListView))

Add a PanelVisibleTrigger to the TiltScrollController

Disable tilt scrolling when the Center panel is not the currently visible top panel

SidePanelLayout sidePanelLayout = (SidePanelLayout) findViewById(Ridsidepanellayout)

mTiltScrollControlleraddScrollStateTrigger(new PanelVisibleTrigger(sidePanelLayout

PanelVisibleTriggerPanelCenter))

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 2: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

Jhaymesisviphotography

Wikimedia commons

Wikimedia commons

Materials Lighting Shadows Animations

lt-- Manifest file syntax for Euclid themes --gt

ltapplication androidtheme=ldquoeuclidstyleThemeEuclidLight

ltapplication androidtheme=ldquoeuclidstyleThemeEuclidDark

lt-- Wrapping a control in ZContainer + ZShadowReceiver --gt

ltxml version=10 encoding=utf-8gt

ltcomamazoneuclidwidgetZShadowReceiver

xmlnsandroid=httpschemasandroidcomapkresandroid

xmlnsamazon=httpschemasandroidcomapkresamazon

xmlnseuclid=httpschemasandroidcomapkreseuclid

androidlayout_width=match_parent

androidlayout_height=match_parentgt

ltLinearLayout androidlayout_width=match_parent

androidlayout_height=match_parent androidpaddingTop=50dp

androidorientation=verticalgt

ltcomamazoneuclidwidgetZContainer

androidlayout_width=match_parent

androidlayout_height=wrap_content

euclidautoPadding=truegt

ltcomamazoneuclidwidgetZButton

androidid=+iddummy_button1

androidlayout_width=200dp androidlayout_height=wrap_content

androidpaddingBottom=25dp androidonClick=onButtonClicked

androidtext=stringdummy_button1

euclidlayout_depth=wrap_content gt

ltcomamazoneuclidwidgetZContainergt

Setting up an event listener

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingManagerregisterListener(thisActivity)

public void onHeadTrackingEvent(HeadTrackingEvent event)

Extract head tracking data

final float x_coor = eventx_mm

final float y_coor = eventy_mm

final float z_coor = eventz_mm

final boolean face = eventisFaceDetected

final boolean tracking = eventisTracking

Polling for data

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingPoller = mHeadTrackingManagerregisterPoller()

mHeadTrackingEvent = HeadTrackingEventobtain()

mHeadTrackingPollersample(mHeadTrackingEvent)

mXCoorsetText(getString(Rstringxcoor mHeadTrackingEventx_mm))

mYCoorsetText(getString(Rstringycoor mHeadTrackingEventy_mm))

mZCoorsetText(getString(Rstringzcoor mHeadTrackingEventz_mm))

mFaceDetectedsetText(getString(Rstringfacedetected) +

mHeadTrackingEventisFaceDetected)

mHeadTrackingsetText(getString(Rstringheadtracking) +

mHeadTrackingEventisTracking)

Register for GestureEvent (Tilt)

mGestureManager = GestureManagercreateInstance(thisActivity)

mTiltGesture = GesturegetGestureFromId(GestureTILT)

Override

public void onGestureEvent(GestureEvent event)

Move drawer down if it is not already down

if (mDrawerDown)

final TranslateAnimation translate = new TranslateAnimation(0 0 -mDropDownDrawergetHeight() 0)

translatesetDuration(ANIMATE_DURATION)

translatesetFillAfter(true)

mDropDownDrawerstartAnimation(translate)

mDrawerDown = true

Adding auto scrolling to a ListView

private TiltScrollController mTiltScrollController

Override

public void onCreate(Bundle savedInstanceState)

superonCreate(savedInstanceState)

setContentView(Rlayoutmain)

Create an instance of TiltScrollController

mTiltScrollController = new TiltScrollController(this)

Set up ListView and ListAdapter

ListltStringgt cities = readCities()

ListAdapter adapter = new ArrayAdapterltStringgt(this Rlayoutcity_layout Ridcity_name cities)

ListView cityListView = (ListView) findViewById(Ridcity_listview)

cityListViewsetAdapter(adapter)

Attach the ViewGroup and ListView to the TiltScrollController

ViewGroup containerView = (ViewGroup) findViewById(Ridcontainer)

mTiltScrollControllerattach(containerView cityListView)

Add a TouchEventTrigger to the TiltScrollController

This trigger disables tilt scrolling when the view is in a touch event

mTiltScrollControlleraddScrollStateTrigger(new TouchEventTrigger(cityListView))

Add a PanelVisibleTrigger to the TiltScrollController

Disable tilt scrolling when the Center panel is not the currently visible top panel

SidePanelLayout sidePanelLayout = (SidePanelLayout) findViewById(Ridsidepanellayout)

mTiltScrollControlleraddScrollStateTrigger(new PanelVisibleTrigger(sidePanelLayout

PanelVisibleTriggerPanelCenter))

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 3: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

Materials Lighting Shadows Animations

lt-- Manifest file syntax for Euclid themes --gt

ltapplication androidtheme=ldquoeuclidstyleThemeEuclidLight

ltapplication androidtheme=ldquoeuclidstyleThemeEuclidDark

lt-- Wrapping a control in ZContainer + ZShadowReceiver --gt

ltxml version=10 encoding=utf-8gt

ltcomamazoneuclidwidgetZShadowReceiver

xmlnsandroid=httpschemasandroidcomapkresandroid

xmlnsamazon=httpschemasandroidcomapkresamazon

xmlnseuclid=httpschemasandroidcomapkreseuclid

androidlayout_width=match_parent

androidlayout_height=match_parentgt

ltLinearLayout androidlayout_width=match_parent

androidlayout_height=match_parent androidpaddingTop=50dp

androidorientation=verticalgt

ltcomamazoneuclidwidgetZContainer

androidlayout_width=match_parent

androidlayout_height=wrap_content

euclidautoPadding=truegt

ltcomamazoneuclidwidgetZButton

androidid=+iddummy_button1

androidlayout_width=200dp androidlayout_height=wrap_content

androidpaddingBottom=25dp androidonClick=onButtonClicked

androidtext=stringdummy_button1

euclidlayout_depth=wrap_content gt

ltcomamazoneuclidwidgetZContainergt

Setting up an event listener

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingManagerregisterListener(thisActivity)

public void onHeadTrackingEvent(HeadTrackingEvent event)

Extract head tracking data

final float x_coor = eventx_mm

final float y_coor = eventy_mm

final float z_coor = eventz_mm

final boolean face = eventisFaceDetected

final boolean tracking = eventisTracking

Polling for data

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingPoller = mHeadTrackingManagerregisterPoller()

mHeadTrackingEvent = HeadTrackingEventobtain()

mHeadTrackingPollersample(mHeadTrackingEvent)

mXCoorsetText(getString(Rstringxcoor mHeadTrackingEventx_mm))

mYCoorsetText(getString(Rstringycoor mHeadTrackingEventy_mm))

mZCoorsetText(getString(Rstringzcoor mHeadTrackingEventz_mm))

mFaceDetectedsetText(getString(Rstringfacedetected) +

mHeadTrackingEventisFaceDetected)

mHeadTrackingsetText(getString(Rstringheadtracking) +

mHeadTrackingEventisTracking)

Register for GestureEvent (Tilt)

mGestureManager = GestureManagercreateInstance(thisActivity)

mTiltGesture = GesturegetGestureFromId(GestureTILT)

Override

public void onGestureEvent(GestureEvent event)

Move drawer down if it is not already down

if (mDrawerDown)

final TranslateAnimation translate = new TranslateAnimation(0 0 -mDropDownDrawergetHeight() 0)

translatesetDuration(ANIMATE_DURATION)

translatesetFillAfter(true)

mDropDownDrawerstartAnimation(translate)

mDrawerDown = true

Adding auto scrolling to a ListView

private TiltScrollController mTiltScrollController

Override

public void onCreate(Bundle savedInstanceState)

superonCreate(savedInstanceState)

setContentView(Rlayoutmain)

Create an instance of TiltScrollController

mTiltScrollController = new TiltScrollController(this)

Set up ListView and ListAdapter

ListltStringgt cities = readCities()

ListAdapter adapter = new ArrayAdapterltStringgt(this Rlayoutcity_layout Ridcity_name cities)

ListView cityListView = (ListView) findViewById(Ridcity_listview)

cityListViewsetAdapter(adapter)

Attach the ViewGroup and ListView to the TiltScrollController

ViewGroup containerView = (ViewGroup) findViewById(Ridcontainer)

mTiltScrollControllerattach(containerView cityListView)

Add a TouchEventTrigger to the TiltScrollController

This trigger disables tilt scrolling when the view is in a touch event

mTiltScrollControlleraddScrollStateTrigger(new TouchEventTrigger(cityListView))

Add a PanelVisibleTrigger to the TiltScrollController

Disable tilt scrolling when the Center panel is not the currently visible top panel

SidePanelLayout sidePanelLayout = (SidePanelLayout) findViewById(Ridsidepanellayout)

mTiltScrollControlleraddScrollStateTrigger(new PanelVisibleTrigger(sidePanelLayout

PanelVisibleTriggerPanelCenter))

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 4: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

lt-- Manifest file syntax for Euclid themes --gt

ltapplication androidtheme=ldquoeuclidstyleThemeEuclidLight

ltapplication androidtheme=ldquoeuclidstyleThemeEuclidDark

lt-- Wrapping a control in ZContainer + ZShadowReceiver --gt

ltxml version=10 encoding=utf-8gt

ltcomamazoneuclidwidgetZShadowReceiver

xmlnsandroid=httpschemasandroidcomapkresandroid

xmlnsamazon=httpschemasandroidcomapkresamazon

xmlnseuclid=httpschemasandroidcomapkreseuclid

androidlayout_width=match_parent

androidlayout_height=match_parentgt

ltLinearLayout androidlayout_width=match_parent

androidlayout_height=match_parent androidpaddingTop=50dp

androidorientation=verticalgt

ltcomamazoneuclidwidgetZContainer

androidlayout_width=match_parent

androidlayout_height=wrap_content

euclidautoPadding=truegt

ltcomamazoneuclidwidgetZButton

androidid=+iddummy_button1

androidlayout_width=200dp androidlayout_height=wrap_content

androidpaddingBottom=25dp androidonClick=onButtonClicked

androidtext=stringdummy_button1

euclidlayout_depth=wrap_content gt

ltcomamazoneuclidwidgetZContainergt

Setting up an event listener

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingManagerregisterListener(thisActivity)

public void onHeadTrackingEvent(HeadTrackingEvent event)

Extract head tracking data

final float x_coor = eventx_mm

final float y_coor = eventy_mm

final float z_coor = eventz_mm

final boolean face = eventisFaceDetected

final boolean tracking = eventisTracking

Polling for data

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingPoller = mHeadTrackingManagerregisterPoller()

mHeadTrackingEvent = HeadTrackingEventobtain()

mHeadTrackingPollersample(mHeadTrackingEvent)

mXCoorsetText(getString(Rstringxcoor mHeadTrackingEventx_mm))

mYCoorsetText(getString(Rstringycoor mHeadTrackingEventy_mm))

mZCoorsetText(getString(Rstringzcoor mHeadTrackingEventz_mm))

mFaceDetectedsetText(getString(Rstringfacedetected) +

mHeadTrackingEventisFaceDetected)

mHeadTrackingsetText(getString(Rstringheadtracking) +

mHeadTrackingEventisTracking)

Register for GestureEvent (Tilt)

mGestureManager = GestureManagercreateInstance(thisActivity)

mTiltGesture = GesturegetGestureFromId(GestureTILT)

Override

public void onGestureEvent(GestureEvent event)

Move drawer down if it is not already down

if (mDrawerDown)

final TranslateAnimation translate = new TranslateAnimation(0 0 -mDropDownDrawergetHeight() 0)

translatesetDuration(ANIMATE_DURATION)

translatesetFillAfter(true)

mDropDownDrawerstartAnimation(translate)

mDrawerDown = true

Adding auto scrolling to a ListView

private TiltScrollController mTiltScrollController

Override

public void onCreate(Bundle savedInstanceState)

superonCreate(savedInstanceState)

setContentView(Rlayoutmain)

Create an instance of TiltScrollController

mTiltScrollController = new TiltScrollController(this)

Set up ListView and ListAdapter

ListltStringgt cities = readCities()

ListAdapter adapter = new ArrayAdapterltStringgt(this Rlayoutcity_layout Ridcity_name cities)

ListView cityListView = (ListView) findViewById(Ridcity_listview)

cityListViewsetAdapter(adapter)

Attach the ViewGroup and ListView to the TiltScrollController

ViewGroup containerView = (ViewGroup) findViewById(Ridcontainer)

mTiltScrollControllerattach(containerView cityListView)

Add a TouchEventTrigger to the TiltScrollController

This trigger disables tilt scrolling when the view is in a touch event

mTiltScrollControlleraddScrollStateTrigger(new TouchEventTrigger(cityListView))

Add a PanelVisibleTrigger to the TiltScrollController

Disable tilt scrolling when the Center panel is not the currently visible top panel

SidePanelLayout sidePanelLayout = (SidePanelLayout) findViewById(Ridsidepanellayout)

mTiltScrollControlleraddScrollStateTrigger(new PanelVisibleTrigger(sidePanelLayout

PanelVisibleTriggerPanelCenter))

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 5: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

lt-- Wrapping a control in ZContainer + ZShadowReceiver --gt

ltxml version=10 encoding=utf-8gt

ltcomamazoneuclidwidgetZShadowReceiver

xmlnsandroid=httpschemasandroidcomapkresandroid

xmlnsamazon=httpschemasandroidcomapkresamazon

xmlnseuclid=httpschemasandroidcomapkreseuclid

androidlayout_width=match_parent

androidlayout_height=match_parentgt

ltLinearLayout androidlayout_width=match_parent

androidlayout_height=match_parent androidpaddingTop=50dp

androidorientation=verticalgt

ltcomamazoneuclidwidgetZContainer

androidlayout_width=match_parent

androidlayout_height=wrap_content

euclidautoPadding=truegt

ltcomamazoneuclidwidgetZButton

androidid=+iddummy_button1

androidlayout_width=200dp androidlayout_height=wrap_content

androidpaddingBottom=25dp androidonClick=onButtonClicked

androidtext=stringdummy_button1

euclidlayout_depth=wrap_content gt

ltcomamazoneuclidwidgetZContainergt

Setting up an event listener

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingManagerregisterListener(thisActivity)

public void onHeadTrackingEvent(HeadTrackingEvent event)

Extract head tracking data

final float x_coor = eventx_mm

final float y_coor = eventy_mm

final float z_coor = eventz_mm

final boolean face = eventisFaceDetected

final boolean tracking = eventisTracking

Polling for data

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingPoller = mHeadTrackingManagerregisterPoller()

mHeadTrackingEvent = HeadTrackingEventobtain()

mHeadTrackingPollersample(mHeadTrackingEvent)

mXCoorsetText(getString(Rstringxcoor mHeadTrackingEventx_mm))

mYCoorsetText(getString(Rstringycoor mHeadTrackingEventy_mm))

mZCoorsetText(getString(Rstringzcoor mHeadTrackingEventz_mm))

mFaceDetectedsetText(getString(Rstringfacedetected) +

mHeadTrackingEventisFaceDetected)

mHeadTrackingsetText(getString(Rstringheadtracking) +

mHeadTrackingEventisTracking)

Register for GestureEvent (Tilt)

mGestureManager = GestureManagercreateInstance(thisActivity)

mTiltGesture = GesturegetGestureFromId(GestureTILT)

Override

public void onGestureEvent(GestureEvent event)

Move drawer down if it is not already down

if (mDrawerDown)

final TranslateAnimation translate = new TranslateAnimation(0 0 -mDropDownDrawergetHeight() 0)

translatesetDuration(ANIMATE_DURATION)

translatesetFillAfter(true)

mDropDownDrawerstartAnimation(translate)

mDrawerDown = true

Adding auto scrolling to a ListView

private TiltScrollController mTiltScrollController

Override

public void onCreate(Bundle savedInstanceState)

superonCreate(savedInstanceState)

setContentView(Rlayoutmain)

Create an instance of TiltScrollController

mTiltScrollController = new TiltScrollController(this)

Set up ListView and ListAdapter

ListltStringgt cities = readCities()

ListAdapter adapter = new ArrayAdapterltStringgt(this Rlayoutcity_layout Ridcity_name cities)

ListView cityListView = (ListView) findViewById(Ridcity_listview)

cityListViewsetAdapter(adapter)

Attach the ViewGroup and ListView to the TiltScrollController

ViewGroup containerView = (ViewGroup) findViewById(Ridcontainer)

mTiltScrollControllerattach(containerView cityListView)

Add a TouchEventTrigger to the TiltScrollController

This trigger disables tilt scrolling when the view is in a touch event

mTiltScrollControlleraddScrollStateTrigger(new TouchEventTrigger(cityListView))

Add a PanelVisibleTrigger to the TiltScrollController

Disable tilt scrolling when the Center panel is not the currently visible top panel

SidePanelLayout sidePanelLayout = (SidePanelLayout) findViewById(Ridsidepanellayout)

mTiltScrollControlleraddScrollStateTrigger(new PanelVisibleTrigger(sidePanelLayout

PanelVisibleTriggerPanelCenter))

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 6: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

Setting up an event listener

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingManagerregisterListener(thisActivity)

public void onHeadTrackingEvent(HeadTrackingEvent event)

Extract head tracking data

final float x_coor = eventx_mm

final float y_coor = eventy_mm

final float z_coor = eventz_mm

final boolean face = eventisFaceDetected

final boolean tracking = eventisTracking

Polling for data

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingPoller = mHeadTrackingManagerregisterPoller()

mHeadTrackingEvent = HeadTrackingEventobtain()

mHeadTrackingPollersample(mHeadTrackingEvent)

mXCoorsetText(getString(Rstringxcoor mHeadTrackingEventx_mm))

mYCoorsetText(getString(Rstringycoor mHeadTrackingEventy_mm))

mZCoorsetText(getString(Rstringzcoor mHeadTrackingEventz_mm))

mFaceDetectedsetText(getString(Rstringfacedetected) +

mHeadTrackingEventisFaceDetected)

mHeadTrackingsetText(getString(Rstringheadtracking) +

mHeadTrackingEventisTracking)

Register for GestureEvent (Tilt)

mGestureManager = GestureManagercreateInstance(thisActivity)

mTiltGesture = GesturegetGestureFromId(GestureTILT)

Override

public void onGestureEvent(GestureEvent event)

Move drawer down if it is not already down

if (mDrawerDown)

final TranslateAnimation translate = new TranslateAnimation(0 0 -mDropDownDrawergetHeight() 0)

translatesetDuration(ANIMATE_DURATION)

translatesetFillAfter(true)

mDropDownDrawerstartAnimation(translate)

mDrawerDown = true

Adding auto scrolling to a ListView

private TiltScrollController mTiltScrollController

Override

public void onCreate(Bundle savedInstanceState)

superonCreate(savedInstanceState)

setContentView(Rlayoutmain)

Create an instance of TiltScrollController

mTiltScrollController = new TiltScrollController(this)

Set up ListView and ListAdapter

ListltStringgt cities = readCities()

ListAdapter adapter = new ArrayAdapterltStringgt(this Rlayoutcity_layout Ridcity_name cities)

ListView cityListView = (ListView) findViewById(Ridcity_listview)

cityListViewsetAdapter(adapter)

Attach the ViewGroup and ListView to the TiltScrollController

ViewGroup containerView = (ViewGroup) findViewById(Ridcontainer)

mTiltScrollControllerattach(containerView cityListView)

Add a TouchEventTrigger to the TiltScrollController

This trigger disables tilt scrolling when the view is in a touch event

mTiltScrollControlleraddScrollStateTrigger(new TouchEventTrigger(cityListView))

Add a PanelVisibleTrigger to the TiltScrollController

Disable tilt scrolling when the Center panel is not the currently visible top panel

SidePanelLayout sidePanelLayout = (SidePanelLayout) findViewById(Ridsidepanellayout)

mTiltScrollControlleraddScrollStateTrigger(new PanelVisibleTrigger(sidePanelLayout

PanelVisibleTriggerPanelCenter))

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 7: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

Polling for data

mHeadTrackingManager = HeadTrackingManagercreateInstance(thisActivity)

mHeadTrackingPoller = mHeadTrackingManagerregisterPoller()

mHeadTrackingEvent = HeadTrackingEventobtain()

mHeadTrackingPollersample(mHeadTrackingEvent)

mXCoorsetText(getString(Rstringxcoor mHeadTrackingEventx_mm))

mYCoorsetText(getString(Rstringycoor mHeadTrackingEventy_mm))

mZCoorsetText(getString(Rstringzcoor mHeadTrackingEventz_mm))

mFaceDetectedsetText(getString(Rstringfacedetected) +

mHeadTrackingEventisFaceDetected)

mHeadTrackingsetText(getString(Rstringheadtracking) +

mHeadTrackingEventisTracking)

Register for GestureEvent (Tilt)

mGestureManager = GestureManagercreateInstance(thisActivity)

mTiltGesture = GesturegetGestureFromId(GestureTILT)

Override

public void onGestureEvent(GestureEvent event)

Move drawer down if it is not already down

if (mDrawerDown)

final TranslateAnimation translate = new TranslateAnimation(0 0 -mDropDownDrawergetHeight() 0)

translatesetDuration(ANIMATE_DURATION)

translatesetFillAfter(true)

mDropDownDrawerstartAnimation(translate)

mDrawerDown = true

Adding auto scrolling to a ListView

private TiltScrollController mTiltScrollController

Override

public void onCreate(Bundle savedInstanceState)

superonCreate(savedInstanceState)

setContentView(Rlayoutmain)

Create an instance of TiltScrollController

mTiltScrollController = new TiltScrollController(this)

Set up ListView and ListAdapter

ListltStringgt cities = readCities()

ListAdapter adapter = new ArrayAdapterltStringgt(this Rlayoutcity_layout Ridcity_name cities)

ListView cityListView = (ListView) findViewById(Ridcity_listview)

cityListViewsetAdapter(adapter)

Attach the ViewGroup and ListView to the TiltScrollController

ViewGroup containerView = (ViewGroup) findViewById(Ridcontainer)

mTiltScrollControllerattach(containerView cityListView)

Add a TouchEventTrigger to the TiltScrollController

This trigger disables tilt scrolling when the view is in a touch event

mTiltScrollControlleraddScrollStateTrigger(new TouchEventTrigger(cityListView))

Add a PanelVisibleTrigger to the TiltScrollController

Disable tilt scrolling when the Center panel is not the currently visible top panel

SidePanelLayout sidePanelLayout = (SidePanelLayout) findViewById(Ridsidepanellayout)

mTiltScrollControlleraddScrollStateTrigger(new PanelVisibleTrigger(sidePanelLayout

PanelVisibleTriggerPanelCenter))

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 8: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

Register for GestureEvent (Tilt)

mGestureManager = GestureManagercreateInstance(thisActivity)

mTiltGesture = GesturegetGestureFromId(GestureTILT)

Override

public void onGestureEvent(GestureEvent event)

Move drawer down if it is not already down

if (mDrawerDown)

final TranslateAnimation translate = new TranslateAnimation(0 0 -mDropDownDrawergetHeight() 0)

translatesetDuration(ANIMATE_DURATION)

translatesetFillAfter(true)

mDropDownDrawerstartAnimation(translate)

mDrawerDown = true

Adding auto scrolling to a ListView

private TiltScrollController mTiltScrollController

Override

public void onCreate(Bundle savedInstanceState)

superonCreate(savedInstanceState)

setContentView(Rlayoutmain)

Create an instance of TiltScrollController

mTiltScrollController = new TiltScrollController(this)

Set up ListView and ListAdapter

ListltStringgt cities = readCities()

ListAdapter adapter = new ArrayAdapterltStringgt(this Rlayoutcity_layout Ridcity_name cities)

ListView cityListView = (ListView) findViewById(Ridcity_listview)

cityListViewsetAdapter(adapter)

Attach the ViewGroup and ListView to the TiltScrollController

ViewGroup containerView = (ViewGroup) findViewById(Ridcontainer)

mTiltScrollControllerattach(containerView cityListView)

Add a TouchEventTrigger to the TiltScrollController

This trigger disables tilt scrolling when the view is in a touch event

mTiltScrollControlleraddScrollStateTrigger(new TouchEventTrigger(cityListView))

Add a PanelVisibleTrigger to the TiltScrollController

Disable tilt scrolling when the Center panel is not the currently visible top panel

SidePanelLayout sidePanelLayout = (SidePanelLayout) findViewById(Ridsidepanellayout)

mTiltScrollControlleraddScrollStateTrigger(new PanelVisibleTrigger(sidePanelLayout

PanelVisibleTriggerPanelCenter))

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 9: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

Adding auto scrolling to a ListView

private TiltScrollController mTiltScrollController

Override

public void onCreate(Bundle savedInstanceState)

superonCreate(savedInstanceState)

setContentView(Rlayoutmain)

Create an instance of TiltScrollController

mTiltScrollController = new TiltScrollController(this)

Set up ListView and ListAdapter

ListltStringgt cities = readCities()

ListAdapter adapter = new ArrayAdapterltStringgt(this Rlayoutcity_layout Ridcity_name cities)

ListView cityListView = (ListView) findViewById(Ridcity_listview)

cityListViewsetAdapter(adapter)

Attach the ViewGroup and ListView to the TiltScrollController

ViewGroup containerView = (ViewGroup) findViewById(Ridcontainer)

mTiltScrollControllerattach(containerView cityListView)

Add a TouchEventTrigger to the TiltScrollController

This trigger disables tilt scrolling when the view is in a touch event

mTiltScrollControlleraddScrollStateTrigger(new TouchEventTrigger(cityListView))

Add a PanelVisibleTrigger to the TiltScrollController

Disable tilt scrolling when the Center panel is not the currently visible top panel

SidePanelLayout sidePanelLayout = (SidePanelLayout) findViewById(Ridsidepanellayout)

mTiltScrollControlleraddScrollStateTrigger(new PanelVisibleTrigger(sidePanelLayout

PanelVisibleTriggerPanelCenter))

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 10: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

Attach the ViewGroup and ListView to the TiltScrollController

ViewGroup containerView = (ViewGroup) findViewById(Ridcontainer)

mTiltScrollControllerattach(containerView cityListView)

Add a TouchEventTrigger to the TiltScrollController

This trigger disables tilt scrolling when the view is in a touch event

mTiltScrollControlleraddScrollStateTrigger(new TouchEventTrigger(cityListView))

Add a PanelVisibleTrigger to the TiltScrollController

Disable tilt scrolling when the Center panel is not the currently visible top panel

SidePanelLayout sidePanelLayout = (SidePanelLayout) findViewById(Ridsidepanellayout)

mTiltScrollControlleraddScrollStateTrigger(new PanelVisibleTrigger(sidePanelLayout

PanelVisibleTriggerPanelCenter))

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 11: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

We Are Here to Help

Learn more developeramazoncom

Connect with us

AmazonAppstoreForAndroid

developeramazoncomblog

PeterDotGames

Community forumsdeveloperamazoncom

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 12: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

Next Session

Thur 430 in Murano 3304

AFF301 Fire Phone The Dynamic Perspective API Under the Hood

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 13: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

httpsdeveloperamazoncomwelcome

httpsdeveloperamazoncomblog

Android

Fire phoneKindle Fire

Fire TV and Fire TV Stick

BB 10

httpbitlyawsevals

Page 14: (AFF301) Fire Phone: The Dynamic Perspective API, Under the Hood | AWS re:Invent 2014

httpbitlyawsevals