我有xrrin形式的qr页面,我想要的是当qr显示时屏幕亮度会更亮,我无法找到解决方案.我在互联网上找到了一些代码,但它返回了一些错误代码信息
编辑:我删除了源代码,因为它看起来像让一些人困惑,我尝试的代码是为xamarin android,这就是为什么它没有为我工作(我认为xamarin.android和xamarin.forms代码几乎相同,这就是为什么我复制代码并将其粘贴到xamarin表单中并得到一些错误消息).而现在我真正的问题是如何通过xamarin表单更改屏幕亮度我们可以这样做吗?如果是的话,我可以尝试任何链接谢谢
Xamarin.Forms 不是平台抽象,而是UI抽象.因此,无法访问屏幕亮度等系统服务.我也没有找到NuGet来实现这一目标,因此你必须实现平台特定的类来调整屏幕亮度并解决问题DependencyService.
在PCL中实现接口
public interface IBrightnessService
{
void SetBrightness(float factor);
}
Run Code Online (Sandbox Code Playgroud)
并使用DependencyService从您的公共项目到您的平台特定实现的接口操作
var brightnessService = DependencyService.Get<IBrightnessService>();
brightnessService.SetBrightness(.2);
Run Code Online (Sandbox Code Playgroud)
有关如何使用DependencyService的非常好的紧凑示例,请参阅此页面
您的错误消息
非静态字段,方法或属性'Windows.Attribute'需要Object
表示您尝试访问类型,就像它是一个对象.你需要一个有Window:Window对象的上下文,MainActivity例如你的情况.
当你在另一个上下文中时,你需要以Window某种方式获得一个实例.预先2.5这是可能的
var window = ((Activity)Forms.Context).Window;
Run Code Online (Sandbox Code Playgroud)
这仍然有效,但已被弃用.无论如何,你可以使用CurrentActivity插件,并获得Window与
var window = CrossCurrentActivity.Current.Activity.Window;
Run Code Online (Sandbox Code Playgroud)
(来源)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1728 次 |
| 最近记录: |