Tag: Accelerometer

WP7 – nie tylko Shake

Nowy emulator dla Windows Phone dostarcza możliwość testowania aplikacji wykorzystujących akcelerometr. Okazuje się, że możemy przy jego pomocy uruchamiać sekwencje zmian wektora grawitacji, co pozwala uprościć proces testowania. Jak to zrobić?

W dodatkowym panelu emulatora w zakładce Accelerometer mamy dostęp do sekcji Recorded Data.

Domyślnie zawiera ona jedną możliwą wartość i nazwie Shake. Jest to predefiniowany zestaw danych, które są przetwarzane i przesyłane do naszej aplikacji podczas uruchomienia na emulatorze. Co jednak zrobić jeżeli chcemy wykorzystać inne dane? Należy udać się do katalogu C:\Program Files (x86)\Microsoft XDE\1.0\sensordata\acc, w którym znajduje się plik Shake. Jest to zwykły plik XML, którego najważniejsza zawartość sprowadza się do elementów AccData. Przykład takiego elementu widoczny jest poniżej:

1
<AccData offset="2185" x="00.45899999" y="-00.69300002" z="-00.49500000" />

Znaczenie atrybutów X, Y i Z jest dość oczywiste, natomiast atrybut offset określa w którym momencie ma zostać uruchomiony dany wiersz danych – jednostką miary jest tu milisekunda. W związku z tym tworzymy nowy plik (najwygodniej metodą copy’ego paste’a :) ) i edytujemy zawarte w nim dane. W rezultacie na liście wyboru pojawiają się kolejne opcje:


WP7 Accelerometer Emulator April Update

W grudniu opublikowałem post na temat mojego projektu Windows Phone 7 Accelerometer Emulator. Niedawno ponownie zasiadłem do kodu emulatora i dodałem jedną z możliwości, którą zapowiadałem.

Nagrywanie sekwencji użytkownika.

Wyobraźmy sobie sytuację, w której piszemy jakiś kawałek kodu, który ma się zachować w określony sposób przy danej sekwencji ruchów, jaką wykona użytkownik telefonu. Do tej pory jeżeli korzystaliście z mojego projektu trzeba było wykonywać te sekwencje samemu przy każdym teście. Teraz to się zmieniło. Wystarczy raz nagrać taką sekwencję, a następnie przy kolejnych testach można ją odtworzyć. Jeżeli chcemy skorzystać z aktualnej sekwencji w późniejszych testach, wystarczy zapisać sekwencję do pliku XML. Po ponownym rozpoczęciu pracy wczytać do emulatora plik z zapisem sekwencji. Eksport ten daje również możliwość testowania przez kilku programistów tej samej sekwencji poprzez zwykłą wymianę pliku symulacji.

WP7 Accelerometer Emulator Recording Panel

Użycie:
1 – przycisk Start
2 – wykonujemy sekwencję
3 – przycisk Stop
4 – aby odtworzyć wybieramy Play
5 – aby zatrzymać sekwencję w dowolnym momencie klikamy Stop
6 – jeżeli chcemy zachować sekwencję testową wybieramy Save
7 – aby wczytać wcześniej przygotowaną sekwencję wybieramy Load.
W razie gdyby w sekwencji coś poszło nie tak (wykonaliśmy nie ten ruch, który zamierzaliśmy), można wyczyścić zgromaczone dane przy pomocy przycisku Clear.

Jeszcze może słowo na temat opcji Limit – ograniczamy w ten sposób ilość zapamiętanych przez program stanów, dzięki czemu nie będzie sytuacji, w której po rozpoczęciu nagrania aplikacja zacznie pochłaniać pamięć. Wstępnie ustawiłem maksymalną wartość na 500, co daje nam ok 50s sekwencji – moim zdaniem dużo :)

WP7Accelerometer Emulator April Update

Paczka ze źródłami


Windows Phone 7 Accelerometer Emulator

Windows Phone 7 Accelerometer Emulator
W dziale projektów dodałem najnowszy projekt, który ma na celu ułatwienie tworzenia aplikacji opartych o akcelerometr. Jak wiadomo emulator WP7 nie wspiera takiej funkcjonalności, dlatego postanowiłem przygotować odpowiedni projekt, który pozwala uporać się z tym problemem bez wykorzystania dodatkowych urządeń.

Aby z niego skorzystać wystarczy dosłownie kilka linijek kodu:

1
2
3
4
5
6
7
8
9
10
11
var acc = new WP7AccelerometerProvider();
acc.ReadingChanged += OnAccelerometerProviderReadingChanged;
 
try
{
    acc.Start();
}
catch (Exception exc)
{
    //txtblk.Text = exc.Message;
}

oraz obsłużenie pojawienia się nowych informacji:

1
2
3
4
5
private void OnAccelerometerProviderReadingChanged(object sender, WP7AccelerometerReadingEventArgs args)
{
    //do what you want with data
    ProcessAccelerometerData(args.X, args.Y, args.Z, args.Timestamp);
}

Przykładowy screen wykorzystania emulatora:

WP7 Accelerometer Emulator UI

Jest to pierwsza wersja emulatora, jednakże w wolnym czasie będę starał się ją rozwijać o czym możecie przeczytać na stronach:

Strona projektu w języku polskim
Strona projektu w języku angielskim


  • O mnie

    Maciej Grabek

    Moje profile na:

    MVP

    Codeguru.pl GoldenLine
    Twitter CodeProject

  • english version
  • Polecam

  • Copyright © Maciej Grabek. All rights reserved.
    Powered by WordPress
    %d bloggers like this: