創建一個新C# android專案
選擇“Blank App”
在生成的界面上,洗掉原來的layout,從工具箱重新選擇一個LinearLayout
再選擇三個textView,id為默認,即textView1、textView2、textView3,用以顯示加速度傳感器x、y、z軸資料
再選擇兩個個Button,id為默認,即button1、button2
可以適當調整他們的大小
運行,效果為:

其對應的 activity_main.xml為:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:minWidth="25px"
android:minHeight="25px">
<TextView
android:text="Text"
android:layout_width="215.0dp"
android:layout_height="52.0dp"
android:minWidth="25px"
android:minHeight="25px"
android:id="@+id/textView1" />
<TextView
android:text="Text"
android:layout_width="208.5dp"
android:layout_height="50.5dp"
android:id="@+id/textView2" />
<TextView
android:text="Text"
android:layout_width="239.0dp"
android:layout_height="86.0dp"
android:id="@+id/textView3" />
<Button
android:text="開始采集加速度資料"
android:layout_width="152.0dp"
android:layout_height="wrap_content"
android:id="@+id/button1" />
<Button
android:text="停止采集并存盤加速度資料"
android:layout_width="135.5dp"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:layout_marginRight="0.0dp" />
</LinearLayout>
點擊“開始采集加速度資料”按鈕,將資料顯示在三個textView上;點擊“停止采集并存盤加速度資料”,停止采集,存盤功能留待下一個文章討論,

要點如下:
1、C#用Accelerometer靜態類來采集加速度資料
2、點擊button1的時候,對應click事件中要干的事兒:
(1)Accelerometer.ReadingChanged += Accelerometer_ReadingChanged; // 關聯事件,加速度傳感器資料改變時,通知靜態類Acdelerometer
(2) Accelerometer.Start(SensorSpeed.Default); //開始監聽,監聽速度為括弧中內容,是一個列舉量,
3、對應的事件Accelerometer_ReadingChanged為:
void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
{
tvx.Text ="X軸: "+ e.Reading.Acceleration.X.ToString();
tvy.Text = "Y軸: " +e.Reading.Acceleration.Y.ToString();
tvz.Text = "Z軸: "+e.Reading.Acceleration.Z.ToString();
}
即:把資料顯示出來
4、點擊button2時,停止采集資料
public void button2_clicked(object sender, System.EventArgs args)
{
Accelerometer.Stop();
Accelerometer.ReadingChanged -= Accelerometer_ReadingChanged;
}
其完整的代碼為:
using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;
using Xamarin.Essentials;
namespace App2
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
//下面是三個textview
private TextView tvx;
private TextView tvy;
private TextView tvz;
void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
{
tvx.Text ="X軸: "+ e.Reading.Acceleration.X.ToString();
tvy.Text = "Y軸: " +e.Reading.Acceleration.Y.ToString();
tvz.Text = "Z軸: "+e.Reading.Acceleration.Z.ToString();
}
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
tvx = FindViewById<TextView>(Resource.Id.textView1);
tvy = FindViewById<TextView>(Resource.Id.textView2);
tvz = FindViewById<TextView>(Resource.Id.textView3);
Button btn1, btn2;
btn1= FindViewById<Button>(Resource.Id.button1);
btn1.Click += button1_clicked;
btn2 = FindViewById<Button>(Resource.Id.button2);
btn2.Click += button2_clicked;
}
public void button1_clicked(object sender,System.EventArgs args)
{
// Register for reading changes, be sure to unsubscribe when finished
Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
Accelerometer.Start(SensorSpeed.Default);
}
public void button2_clicked(object sender, System.EventArgs args)
{
Accelerometer.Stop();
Accelerometer.ReadingChanged -= Accelerometer_ReadingChanged;
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}
如果你看過我前面用Java開發的相應程式,
Andoid Studio-android開發04-獲取加速度傳感器資料并顯示在螢屏上
https://blog.csdn.net/weixin_43917370/article/details/107945129
對比代碼量,相同的功能,C#真的是代碼量少很多,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/240561.html
標籤:其他
