Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何改变xamarin形式的屏幕亮度_C#_Xamarin.forms - Fatal编程技术网

C# 如何改变xamarin形式的屏幕亮度

C# 如何改变xamarin形式的屏幕亮度,c#,xamarin.forms,C#,Xamarin.forms,我有xamarin表单中的qr页面,我想要的是当qr显示时,屏幕亮度会更亮,我找不到解决方案。我在internet上找到了一些代码,但它返回了一些错误代码消息 编辑: 我删除了源代码,因为它看起来让一些人感到困惑,我尝试的代码是针对xamarin android的,这就是为什么它对我不起作用(我认为xamarin.android和xamarin.forms代码几乎相同,这就是为什么我复制代码并将其粘贴到xamarin表单中,并得到一些错误消息)。现在我真正的问题是如何通过xamarin形式改变屏

我有xamarin表单中的qr页面,我想要的是当qr显示时,屏幕亮度会更亮,我找不到解决方案。我在internet上找到了一些代码,但它返回了一些错误代码消息

编辑: 我删除了源代码,因为它看起来让一些人感到困惑,我尝试的代码是针对xamarin android的,这就是为什么它对我不起作用(我认为xamarin.android和xamarin.forms代码几乎相同,这就是为什么我复制代码并将其粘贴到xamarin表单中,并得到一些错误消息)。现在我真正的问题是如何通过xamarin形式改变屏幕亮度我们能做到吗?如果是,我可以如何尝试任何链接,谢谢

Xamarin.Forms不是一个平台抽象,而是一个UI抽象。因此,无法访问屏幕亮度等系统服务。我也没有找到一个NuGet来实现这一点,因此您必须实现特定于平台的类来调整屏幕亮度和分辨率

在PCL中实现该接口

public interface IBrightnessService
{
    void SetBrightness(float factor);
}
并使用
DependencyService
从通用项目到平台特定实现使用该接口操作

var brightnessService = DependencyService.Get<IBrightnessService>();
brightnessService.SetBrightness(.2);
这仍然有效,但已被弃用。无论如何,您可以使用并使用

var window = CrossCurrentActivity.Current.Activity.Window;
()

网间网操作系统 使用
UIScreen.MainScreen.Brightness
调整亮度

using Xamarin.Forms;
using UIKit;

[assembly: Dependency(typeof (iOSBrightnessService))]

public class iOSBrightnessService : IBrightnessService
{
    public void SetBrightness(float brightness)
    {
        UIScreen.MainScreen.Brightness = brightness;
    }
}

该错误意味着.Attributes不是窗口类的静态属性。您只能在Window类的特定实例上使用它。好了,现在忘记这个错误吧,我的问题是如何在xamarin窗体中更改屏幕亮度?这是正确的代码吗?如果是,我将尝试修复错误。我不赞成为我设置的应用程序打开/关闭全局亮度设置,以使我的屏幕可读且不会伤害我的眼睛。。。此外,我的手机有时会根据传感器数据/时间自动调整亮度。整个想法有点违背了残疾用户界面设计规则——屏幕阅读器的声音不会因此变得更亮。@PatrickArtner好吧,我只是想实现我的客户要求的,我的客户要求我添加此功能。但是是的,你说得对,这个想法不是很有效,但我还是要补充一点,那就是我的客户ask@TheodorusAgumGumilang你不必总是严格按照客户说的去做,尤其是在没有意义的情况下。根据你的技术专长,你可以选择说服他们,他们所要求的是一个坏主意。如果您提到它使解决方案更便宜和/或更快,因为您不必花时间研究和实现该功能,这可能有助于说服他们。如果你阻止客户做一些愚蠢或不必要的事情,客户通常会感谢你。@TheodorusAgumGumilang编辑了我的答案。我有一个问题,如何将其切换回手机的默认亮度,所以我想覆盖back buton并将该方法放在那里,这样当页面关闭时,亮度就会恢复正常(至手机的设置)你知道如何实施吗?thanks@TheodorusAgumGumilang您现在可能已经找到了答案,但对于未来的读者,我恢复旧设置的方法是添加一个静态变量,将其保存在每个平台类中,
private static float?\u lastBrightness=null;
,然后在
SetBrightness
方法中保存最后,我在接口中添加了
void ResetBrightness()
,并以如下方式实现了该方法:
if(_lastwrightness.HasValue){SetBrightness(_lastwrightness.value)}
@RichardMarskell Drackir,我想在最后一个用户在应用程序中进行任何活动10分钟后更改应用程序的亮度。(就像计算机屏幕服务器一样)。我在iOS中实现了这一点(通过覆盖UIApplication类)但我不知道从哪里可以监控用户的所有触摸、轻触、事件。有人能帮我吗?@PaulKertscher,你能帮我回答我上面的问题吗?
using Xamarin.Forms;

[assembly: Dependency(typeof (AndroidBrightnessService))]

public class AndroidBrightnessService : IBrightnessService
{
    public void SetBrightness(float brightness)
    {
        var window = CrossCurrentActivity.Current.Activity.Window;
        var attributesWindow = new WindowManagerLayoutParams();

        attributesWindow.CopyFrom (window.Attributes);
        attributesWindow.ScreenBrightness = brightness;

        window.Attributes = attributesWindow;
    }
}
using Xamarin.Forms;
using UIKit;

[assembly: Dependency(typeof (iOSBrightnessService))]

public class iOSBrightnessService : IBrightnessService
{
    public void SetBrightness(float brightness)
    {
        UIScreen.MainScreen.Brightness = brightness;
    }
}