surface技术
surface教程
surface教程

唤醒surface三种方式是什么(surface唤醒屏幕教程)

发布时间:2022-03-18 20:47:21 浏览量:242

如果 surface 无法打开,无法唤醒或显示无 surface 徽标的黑屏,你可以尝试一些操作使其恢复正常。
 
断开配件并确保 Surface 已充电
与 Surface 相连的设备可能是导致其无法打开的原因。下面介绍如何检查是否为该原因:
 
1、断开所有 U 盘、SD 卡、USB 附件、外接显示器、扩展坞或其他已连接到 Surface 的任何设备。然后尝试将其打开。如果这种方法有用,说明问题可能是配件导致的。
 
2、如果不起作用,请连接 Surface 附带的电源。
 
3、通过原装电源线将 Surface 接通电源后,充电 15 分钟。按电源按钮以启动 Surface。
 
使用键盘和平板电脑快捷方式唤醒
如果重新充电无法唤醒 Surface,可以试试下面的这些方法。
 
 连接键盘或使用集成键盘。然后按 Windows 徽标键 + Ctrl + Shift + B。
 如果处于平板模式,请快速按调高音量按钮和调低音量按钮三次。
强制关机
如果为 Surface 充电和键盘或平板电脑快捷方式不起作用,可以尝试强制关机再重启。

Native层的Surface工作方式有:仅在Proxy端、Proxy和Service端协同、仅在Service端工作三种方式(第三种方式有待确认)。前两种方式在Proxy端都有共同的预处理工作要做,如下:
Proxy端
1、创建SurfaceFlinger的本地代理
sp<SurfaceComposerClient> client = new SurfaceComposerClient();

2、创建SurfaceControl的本地代理
sp<SurfaceControl> surfaceControl = client->createSurface(……);

3、获取Surface本地代理
sp<Surface> surface = surfaceControl->getSurface();

拿到Surface本地代理后,就可以利用它进行后续相关操作了

方式一:参照resize.cpp的实现
Proxy端
1、获取Surface的缓冲区
ANativeWindow_Buffer outBuffer;
surface->lock(&outBuffer, NULL);

2、直接操作outBuffer.bits成员
android_memset16((uint16_t*)outBuffer.bits, 0xF800, bpr*outBuffer.height);

3、投送给SurfaceFlinger显示
surface->unlockAndPost();

方式二:参照Camera的实现
Proxy端
1、获取IGraphicBufferProducer本地代理
sp<IGraphicBufferProducer> gbp = surface->getIGraphicBufferProducer();

2、传递给Service端
camera-> setPreviewTarget(gbp);

Service端
3、根据gbp创建新的Surface
sp<ANativeWindow> window = new Surface(gpb, /*controlledByApp*/ true);

4、连接window到对应的api集合(用途???)
result = native_window_api_connect(window.get(), NATIVE_WINDOW_API_CAMERA);

5、使用window的相关接口,如设置队列缓冲区数量为3
window->perform(window, NATIVE_WINDOW_SET_BUFFER_COUNT, 3);

方式三:在Surface的构造函数中有一个参数controlledByApp表示是否由Proxy端使用,如果仅在Service端使用可按默认值创建Surface。在SurfaceMediaSource_test有相关代码:

 
1、创建BufferQueue
sp<BufferQueuem> BufferQueue = new BufferQueue();

2、创建消费者监听器
wp<ConsumerListener> listener = static_cast<ConsumerListener*>(this);

3、创建消费者监听器代理
sp<BufferQueue::ProxyConsumerListener> proxy = new BufferQueue::ProxyConsumerListener(listener);

4、连接消费者到BufferQueue
mBufferQueue->consumerConnect(proxy, false);

5、根据BufferQueue创建新的Surface
sp<IGraphicBufferProducer> sms = mBufferQueue;
sp<Surface> stc = new Surface(sms);

6、使用window的相关接口,如perform()
sp<ANativeWindow> window = stc;

window->perform(window, NATIVE_WINDOW_SET_BUFFER_COUNT, 3);

以上就是surface维修为您介绍唤醒surface三种方式是什么(surface唤醒屏幕教程),更多相关请电话咨询,相关文章 :surface无线网络突然没有了 surface长时间不用开不了机  如何更改surface屏幕分辨率 

专业销售维修微软surface所有系列产品,欢迎来电咨询!

Copyright © 2020-2024 成都微软surface维修服务中心 All Rights Reserved. 四川地区维修中心 XML地图

申明:我们不是微软surface中心!我们致力于销售维修微软设备厂家产品,并不断完善我们的技术和服务!请尊敬的用户不要错误的把我们理解为微软中心!

客服工作时间:
周一至周日 9:30-18:00

028-62307038

专业销售维修微软surface所有系列产品,欢迎来电咨询!

Copyright © 2020-2024 成都微软surface维修服务中心 All Rights Reserved. 四川地区维修中心 XML地图