[英]xamarin forms - how get screen brightness and serial ports?
我想創建一個頁面,顯示設備的所有硬件,包括亮度和串行端口。 我應該怎么做?
如果要獲得亮度 ,使用DependencyService將是一個好方法。
首先實現接口:
public interface IBrightnessService
{
void SetBrightness(float factor);
float GetBrightness();
}
然后在要獲取或設置方法的窗體中:
組:
var brightnessService = DependencyService.Get<IBrightnessService>();
brightnessService.SetBrightness((float)0.5);
得到:
var brightnessService = DependencyService.Get<IBrightnessService>();
Console.WriteLine("brightness is:" + brightnessService.GetBrightness());
在Android中,創建AndroidBrightnessService :
[assembly: Xamarin.Forms.Dependency(typeof(AndroidBrightnessService))]
namespace App6.Droid
{
public class AndroidBrightnessService : IBrightnessService
{
[Obsolete]
public float GetBrightness()
{
//throw new NotImplementedException();
//var window = ((Activity)Forms.Context).Window;
//var attributesWindow = new WindowManagerLayoutParams();
//attributesWindow.CopyFrom(window.Attributes);
var brightness = Android.Provider.Settings.System.GetInt(MainActivity.thisMainActivity.ContentResolver, Android.Provider.Settings.System.ScreenBrightness);
//MainActivity.thisMainActivity is a isntance from activity
//The returned brightness is an int type value between 0 and 255.
return brightness;
}
[Obsolete]
public void SetBrightness(float brightness)
{
//throw new NotImplementedException();
var window = ((Activity)Forms.Context).Window;
//var window = CrossCurrentActivity.Current.Activity.Window;
var attributesWindow = new WindowManagerLayoutParams();
attributesWindow.CopyFrom(window.Attributes);
attributesWindow.ScreenBrightness = brightness;
window.Attributes = attributesWindow;
}
}
}
注意:MainActivity.thisMainActivity是來自活動的一個概念:
public static MainActivity thisMainActivity;
onCreate方法:
thisMainActivity = this;
在IOS中,Cretae iOSBrightnessService :
[assembly: Dependency(typeof(iOSBrightnessService))]
namespace App6.iOS
{
public class iOSBrightnessService : IBrightnessService
{
public float GetBrightness()
{
//throw new NotImplementedException();
return (float)UIScreen.MainScreen.Brightness;
}
public void SetBrightness(float brightness)
{
//throw new NotImplementedException();
UIScreen.MainScreen.Brightness = brightness;
}
}
}
注意:App6是我的項目的名稱。
================================================== ===========================
關於串行端口 ,我沒有在我的項目中使用過,但是它應該只存在於android中。我認為這需要在DependencyService的基礎上由某些庫(例如.so文件)引用。
這是一個可以參考的Nuget包( Xamarin.Android.SerialPort )。您可以查看一個示例項目 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.