WP利用Accelerometer类制作加速度测量器。
2014-07-24 17:24
316 查看
MainPage.xaml中部分代码:
MainPage.cs中部分代码:
建立一个Accelerometer对象accelerometer:
Accelerometer accelerometer;在mainpage的构造函数添加一个applicationBar并为之添加一个控制加速器开关的按钮:
为按钮添加事件处理函数:(强调一下,在老版本中ReadingChanged事件是加速度器数值改变时执行的事件,而新版本已改用CurrentValueChanged事件,因此我用了CurrentValueChanged事件处理)。
void startStopButton_Click(object sender, EventArgs e)
{
// 构造并开始
if (accelerometer == null)
{
accelerometer = new Accelerometer();
//老版本加速度改变事件
//accelerometer.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(accelerometer_ReadingChanged);
//wp8加速度改变事件
accelerometer.CurrentValueChanged += accelerometer_CurrentValueChanged;
try
{
statusTextBlock.Text = "starting accelerometer";
accelerometer.Start();
}
catch (AccelerometerFailedException exception)
{
statusTextBlock.Text = "error starting accelerometer";
}
}
else
{
try
{
accelerometer.Stop();
accelerometer = null;
statusTextBlock.Text = "accelerometer stopped";
}
catch (AccelerometerFailedException exception)
{
statusTextBlock.Text = "error stopping accelerometer";
}
}
}实现委托函数,这里设计到UI线程访问问题,在此不做过多解释。
完成ChangeUI函数(这里记得要引用程序集Microsoft.Xna.Framework):
void ChangeUI(SensorReadingEventArgs<AccelerometerReading> e)
{
if (accelerometer != null)
{
statusTextBlock.Text = accelerometer.State.ToString();
Vector3 v3 = e.SensorReading.Acceleration;
XTextBlock.Text = v3.X.ToString("0.00");
YTextBlock.Text = v3.Y.ToString("0.00");
ZTextBlock.Text = v3.Z.ToString("0.00");
TotalTextBlock.Text = v3.Length().ToString();
}
}
ok,加速度器完成。
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock VerticalAlignment="Top" Text="x:" Name="XLabel" Style="{StaticResource PhoneTextNormalStyle}" Margin="42,124,386,0"></TextBlock> <TextBlock VerticalAlignment="Top" Text=" " Name="XTextBlock" Style="{StaticResource PhoneTextExtraLargeStyle}" Margin="86,100,20,0" Foreground="{StaticResource PhoneAccentBrush}"></TextBlock> <TextBlock VerticalAlignment="Top" Text="y:" Name="YLabel" Style="{StaticResource PhoneTextNormalStyle}" Margin="42,236,386,0"></TextBlock> <TextBlock VerticalAlignment="Top" Text=" " Name="YTextBlock" Style="{StaticResource PhoneTextExtraLargeStyle}" Margin="86,212,52,0" Foreground="{StaticResource PhoneAccentBrush}"></TextBlock> <TextBlock VerticalAlignment="Top" Text="z:" Name="ZLabel" Style="{StaticResource PhoneTextNormalStyle}" Margin="42,332,386,0"></TextBlock> <TextBlock VerticalAlignment="Top" Text=" " Name="ZTextBlock" Style="{StaticResource PhoneTextExtraLargeStyle}" Margin="86,308,54,0" Foreground="{StaticResource PhoneAccentBrush}"></TextBlock> <TextBlock VerticalAlignment="Top" Text="Total:" Name="TotalLabel" Style="{StaticResource PhoneTextNormalStyle}" Margin="24,420,386,0"></TextBlock> <TextBlock VerticalAlignment="Top" Text=" " Name="TotalTextBlock" Style="{StaticResource PhoneTextExtraLargeStyle}" Margin="86,400,54,0" Foreground="{StaticResource PhoneAccentBrush}"></TextBlock> <TextBlock VerticalAlignment="Top" Text="status:" Name="statusLabel" Style="{StaticResource PhoneTextNormalStyle}" Margin="24,11,0,0" HorizontalAlignment="Left" Width="72" /> <TextBlock VerticalAlignment="Top" Text="accelerometer stopped" Name="statusTextBlock" Style="{StaticResource PhoneTextNormalStyle}" Foreground="{StaticResource PhoneAccentBrush}" Margin="102,11,6,0" /> </Grid>
MainPage.cs中部分代码:
建立一个Accelerometer对象accelerometer:
Accelerometer accelerometer;在mainpage的构造函数添加一个applicationBar并为之添加一个控制加速器开关的按钮:
public MainPage() { InitializeComponent(); ApplicationBar = new ApplicationBar(); ApplicationBar.IsVisible = true; ApplicationBarIconButton startStopButton = new ApplicationBarIconButton(new Uri("/Images/startstop.png", UriKind.Relative)); startStopButton.Text = "on/off"; startStopButton.Click += new EventHandler(startStopButton_Click); ApplicationBar.Buttons.Add(startStopButton); }
为按钮添加事件处理函数:(强调一下,在老版本中ReadingChanged事件是加速度器数值改变时执行的事件,而新版本已改用CurrentValueChanged事件,因此我用了CurrentValueChanged事件处理)。
void startStopButton_Click(object sender, EventArgs e)
{
// 构造并开始
if (accelerometer == null)
{
accelerometer = new Accelerometer();
//老版本加速度改变事件
//accelerometer.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(accelerometer_ReadingChanged);
//wp8加速度改变事件
accelerometer.CurrentValueChanged += accelerometer_CurrentValueChanged;
try
{
statusTextBlock.Text = "starting accelerometer";
accelerometer.Start();
}
catch (AccelerometerFailedException exception)
{
statusTextBlock.Text = "error starting accelerometer";
}
}
else
{
try
{
accelerometer.Stop();
accelerometer = null;
statusTextBlock.Text = "accelerometer stopped";
}
catch (AccelerometerFailedException exception)
{
statusTextBlock.Text = "error stopping accelerometer";
}
}
}实现委托函数,这里设计到UI线程访问问题,在此不做过多解释。
void accelerometer_CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e) { Deployment.Current.Dispatcher.BeginInvoke(() => ChangeUI(e)); }
完成ChangeUI函数(这里记得要引用程序集Microsoft.Xna.Framework):
void ChangeUI(SensorReadingEventArgs<AccelerometerReading> e)
{
if (accelerometer != null)
{
statusTextBlock.Text = accelerometer.State.ToString();
Vector3 v3 = e.SensorReading.Acceleration;
XTextBlock.Text = v3.X.ToString("0.00");
YTextBlock.Text = v3.Y.ToString("0.00");
ZTextBlock.Text = v3.Z.ToString("0.00");
TotalTextBlock.Text = v3.Length().ToString();
}
}
ok,加速度器完成。
相关文章推荐
- 利用Installshield6.22制作卸载快捷方式
- 利用HTML5的canvas制作万花筒动画特效
- asp.net利用.net控件实现下拉导航菜单的制作
- 利用FbinstTool+大白菜u盘工具,制作多系统启动U盘【转】
- 利用css3-animation来制作逐帧动画
- 制作wp主题遇到问题汇总
- 利用百度apistore的身份证查询API制作的身份证信息查询工具
- 【PS】利用滤镜制作巧克力效果
- 在Inno Setup制作的安装包中利用Pascal脚本检查安装,卸载前检查程序是否已经启动 [转载]
- java入门实例之小试牛刀--利用Scanner制作个人简历
- 利用before after伪类 制作凹感的直线
- 利用LLVM,Clang制作自己的编译器
- 利用PPT,10秒制作公众号头
- 闪刀浪子教你利用JSFL制作swf素材包[转]
- 利用ASP.NET(C#)来制作页面进度条效果
- 利用UltraISO制作Ubuntu U盘版
- 利用 Global mapper制作地图瓦片
- 利用asp.net制作登录页面
- 如何利用git制作和提交patch
- 利用Javascript制作网页特效(窗口特效)