This directory contains sample code to test the use of virtual displays created over an Android Open Accessories Protocol link. --- DESCRIPTION --- There are two applications with two distinct roles: a sink and a source. 1. Sink Application The role of the sink is to emulate an external display that happens to be connected using the USB accessory protocol. Think of it as a monitor or video dock that the user will want to plug a phone into. The sink application uses the UsbDevice APIs to receive connections from the source device over USB. The sink acts as a USB host in this arrangement and will provide power to the source. The sink application decodes encoded video from the source and displays it in a SurfaceView. The sink also injects passes touch events to the source over USB HID. 2. Source Application The role of the source is to present some content onto an external display that happens to be attached over USB. This is the typical role that a phone or tablet might have when the user is trying to play content to an external monitor. The source application uses the UsbAccessory APIs to connect to the sink device over USB. The source acts as a USB peripheral in this arrangement and will receive power from the sink. The source application uses the DisplayManager APIs to create a private virtual display which passes the framebuffer through an encoder and streams the output to the sink over USB. Then the application opens a Presentation on the new virtual display and shows a silly cube animation. --- USAGE --- These applications should be installed on two separate Android devices which are then connected using a USB OTG cable. Remember that the sink device is functioning as the USB host so the USB OTG cable should be plugged directly into it. When connected, the applications should automatically launch on each device. The source will then begin to project display contents to the sink.