Teleca Corporate Presentation Apr 2009

advertisement
Confidential
© 2009 Teleca AB
Dual Display for Android Applications
Gururaj N
21st Jan, 2011
v0.2
Confidential
Agenda
Introducing Teleca
History of Multi Display
Dual Display Mobile Devices
Teleca’s experience in Dual Display for Android Devices
© 2009 Teleca AB
QA
2
Confidential
© 2009 Teleca AB
Introducing Teleca
Teleca is the only player in segment with comprehensive onshore/offshore
global delivery footprint across all major markets
We have 2000 mobile software engineers available worldwide
3
Confidential
Agenda
Introducing Teleca
History of Multi Display
Dual Display Mobile Devices
Teleca’s experience in Dual Display for Android Devices
© 2009 Teleca AB
QA
4
Confidential
History of Multi-Monitor (1) –
PC and TV
© 2009 Teleca AB
Dual Monitors at Work Place
Picture in Picture
Multi monitor use case
 Engineer needs as bigger screen possible to enhance productivity
 HW Support – two video ports, or add second video card
 OS Support – Adjust display properties
PIP use case
 Two programs side–by–side and audio output of one program going into
speaker and another going to headset
 Two tuner built into TV set OR one tuner being external source like DVD player.
5
Confidential
© 2009 Teleca AB
History of Multi-Monitor (2) –
Mobile Phones
Multi display Mobile Phone usecases
 The secondary display is used typically for notifications ( messages, incoming call ) and
Clock
 HW Support – two display drivers
 OS Support – Adjust display properties
 Separate applications running on two screen
Disadvantages
 Cannot write applications for secondary display
 Only one display is active at any time.
 Low resolutions
6
Confidential
Agenda
Introducing Teleca
History of Multi Display
Dual Display Mobile Devices
Teleca’s experience in Dual Display for Android Devices
© 2009 Teleca AB
QA
7
Samsung Continuum
Acer Iconia
© 2009 Teleca AB
Confidential
Dual Display Mobile Devices (1)
Samsung Continuum Use cases
Acer Iconia
 Dedicated Ticker Display for displaying
Music player controls, RSS feeds,
Social network site updates, Incoming
call notification.
 Concept laptop.
 The idea seems to be use the second
display for dynamically changing data
without affecting the activities user
does on main screen
 Used as e-Reader
 One of the display can become SoftKeyboard.
8
Confidential
Dual Display Mobile Devices (2)
HW Support
 Two different displays
 Two different frame buffers and drivers
 One display virtually split into two displays
 Single virtual frame buffer to support two independent displays
© 2009 Teleca AB
SW Support
 Framework changes to support dual displays
 SDK changes to program applications specific to Dual display
 Currently not available, mostly proprietary
9
Confidential
Agenda
Introducing Teleca
History of Multi Display
Dual Display Mobile Devices
Teleca’s experience in Dual Display for Android Devices
© 2009 Teleca AB
QA
10
© 2009 Teleca AB
Confidential
Teleca’s experience in Dual Display for Android (1)
Teleca
Worked on all
aspects
of
Dual Display on
Android
11
Confidential
Teleca’s experience in Dual Display for Android (2)
Teleca built Dual Display for Android with Texas Instruments
Demonstrated at MWC 2009
Development Environment
 TI Zoom3(OMAP 4430) with Dual Display Support (each display 864x480)
© 2009 Teleca AB
 Android 2.0 ( Éclair )
12
Confidential
Teleca’s experience in Dual Display for Android (3)
- Components
Android Components involved in Dual Display
 Applications - need to define onto which display their Activities should go.
 Activity Manager – launch application’s activities onto the right display.
 Window Manager – needs to properly handle two Activity stacks and two
window stacks
© 2009 Teleca AB
 Surface Flinger – needs to handle layer composition for two displays.
 OpenGL / EGL – needs to support one context for each display
 Linux Kernel / Driver – support for two secondary display for output and
touch input
13
Confidential
Teleca’s experience in Dual Display for Android (4)
- Design Approaches for Window Manager Support
Single Window Manager concept
 This concept is based on an extension of the existing Window Manager for the second
display. The WindowManagerService would be extended to support a second stack of
activities and a second stack of windows.
© 2009 Teleca AB
 The Activity Manager would –based- on the applications preference or the preference
of an Activity create the Activity on the right stack of the Window Manager. Besides the
changes to the ActivityManager the main changes need to be done in the
WindowManagerService and the IWindowManager.aidl.
Pros
Interface to only one Window
Manager
No additional thread
Cons
Very complex 11K lines of code
Massive design changes to central
Android component
14
Confidential
Teleca’s experience in Dual Display for Android (5)
- Design Approaches for Window Manager Support
Second Window Manager
 The concept proposes to duplicate the WindowManagerService code, rename it and
instantiate an instance of this which handles the Activities and Windows for the second
display.
 All Stake holders need to interface with two Window Managers
ViewRoot
WallpaperManagerService
InputMethodManagerService
© 2009 Teleca AB
ActivityManagerService
SensorManager
KeyguardManager
IWindowManager
IWindowManager2
WindowManagerService
WindowManagerService2
15
Confidential
Pros
Simple concept with only minor
changes to the actual
implementation of the
WindowManagerService; Standard
WindowManagerService requires
nearly no changes
© 2009 Teleca AB
Easy to migrate to next version of
Android
Cons
Synchronization of both
WindowManagerService instances
required in some parts
Code duplication
Increased memory usage due to a
second instance of the service
A number of stakeholders of
WindowManagerService need to
be modified
Not too attractive solution from
architecture point of view
16
Confidential
Teleca’s experience in Dual Display for Android (6)
- Design Approaches for Window Manager Support
Second Window Manager Service Instance
© 2009 Teleca AB
 This concept proposes to modify the WindowManagerService and the
IWindowManager.aidl code so that it can be instantiated twice. Each instance of the
service would be responsible for one display then. The required changes haven’t been
analysed in detail as this seemed to be more effort compared to previous approach.
However from an architecture point of view this seems to be preferred.
 The problem with this approach might be that the decision which
WindowManagerService needs to be used might not always be possible and thus
requiring modifications in the stakeholders. As a result the other approach was chosen
17
Confidential
ActivityManagerService
WallpaperManagerService
InputMethodManagerService
IWindowManager
KeyguardManager
© 2009 Teleca AB
SensorManager
ViewRoot
WindowManagerServiceBase
WindowManagerService
WindowManagerService2
18
Confidential
Agenda
Introducing Teleca
History of Multi Display
Dual Display Mobile Devices
Teleca’s experience in Dual Display for Android Devices
© 2009 Teleca AB
 Specific Implementation Details
QA
20
Confidential
Teleca’s experience in Dual Display for Android
- High Level Block Diagram
Applications
Home
Phone
Gallery
App. on second
display
Home 2
OpenGL
Application
…
Application Framework
Activity Manager
…
Window Manager 2
Window Manager
© 2009 Teleca AB
View System
Libraries
Android Runtime
bionic
Surface
Flinger
OpenGL
Hardware Abstraction Layer
Linux Kernel
Display
Driver 1
Modified
Display
Driver 2
New
Pico DLP
Keyboard
Driver
Not feasible
Touch
Input 1
Touch
Input 2
…
21
Confidential
Teleca’s experience in Dual Display for Android Changes across the Android Stack
Applications
 Extensions to the AndroidManifest.xml
The AndroidManifest.xml was extended to support the attribute “android:display” for the
<application> and the <activity> tag. The possible values are integer values, usually
only used when the application or an Activity of the application wants to go on the
© 2009 Teleca AB
second screen
 Sample:
<application android:label="@string/app_label"
android:icon="@drawable/ic_launcher_alarmclock"
android:display="1">
22
Confidential
 Extension to the applications resources
 The interface of the resources was extended to allow an application to set the display
programmatically. This is usually done in the onCreate() of an Activity:
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getResources().setApplicationDisplay(Display.DISPLAY2);
© 2009 Teleca AB
}
 The class Resource was extended with two interfaces:
public int getApplicationDisplay();
public void setApplicationDisplay(int display);
 The display values are defined in Display.java as:
Display.DEFAULT_DISPLAY
Display.DISPLAY2
23
Confidential
Activity Manager
 The Activity Manager starts an Activity and as such needs to know onto
which display an application wants to go. The Activity Manager then adds
the Activity onto the Window Manager’s proper Activity stack.
 The ActivityManagerService was extended by a number of changes:
 Additional list of history entries for the second display which stores the stack of
launched activities
 Reference to WindowManagerService for the second display
© 2009 Teleca AB
 Support to start, stop and resume activities for the second display
 Support for separate Home Screen on second display. The second Home Screen
itself was not implemented during the project.
24
Confidential
Window Manager
 The Window Manager needs extensions to support two application/Activity
stacks and two Window stacks. Additionally it needs to be made second
display-aware.
 Touch Events
 Key Events
© 2009 Teleca AB
 Rendering
25
Confidential
Surface Flinger
Applications
Application
1
Application
2
Application
3
Application Framework
© 2009 Teleca AB
Surface
Surface
Surface
Surface
Surface
Libraries
Surface Flinger
Hardware Abstraction Layer
Linux Kernel
Clamshell Driver
Display Driver 1
/dev/graphics/fb0
Display Driver 2
/dev/graphics/fb1
26
Confidential
The standard Surface Flinger was extended two handle two stacks of layers, one for
each display. Internally the Layers contain the buffer to be rendered. Additionally all
the calls to OpenGL set the right OpenGL context before so that the OpenGL calls go
to the right display.
From the applications point of view the decision onto which display is drawn is done
by the display parameter set in the Surface object. The applications don’t do this
directly though. They define this either in the AndroidManifest.xml or by setting the
display in the associated resources by a direct API call.
© 2009 Teleca AB
The Activity Manager then decides onto which display an Activity wants to go and
adds it to the correct Window Manager. The Window Manager then sets the proper
display in the Surface object.
Access permissions
 To access the Surface Flinger the following permission is defined in the platforms
AndroidManifest.xml (in frameworks/base/core/res/):
 android.permission.ACCESS_SURFACE_FLINGER
 The following public constructor of Surface is hidden from the SDK and requires this
permission:
 public Surface( SurfaceSession s, int pid, int display, int w, int h, int format, int flags) throws
OutOfResourcesException;
27
Confidential
Linux Kernel / Drivers
 /dev/graphics/fb0 – Framebuffer for default display
 /dev/graphics/fb1 – Framebuffer for second display
 /dev/input/event0 – HW keyboard
 /dev/input/event1 – Touchable first display
© 2009 Teleca AB
 /dev/input/event2 – Touchable second display
28
Confidential
Agenda
Introducing Teleca
History of Multi Display
Dual Display Mobile Devices
© 2009 Teleca AB
Teleca’s experience in Dual Display for Android Devices
QA
29
© 2009 Teleca AB
Confidential
Resourcefully yours
Download