保持某些页面的屏幕已打开

时间:2017-04-28 19:34:12

标签: xamarin.forms

我正在使用便携式项目,因此无法直接访问本机代码。

我的项目中有一个界面,允许我访问Android / iOS项目中的本机对象。我们主要用它来播放音频。

例如,Android就像

这样的东西
Window w = new Window();
w.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.KeepScreenOn);

然而,主要问题是访问Window对象。我可以将Xamarin.Forms.Page对象传递给本机代码,但是没有办法(我不认为)将它转换为本机Android Window对象来访问标志。

有没有办法用便携式项目做到这一点?

3 个答案:

答案 0 :(得分:9)

如果没有特定于平台的服务或渲染器,您无法执行此操作。便携式项目必须调用特定于平台的代码才能实现此目的。

从该平台特定代码(DependencyServiceRenderer),您可以通过Window访问Forms.Context对象。 Forms.Context是您的Android Activity,您可以通过它访问Window对象。

在Android上它的工作原理如下:

Android.Views.Window window = (Forms.Context as Activity).Window;
window.SetFlags(WindowManagerFlags.KeepScreenOn);

在iOS上,您可以尝试此操作(Apple docs):

UIApplication.SharedApplication.IdleTimerDisabled = true;

答案 1 :(得分:0)

答案 2 :(得分:0)

对于Xamarin Forms Android。 我在代码下面包含的渲染文件

Window window = (Forms.Context as Activity).Window;
window.AddFlags(WindowManagerFlags.KeepScreenOn);