iphone programozás alapjai IV Gyakorlat
A mai előadás témái I Térképek és pozíció MKMapView GPS pozíció lekérése II Kamera kép kezelése III Gyorsulás érzékelő IV Push Notification
I Térképek és Pozíció
MKMapView A térkép kezelést a MapKit framework tartalmazza IB-ben találjuk az MKMapView osztályt, amely egy google maps megvalósítás Kezeli magától a mozgatást, érintést be lehet állítani, hogy mutassa a pozíciót Hívások a mozgatásra: [mapview setcentercoordinate:coord animated:yes] [mapview setregion:region animated:yes]
Annotációk Térképre elhelyezett pontok, vonalak, tűk Automatikusan mozog a térképpel Alapvetően MKAnnotation megvalósítással és MKAnnotationView származtatott osztályokkal dolgozunk Opcionálisan elhelyezhetünk calloutokat Legegyszerűbb megvalósítás CLLocationCoordinate2D coord; coordlatitude=475; coordlongitude=1905; MKPointAnnotation* annotation=[[mkpointannotation alloc] init]; annotationcoordinate=coord; [mapview addannotation:annotation]; További térkép infók: http://mithinin/2009/06/22/using-iphone-sdkmapkit-framework-a-tutorial
GPS kezelése CoreLocation Framework szükséges hozzá Használata nagyon egyszerű, inicializálás után delegate hívás, amint rendelkezésre áll adat, új adat esetén automatikusan hív Érzékenysége beállítható, irányt is visszaad locationmanager = [[[CLLocationManager alloc] init] autorelease]; locationmanagerdelegate = self; // send loc updates to myself - (void)locationmanager:(cllocationmanager *)manager didupdatetolocation: (CLLocation *)newlocation fromlocation:(cllocation *)oldlocation További GPS infók: http://mobileorchardcom/hello-there-acorelocation-tutorial/
II Kamera kép
Kamera elérése Kép készítése és feldolgozása UIImagePickerController UIImagePickerController *imagepicker = [[UIImagePickerController alloc] init]; imagepickersourcetype = UIImagePickerControllerSourceTypeCamera; imagepickerdelegate = self; imagepickerallowsimageediting = NO; [self presentmodalviewcontroller:imagepicker animated:yes]; - (void) imagepickercontroller:(uiimagepickercontroller *)picker didfinishpickingmediawithinfo:(nsdictionary *)info { További kamera infók: http://iphonezcentriccom/2008/08/28/ using-a-uiimagepickercontroller/
Folyamatos képrögzítés Alapból így egyszerre csak 1 kép Szerencsére a képrögzítés kívülről vezérelhető showcameracontrols property-t NO-ra kell állítani Ezután takepicture hívásra készül el a kép és hívja a delegatet Egyszerre csak 1 futhat További kamera infók: http://developerapplecom/library/ios/ #documentation/uikit/reference/uiimagepickercontroller_class/ UIImagePickerController/UIImagePickerControllerhtml
Kép kinyerése Ahhoz, hogy a képet feldolgozzuk szükség van a pontokra Ehhez a képet át kell alakítanunk megfelelő formára Kicsit összetett, de a következő linken van hozzá forráskód: https://gistgithubcom/739132 Ha OpenCV-t akarunk használni, akkor a következő linken van fordítás és kép átalakítás is: http://niwat/articles/2009/03/14/using-opencv-on-iphone/en
III Gyorsulás érzékelő
Accelerometer kezelése Hasonló elven működik mint a GPS Beállítható frissítési intervallummal rendelkezik UIAccelerometer *accelerometer = [UIAccelerometer sharedaccelerometer]; accelerometerdelegate = self; -(void)accelerometer:(uiaccelerometer *)accelerometer didaccelerate:(uiacceleration *)acceleration{ További infók: http://wwwedumobileorg/iphone/iphoneprogramming-tutorials/how-to-use-accelerometer-in-iphone/
III Notifications
PUSH NOTIFICATION
Push Notification Megoldás a felhasználó elérésére, amikor nem fut az alkalmazás Központi szolgáltatás, Apple szerver: APNS Perzisztens TCP csatorna alapú kommunikáció, minimalizált akku fogyasztás Nem indíthatja el az alkalmazást csak figyelmeztetés után Összetett architektúra, mindenképpen speciális szerver kell hozzá Megoldás: Local Notification, adott időpontban jön fel További infók: http://developerapplecom/library/ios/ #DOCUMENTATION/NetworkingInternet/Conceptual/ RemoteNotificationsPG/Introduction/Introductionhtml
Köszönöm a figyelmet! Sallai Péter petersallai@pontehu