Windows Phone 7 에 보면 Accelerometer 라는 센서가 존재 하는 데요.
이번에는 이 센서를 사용 하는 방법에 대해서 적어 보겠습니다.
우선 필요한 dll을 추가 해야 하는데요. 필요한 dll은 위에 보시는 것처럼
“Microsoft.Devieces.Sensors.dll”
입니다.
추가 해주신 dll 안에는 다음과 같은 내용물 들이 들어 있습니다.
그리고 간단한 샘플을 보여 드리도록 하겠습니다.
우선 In Xaml
<Grid x:Name="LayoutRoot" Background="Transparent">
<Rectangle x:Name="rect" Fill="Red"
HorizontalAlignment="Center" Height="10" Stroke="Black" VerticalAlignment="Center" Width="10"
RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<CompositeTransform x:Name="compositeTransform"/>
</Rectangle.RenderTransform>
</Rectangle>
</Grid>
간단히 빨간색 사각형을 하나 추가 해 주었구요. 사각형의 CompositeTransform 에 이름을 줬습니다.
그리고
In CS
#region Members
/// <summary>
/// 현재 Accelerometer가 활성화 중인지 여부
/// </summary>
bool _isAccelActive;
/// <summary>
/// 읽어 들인 Accelerometer의 값을 저장
/// </summary>
private Point
_accelReading;
#endregion Members
#region Constructors
/// <summary>
/// 기본 생성자
/// </summary>
public MainPage()
{
InitializeComponent();
Init();
SetAccelerometer();
}
#endregion Constructors
#region Methods
/// <summary>
/// 초기화
/// </summary>
private void Init()
{
_isAccelActive = false;
_accelReading = new Point();
}
/// <summary>
/// Accelerometer 설정
/// </summary>
private void
SetAccelerometer()
{
Accelerometer accelerometer = new Accelerometer();
try
{
//시작
accelerometer.Start();
//활성화
_isAccelActive = true;
}
catch (AccelerometerFailedException
ex)
{
_isAccelActive = false;
MessageBox.Show(ex.Message);
}
catch (UnauthorizedAccessException
ex)
{
_isAccelActive = false;
MessageBox.Show(ex.Message);
}
}
#endregion Methods
#region EventHandlers
void accelerometer_ReadingChanged(object sender, AccelerometerReadingEventArgs
e)
{
//활성화 상태가 아니라면 쀍
if (_isAccelActive == false)
return;
//값을 저장
_accelReading.X = e.X;
_accelReading.Y = e.Y;
Dispatcher.BeginInvoke(() =>
{
//화면의 사각형을 움직여 준다.
compositeTransform.TranslateX += _accelReading.X * 3;
compositeTransform.TranslateY -= _accelReading.Y * 3;
});
}
#endregion EventHandlers
간단하게 Accelerometer을 하나 추가 하고 ReadingChanged 이벤트를 받아서 사각형의 CompositeTransform 을 움직여 주는 코드 입니다.
간단하니 좋네용 :-D