public final class DisplayManager
extends Object
java.lang.Object | |
↳ | android.hardware.display.DisplayManager |
管理附加显示的属性。
通过调用参数 DISPLAY_SERVICE
来调用 Context.getSystemService()
来获得 DISPLAY_SERVICE
。
Nested classes |
|
---|---|
interface |
DisplayManager.DisplayListener 监听可用显示设备的更改。 |
Constants |
|
---|---|
String |
DISPLAY_CATEGORY_PRESENTATION 显示类别:演示显示。 |
int |
VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR 虚拟显示标志:允许内容在没有内容显示时在私人显示器上被镜像。 |
int |
VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY 虚拟显示标志:只显示该显示的内容; 不要镜像另一个显示器的内容。 |
int |
VIRTUAL_DISPLAY_FLAG_PRESENTATION 虚拟显示标志:创建演示显示。 |
int |
VIRTUAL_DISPLAY_FLAG_PUBLIC 虚拟显示标志:创建公共显示。 |
int |
VIRTUAL_DISPLAY_FLAG_SECURE 虚拟显示标志:创建安全显示。 |
Public methods |
|
---|---|
VirtualDisplay |
createVirtualDisplay(String name, int width, int height, int densityDpi, Surface surface, int flags) 创建一个虚拟显示。 |
VirtualDisplay |
createVirtualDisplay(String name, int width, int height, int densityDpi, Surface surface, int flags, VirtualDisplay.Callback callback, Handler handler) 创建一个虚拟显示。 |
Display |
getDisplay(int displayId) 获取有关逻辑显示的信息。 |
Display[] |
getDisplays() 获取当前所有有效的逻辑显示。 |
Display[] |
getDisplays(String category) 获取指定类别的所有当前有效的逻辑显示。 |
void |
registerDisplayListener(DisplayManager.DisplayListener listener, Handler handler) 注册显示监听器以接收有关何时添加,删除或更改显示的通知。 |
void |
unregisterDisplayListener(DisplayManager.DisplayListener listener) 取消注册显示监听器。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
String DISPLAY_CATEGORY_PRESENTATION
显示类别:演示显示。
此类别可用于识别适合用作演示显示器(如HDMI或无线显示器)的辅助显示器。 应用程序可以自动将其内容投影到演示文稿显示中,以提供更丰富的第二屏体验。
常量值:“android.hardware.display.category.PRESENTATION”
int VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR
虚拟显示标志:允许内容在没有内容显示时在私人显示器上被镜像。
此标志与VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY
。 如果两个标志都被指定,那么将仅应用自己内容的行为。
每当这个标志的行为暗示VIRTUAL_DISPLAY_FLAG_PUBLIC
设置和VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY
尚未确定。 此标志仅用于在创建私人显示时覆盖默认行为。
创建自动镜像虚拟显示需要CAPTURE_VIDEO_OUTPUT
或CAPTURE_SECURE_VIDEO_OUTPUT
权限。 这些权限被保留供系统组件使用,并且不适用于第三方应用程序。 或者,可以使用适当的MediaProjection
来创建自动镜像虚拟显示。
常量值:16(0x00000010)
int VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY
虚拟显示标志:只显示该显示的内容; 不要镜像另一个显示器的内容。
此标志与VIRTUAL_DISPLAY_FLAG_PUBLIC
结合使用。 通常,如果公共虚拟显示器没有自己的窗口,它们将自动镜像默认显示器的内容。 当这个标志被指定时,虚拟显示器将只显示它自己的内容,如果它没有窗口,它将被清空。
该标志与VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR
。 如果两个标志都被指定,那么将仅应用自己内容的行为。
只要VIRTUAL_DISPLAY_FLAG_PUBLIC
和VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR
都没有被设置,这个标志的行为就是隐含的。 此标志仅用于在创建公共显示时覆盖默认行为。
常量值:8(0x00000008)
int VIRTUAL_DISPLAY_FLAG_PRESENTATION
虚拟显示标志:创建演示显示。
当该标志被设置时,虚拟显示被注册为presentation display category
的演示显示。 应用程序可以自动将其内容投影到演示文稿显示中,以提供更丰富的第二屏体验。
如果未设置此标志,则虚拟显示不会被注册为演示显示。 应用程序仍然可以在显示器上投影它们的内容,但它们通常不会自动执行。 该选项适用于更多专用显示器。
也可以看看:
常量值:2(0x00000002)
int VIRTUAL_DISPLAY_FLAG_PUBLIC
虚拟显示标志:创建公共显示。
当这个标志被设置时,虚拟显示是公开的。
公共虚拟显示器的行为与大多数连接到系统的其他显示器一样,例如HDMI或无线显示器。 应用程序可以在显示器上打开窗口,系统可以将其他显示器的内容镜像到其上。
创建不限于自己内容的公共虚拟显示只会隐式创建自动镜像显示。 有关限制允许创建自动镜像显示的人员,请参阅VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR
。
当这个标志未被设置时,虚拟显示是私人的,如 FLAG_PRIVATE
显示标志所定义的。
专用虚拟显示器属于创建它的应用程序。 只有私人虚拟展示的所有者才可以在其上放置窗口。 私有虚拟显示器也不参与显示镜像:它不会接收来自其他显示器的镜像内容,也不允许将其自己的内容镜像到别处。 更确切地说,允许枚举或与私有显示交互的唯一过程是与最初创建私有虚拟显示的应用具有相同UID的那些过程。
也可以看看:
常数值:1(0x00000001)
int VIRTUAL_DISPLAY_FLAG_SECURE
虚拟显示标志:创建安全显示。
当此标志被设置时,虚拟显示被认为是安全的,如FLAG_SECURE
显示标志所定义。 呼叫者承诺采取合理的措施,例如空中加密,以防止显示内容被拦截或记录在持久媒体上。
创建安全的虚拟显示器需要CAPTURE_SECURE_VIDEO_OUTPUT
权限。 此权限仅供系统组件使用,并且不适用于第三方应用程序。
当这个标志未被设置时,虚拟显示被认为是不安全的。 如果在此显示屏上显示,则安全窗口的内容将会空白。
常量值:4(0x00000004)
VirtualDisplay createVirtualDisplay (String name, int width, int height, int densityDpi, Surface surface, int flags)
创建一个虚拟显示。
Parameters | |
---|---|
name |
String
|
width |
int
|
height |
int
|
densityDpi |
int
|
surface |
Surface
|
flags |
int
|
Returns | |
---|---|
VirtualDisplay |
VirtualDisplay createVirtualDisplay (String name, int width, int height, int densityDpi, Surface surface, int flags, VirtualDisplay.Callback callback, Handler handler)
创建一个虚拟显示。
虚拟显示的内容呈现为由应用程序提供的 Surface
。
当不再需要时,虚拟显示应该是released
。 由于虚拟显示器呈现到应用程序提供的表面,因此当进程终止并且其上的所有剩余窗口将被强制删除时,它将自动释放。
虚拟显示的行为取决于提供给此方法的标志。 默认情况下,虚拟显示被创建为私有,非呈现和不安全。 权限可能需要使用某些标志。
从KITKAT_WATCH
,表面可以使用setSurface(Surface)
动态连接或分离。 以前,当createVirtualDisplay(String, int, int, int, Surface, int)
时,曲面必须非空,并且在显示的整个生命周期内无法更改。
分离支持虚拟显示器的表面具有与关闭屏幕类似的效果。
Parameters | |
---|---|
name |
String : The name of the virtual display, must be non-empty. |
width |
int : The width of the virtual display in pixels, must be greater than 0. |
height |
int : The height of the virtual display in pixels, must be greater than 0. |
densityDpi |
int : The density of the virtual display in dpi, must be greater than 0. |
surface |
Surface : The surface to which the content of the virtual display should be rendered, or null if there is none initially. |
flags |
int : A combination of virtual display flags: VIRTUAL_DISPLAY_FLAG_PUBLIC , VIRTUAL_DISPLAY_FLAG_PRESENTATION , VIRTUAL_DISPLAY_FLAG_SECURE , VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY , or VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR . |
callback |
VirtualDisplay.Callback : Callback to call when the state of the VirtualDisplay changes |
handler |
Handler : The handler on which the listener should be invoked, or null if the listener should be invoked on the calling thread's looper. |
Returns | |
---|---|
VirtualDisplay |
The newly created virtual display, or null if the application could not create the virtual display. |
Throws | |
---|---|
SecurityException |
if the caller does not have permission to create a virtual display with the specified flags. |
Display getDisplay (int displayId)
获取有关逻辑显示的信息。 显示度量可以被调整以为传统应用提供兼容性。
Parameters | |
---|---|
displayId |
int : The logical display id. |
Returns | |
---|---|
Display |
The display object, or null if there is no valid display with the given id. |
Display[] getDisplays ()
获取当前所有有效的逻辑显示。
Returns | |
---|---|
Display[] |
An array containing all displays. |
Display[] getDisplays (String category)
获取指定类别的所有当前有效的逻辑显示。
当某个类别中有多个显示时,返回的显示会按照偏好进行排序。 例如,如果请求的类别为DISPLAY_CATEGORY_PRESENTATION
并且存在多个演示文稿显示,那么显示将进行排序,以便返回数组中的第一个显示是最受欢迎的演示文稿显示。 该应用程序可以简单地使用第一显示器或允许用户选择。
Parameters | |
---|---|
category |
String : The requested display category or null to return all displays. |
Returns | |
---|---|
Display[] |
An array containing all displays sorted by order of preference. |
void registerDisplayListener (DisplayManager.DisplayListener listener, Handler handler)
注册显示监听器以接收有关何时添加,删除或更改显示的通知。
Parameters | |
---|---|
listener |
DisplayManager.DisplayListener : The listener to register. |
handler |
Handler : The handler on which the listener should be invoked, or null if the listener should be invoked on the calling thread's looper. |
void unregisterDisplayListener (DisplayManager.DisplayListener listener)
取消注册显示监听器。
Parameters | |
---|---|
listener |
DisplayManager.DisplayListener : The listener to unregister. |