我正在使用便携式项目,因此无法直接访问本机代码。
我的项目中有一个界面,允许我访问Android / iOS项目中的本机对象。我们主要用它来播放音频。
例如,Android就像这样的东西Window w = new Window();
w.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.KeepScreenOn);
然而,主要问题是访问Window
对象。我可以将Xamarin.Forms.Page
对象传递给本机代码,但是没有办法(我不认为)将它转换为本机Android Window
对象来访问标志。
有没有办法用便携式项目做到这一点?
答案 0 :(得分:9)
如果没有特定于平台的服务或渲染器,您无法执行此操作。便携式项目必须调用特定于平台的代码才能实现此目的。
从该平台特定代码(DependencyService
或Renderer
),您可以通过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)
现在有一个插件可以完全按照《时代》的写作
https://docs.microsoft.com/en-us/xamarin/essentials/screen-lock
简单的源代码在这里
https://github.com/xamarin/Essentials/tree/master/Xamarin.Essentials/ScreenLock
答案 2 :(得分:0)
对于Xamarin Forms Android。 我在代码下面包含的渲染文件
Window window = (Forms.Context as Activity).Window;
window.AddFlags(WindowManagerFlags.KeepScreenOn);