• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
手写的从前
博客园    首页    新随笔    联系   管理    订阅  订阅

Windows Phone 十八、加速计

加速度传感器

手机的加速度传感器工作时是通过 x、y、z 三个轴的偏移来计算的

在代码基本的 API 主要集中在 Accelerometer 类型中

主要是使用该类型的对象捕获 ReadingChanged 事件监视加速度值变化的

X、Y、Z 加速度传感值

1     <StackPanel>
2         <TextBox x:Name="txtX" Header="X:"/>
3         <TextBox x:Name="txtY" Header="Y:"/>
4         <TextBox x:Name="txtZ" Header="Z:"/>
5     </StackPanel>
 1         protected override void OnNavigatedTo(NavigationEventArgs e)
 2         {
 3             // 先拿到传感器对象
 4             Accelerometer a = Accelerometer.GetDefault();
 5             if (a == null)
 6             {
 7                 // 代表没有加速计传感器对象
 8                 System.Diagnostics.Debug.WriteLine("没有加速计传感器");
 9                 return;
10             }
11             a.ReadingChanged += a_ReadingChanged;
12             a.ReportInterval = a.MinimumReportInterval * 5;
13         }
14 
15         async void a_ReadingChanged(Accelerometer sender, AccelerometerReadingChangedEventArgs args)
16         {
17             System.Diagnostics.Debug.WriteLine(args + "改变了。。。");
18             // 拿到变化值
19             await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
20             {
21                 txtX.Text = args.Reading.AccelerationX.ToString();
22                 txtY.Text = args.Reading.AccelerationY.ToString();
23                 txtZ.Text = args.Reading.AccelerationZ.ToString();
24             });
25         }

平衡检测

1     <Grid>
2 
3         <Path Data="M180.348,341.493 L144.279,392.488 L162.935,391.244 L161.692,630.05 L200.249,630.05 L196.517,392.488 L216.418,393.731 z" Fill="#FF6AEA00" HorizontalAlignment="Center" Height="289.557" Stretch="Fill" Stroke="Black" UseLayoutRounding="False" VerticalAlignment="Bottom" Width="73.139" RenderTransformOrigin="0.5,1">
4             <Path.RenderTransform>
5                 <CompositeTransform x:Name="rotate" Rotation="0"/>
6             </Path.RenderTransform>
7         </Path>
8 
9     </Grid>
 1         protected override void OnNavigatedTo(NavigationEventArgs e)
 2         {
 3             DisplayInformation.AutoRotationPreferences = DisplayOrientations.Landscape;
 4             // 先拿到传感器对象
 5             Accelerometer a = Accelerometer.GetDefault();
 6             if (a == null)
 7             {
 8                 // 代表没有加速计传感器对象
 9                 System.Diagnostics.Debug.WriteLine("没有加速计传感器");
10                 return;
11             }
12             a.ReadingChanged += a_ReadingChanged;
13             a.ReportInterval = a.MinimumReportInterval * 10;
14         }
15 
16         async void a_ReadingChanged(Accelerometer sender, AccelerometerReadingChangedEventArgs args)
17         {
18             System.Diagnostics.Debug.WriteLine(args + "改变了。。。");
19             // 拿到变化值
20             await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
21             {
22                 rotate.Rotation = args.Reading.AccelerationY * 90;
23             });
24         }

 

posted @ 2015-06-26 01:18  手写从前  阅读(187)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3