簡體   English   中英

Xamarin表格-如何獲得屏幕亮度和串行端口?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM