• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#011 – Rileviamo i movimenti dell’iPhone

By Redazione | on 23 Novembre 2009 | 7 Comments
Senza categoria

t011_IS Oggi vedremo come rilevare, grazie all’accelerometro integrato in ogni dispositivo, il movimento del nostro iPhone. I dati che andremo a leggere sono quelli riferiti ai 3 assi principali x, y e z dell’iPhone, che combinati insieme ci permettono di controllare l’esatto orientamento del nostro dispositivo nello spazio. Questo può tornare utile per un’infinità di diverse applicazioni, ad esempio come metodo di controllo per i videogiochi, alternativo ai classici tasti di un gamepad tradizionale. Potremo in questo modo controllare ad esempio lo sterzo di una macchina tramite gesti naturali o variare l’inclinazione di un piano dove può liberamente muoversi una pallina facendole evitare eventuali ostacoli.

Con questo tutorial ci limiteremo però a mostrare tramite 3 UILabel, i valori letti e a controllare l’attributo “progress” di tre oggetti di tipo “UIProgressView”. Di seguito uno schema degli assi di rotazione dell’iPhone:


assi_iPhone

Iniziamo con il nostro tutorial. Apriamo Xcode, creiamo un nuovo progetto e dall’elenco dei template disponibili scegliamo “View-based Application”. Diamo un nome alla nostra applicazione, ad esempio “myAccel”, scegliamo dove salvare il progetto e andiamo avanti.

Apriamo il file “myAccelViewController.h” e inseriamo il seguente codice:

#import 

@interface myAccelViewController : UIViewController {
	IBOutlet UILabel *xLabel;
	IBOutlet UILabel *yLabel;
	IBOutlet UILabel *zLabel;
	
	IBOutlet UIProgressView *xProgress;
	IBOutlet UIProgressView *yProgress;
	IBOutlet UIProgressView *zProgress;
}

@property (nonatomic, retain) IBOutlet UILabel *xLabel;
@property (nonatomic, retain) IBOutlet UILabel *yLabel;
@property (nonatomic, retain) IBOutlet UILabel *zLabel;

@property (nonatomic, retain) IBOutlet UIProgressView *xProgress;
@property (nonatomic, retain) IBOutlet UIProgressView *yProgress;
@property (nonatomic, retain) IBOutlet UIProgressView *zProgress;

@end

Come vedete abbiamo innanzitutto aggiunto il protocollo “UIAccelerometerDelegate”, dopodichè abbiamo dichiarato sei oggetti IBOutlet, tre di tipo UILabel e tre di tipo UIProgressView. Collegheremo questi oggetti ai rispettivi che andremo a disegnare tramite Interface Builder. Abbiamo inoltre dichiarato le “property” di questi sei oggetti, in modo da poter utilizzare tranquillamente tutte le proprietà e i metodi dei nostri oggetti nel resto del programma.

Salviamo, apriamo il file “myAccelViewController.m” e iniziamo a scrivere il codice vero e proprio che farà funzionare il nostro programma. Iniziamo a scrivere la seguente riga di codice:

@synthesize xLabel, yLabel, zLabel, xProgress, yProgress, zProgress;

Grazie a questa istruzione potremo usare tutte le “caratteristiche” offerte dagli oggetti dichiarati nel file di intestazione. Togliamo i caratteri che commentano il metodo “viewDidLoad” e modifichiamolo come segue:

- (void)viewDidLoad {
    [super viewDidLoad];
    [[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0f/15.0f)];
    [[UIAccelerometer sharedAccelerometer] setDelegate:self
}

Così facendo non facciamo altro che impostare l’intervallo di tempo tra una rilevazione di un movimento e un’altra e settare il delegato dell’accelerometro a “self”. Ora non resta che implementare il codice che ad ogni lettura di dati dall’accelerometro, mostri il valore letto nelle etichette x, y e z e imposti inoltre tale valore nella proprietà “progress” delle “UIProgressView” in modo da avere un ritorno visivo del movimento rilevato.

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{
	xLabel.text = [[NSString alloc] initWithFormat:@"%f", acceleration.x];
	yLabel.text = [[NSString alloc] initWithFormat:@"%f", acceleration.y];
	zLabel.text = [[NSString alloc] initWithFormat:@"%f", acceleration.z];
	
	xProgress.progress = ABS(acceleration.x);
	yProgress.progress = ABS(acceleration.y);
	zProgress.progress = ABS(acceleration.z);
}

Con il codice abbiamo terminato, possiamo quindi salvare e aprire Interface Builder per disegnare l’interfaccia grafica facendo doppio-click sul file “myAccelViewController.xib”. Trasciniamo nella vista 3 UILabel che useremo come etichette, modificando la loro proprietà “Text” in “X:”, “Y:” e “Z:”. Inseriamo quindi nella view altre 3 UILabel e 3 UIProgressView. Clicchiamo su “File’s Owner” e tramite la finestra “My Accel View Controller Connections” effettuiamo i rispettivi collegamenti tra questi ultimi 6 oggetti e i rispettivi creati tramite Xcode.

Dovreste ottenere una vista simile alla seguente:


t011_IB

Potete salvare e chiudere Interface Builder. Da Xcode clicchiamo su “Build and Run” e testiamo la nostra applicazione. Per poter rilevare i movimenti occorrerà installare l’applicazione sul vostro dispositivo in quanto, le ovvie limitazione dell’iPhone Simulator, non permettono la rilevazione di movimenti. In basso uno screenshot dell’applicazione in esecuzione:


t011_IS

Share this story:
  • tweet

Tags: accelerometroObjective-cprogrammazionesdkTutorial PraticiuiprogressviewXcode

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • Microservizi per logiche applicative di grandi dimensioni

    27 Luglio 2016 - 0 Comment
  • Con Xcode 6.3 arriva il Crash Log Organizer

    26 Febbraio 2015 - 0 Comment
  • Xcode-project-generator: uno script per creare velocemente progetti Xcode

    21 Ottobre 2014 - 1 Comment

Author Description

7 Responses to “T#011 – Rileviamo i movimenti dell’iPhone”

  1. 23 Novembre 2009

    Tweets that mention T#011 – Rileviamo i movimenti dell’iPhone | devAPP -- Topsy.com

    […] This post was mentioned on Twitter by Rino Picardi, devAPP. devAPP said: Nuovo tutorial online "Rileviamo i movimenti dell’iPhone" http://www.devapp.it/wordpress/t011-rileviamo-i-movimenti-delliphone.html […]

  2. 26 Novembre 2009

    pippoman

    bestiale

  3. 5 Giugno 2010

    Placebo

    ma il simulatore ha l’opzione “gesto Agita” da “Hardware,
    solo ke non capisco come si fa la combinazione, in particolare il ^ !
    la combo è:
    ^ (cmd) Z

  4. 21 Agosto 2010

    Filippo

    Salve, complimenti per l’ottimo tutorial!
    Volevo chiedere se per caso esiste il modo di monitorare lo spostamento relativo del device rispetto ad una posizione di partenza (o di riferimento). Mi spiego meglio, sarebbe possibile, ad esempio, usare l’iphone per descrivere una circonferenza (col gesto) e rilevare tale spostamento (per esempio visualizzando tale circonferenza sul monitor del device)?
    Sarei molto felice se qualcuno potesse darmi una mano magari pubblicando uno dei vostri magnifici tutorial.

    grazie, Filippo

  5. 20 Maggio 2011

    sterzosmanettone

    ciao cortesemente puoi inserire i codici sempre se è possibile grazie

  6. 28 Maggio 2011

    Bloggo » Blog Archive » Iphone rilevare movimenti con accelerometro

    […] Link al tutorial: http://www.devapp.it/wordpress/t011-rileviamo-i-movimenti-delliphone.html […]

  7. 27 Agosto 2011

    Pier Angelo

    interessante,
    ma qualcuno mi può spiegare come usare l’accelerometro per eseguire dei suoni?

    graziePier Angelo

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO