簡體   English   中英

如何使用C#Xamarin模擬Android中的電源按鈕單擊?

[英]How to simulate a click on the power button in Android with C# Xamarin?

我想編寫一個小應用程序,以便在啟動時開始計數100秒,然后模擬單擊電源按鈕。 使設備進入睡眠狀態。 如何使用C#Xamarin模擬Android中的電源按鈕單擊? 謝謝前進

根據您的描述,您想要鎖定屏幕,使用設備管理器DevicePolicyManager鎖定屏幕,然后使用PowerManager顯示屏幕。

  1. 繼承DeviceAdminReceiver

     public class ScreenOffAdminReceiver: DeviceAdminReceiver { private void showToast(Context context,string msg) { Toast.MakeText(context, msg, ToastLength.Short).Show(); } public override void OnEnabled(Context context, Intent intent) { base.OnEnabled(context, intent); showToast(context, "Device Manager enable"); } public override void OnDisabled(Context context, Intent intent) { base.OnDisabled(context, intent); showToast(context, "Device Manager is not enabled"); } 

    }

  2. PowerManager和DevicePolicyManager

     private DevicePolicyManager policyManager; private ComponentName adminReceiver; private PowerManager mPowerManager; private PowerManager.WakeLock mWakeLock; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.activity_main); adminReceiver= new ComponentName(this, Java.Lang.Class.FromType(typeof(ScreenOffAdminReceiver)).Name); policyManager = (DevicePolicyManager)GetSystemService(Context.DevicePolicyService); mPowerManager = (PowerManager)GetSystemService(Context.PowerService); } 
  3. 檢查屏幕狀態

      private void BtncheckAndTurnOnDeviceManager_Click(object sender, System.EventArgs e) { Intent intent = new Intent(DevicePolicyManager.ActionAddDeviceAdmin); intent.PutExtra(DevicePolicyManager.ExtraDeviceAdmin, adminReceiver); intent.PutExtra(DevicePolicyManager.ExtraAddExplanation, "After you turn it on, you can use the lock screen function...."); StartActivityForResult(intent, 0); } private void Btncheckscreenoff_Click(object sender, System.EventArgs e) { bool admin = policyManager.IsAdminActive(adminReceiver); if (admin) { policyManager.LockNow(); } else { showToast("No device management permissions"); } } private void Btncheckscreenon_Click(object sender, System.EventArgs e) { mWakeLock = mPowerManager.NewWakeLock(WakeLockFlags.Partial, "tag"); mWakeLock.Acquire(); mWakeLock.Release(); } private void Btncheckscreen_Click(object sender, System.EventArgs e) { PowerManager pm = (PowerManager)GetSystemService(Context.PowerService); bool screenOn = pm.IsScreenOn; if (!screenOn) { showToast("The screen is a black screen"); } else { showToast("The screen is bright"); } } 

請在mainifest.xml中確認權限:

<uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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