我想对android设备屏幕上显示的内容应用某种图像过滤器。图像滤波器的最简单示例可以是在帧缓冲器显示在屏幕上之前应用于帧缓冲器的Sepia滤波器。为了确保,我希望这种效果在全系统范围内,而不仅仅是在我的应用程序中。
要使效果在系统范围内发挥作用,您需要修改SurfaceFlinger以应用过滤器。
在Android 5.0"棒棒糖"中,你可以看到一个代码的原型实现,该代码修改输出以提高色盲人群的对比度。请参阅SurfaceFlinger.cpp中的Daltonizer代码及其如何连接到doDisplayComposition()
中。请注意,这会在曲面合成过程中应用效果,从而禁用硬件生成器。
没有办法通过应用程序在全系统范围内实现这一点。如果有的话,你可能会对系统造成各种破坏。