[英]How to change screen brightness in xamarin forms
我有 xamarin 形式的 qr 頁面,我想要的是當 qr 出現時屏幕亮度會更亮,我找不到解決方案。 我在互聯網上找到了一些代碼,但它返回了一些錯誤代碼消息
編輯:我刪除了源代碼,因為它看起來像讓一些人感到困惑,我嘗試的代碼適用於 xamarin android,這就是為什么它對我不起作用(我認為 xamarin.android 和 xamarin.forms 代碼幾乎相同,這就是為什么我復制了代碼並將其粘貼到 xamarin 表單中,並收到了一些錯誤消息)。 現在我真正的問題是如何通過 xamarin Forms 更改屏幕亮度我們可以這樣做嗎? 如果是的話,我可以嘗試什么鏈接,謝謝
Xamarin.Forms不是平台抽象,而是 UI 抽象。 因此無法訪問屏幕亮度等系統服務。 我也沒有找到 NuGet 來實現這一點,因此您必須實現平台特定的類來調整屏幕亮度並通過DependencyService
解決。
在您的 PCL 中實現接口
public interface IBrightnessService
{
void SetBrightness(float factor);
}
並使用DependencyService
從您的公共項目到您的平台特定實現使用該接口操作
var brightnessService = DependencyService.Get<IBrightnessService>();
brightnessService.SetBrightness(.2);
有關如何使用 DependencyService 的非常好的緊湊示例,請參閱此頁面
你的錯誤信息
非靜態字段、方法或屬性“Windows.Attribute”需要一個對象
意味着您正在嘗試訪問一個類型,就好像它是一個對象一樣。 您需要一個上下文,其中有一個Window:Window
對象,例如在MainActivity
就是這種情況。
當您在另一個上下文中時,您需要以某種方式獲取Window
的實例。 在 2.5 之前,這可以通過
var window = ((Activity)Forms.Context).Window;
這仍然有效,但已棄用。 無論如何,你可以使用CurrentActivity插件並獲得Window
與
var window = CrossCurrentActivity.Current.Activity.Window;
( 來源)
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;
}
}
使用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;
}
}
安卓:
public void SetBrightness(float brightness)
{
Window window = (MainActivity.Instance as Activity).Window;
var attributesWindow = new WindowManagerLayoutParams();
attributesWindow.CopyFrom(window.Attributes);
attributesWindow.ScreenBrightness = brightness;
window.Attributes = attributesWindow;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.