Documente Academic
Documente Profesional
Documente Cultură
VIDEO-AUDIO
NREGISTRATOR(COMPARTIMENTELE: MAP,
VIDEO,SETRI MAP, SETRI VIDEO)
Practica tehhnologic
Student:
______________________________
________________________________(Sv. Cojocaru )
Chiinu 2016
Cuprins
Introducere................................................................................................................................................................. 3
1 Analiza domeniului de studiu..................................................................................................................................4
1.1 Indicaii teoretice..................................................................................................................................................6
1.2 Cerine funcionale...............................................................................................................................................6
2 Modelarea i proiectarea sistemul informatic..........................................................................................................8
2.1 Digrama cazurilor de utilizare..............................................................................................................................9
2.2 Diagrama de secven.........................................................................................................................................11
2.3 Diagram de colaborare........................................................................................................................................12
2.4 Diagrama de activitate........................................................................................................................................14
2.5 Diagrama de clase...............................................................................................................................................15
2.6 Diagrama de Componente...................................................................................................................................17
3 Realizarea sistemului............................................................................................................................................19
3.1 Instrumente.........................................................................................................................................................19
3.2 Executarea aplicatiei.........................................................................................................................................22
3.2 Componente aplicatiei........................................................................................................................................25
4 Documentarea produsului realizat.........................................................................................................................33
4. 1 Componentele categoriei Maps........................................................................................................................33
4.2 Componentele categoriei Video........................................................................................................................35
Descrierea componentelor categoriei VIDEO:........................................................................................................35
4. 3 Componentele categoriei More........................................................................................................................36
4.4 Componenta categoriei MORE - setri map.....................................................................................................37
4.5 Componenta categoriei MORE setri Video...................................................................................................38
Concluzii.................................................................................................................................................................. 41
Bibliografie............................................................................................................................................................... 42
Anexa A(Codul surs)..............................................................................................................................................43
Introducere
Analizinid situatia rutiera la momentu actual, ajungem la concluzia: cei care dispun de un
automobil au nevoie s inregisteze situatia rutiera la momentul deplasarii dintr-un punct in altul.
Pentru a indeplini acesta cerinta, putem gasi o oferta larga a astfel de produse, care se numesc
Video-Registratoare, insa acestea sunt foarte costisitoare .
La rezolvarea acestei dileme este propusa crearea unui soft ce va indeplini aceleas functionalitati
cu ajutorul telefonului mobil.
Majoritatea dintre noi detine un astfel de gadget performant, care ne permite un larg de functiuni
si posibilitati.
Produsul realizat este un program cu ajutorul caruia se efectuiaza Video-Audio inregistrare care
ajuta la monitorizarea transportului.Acest produs trebuie sa cotina un fuctional larg, care sa ne permita
indeplinirea operatiilor necesare pentru monitorizarea fuxului si statisticii rutier.
Sistemul GPS Video-Audio registrator reprezint o totalitate de tehnici de colectare, prelucrare i
sistematizarea a statisticii rutiere.
Prin crearea Programului
Abreviere/Acronim
1
2
3
4
5
6
7
8
9
VAR
Km/h
Mp/h
IDE
Max
App
TI
3D
2D
Descriere
Video-Audio nregistrator
Kilometru pe or
Mile pe or
Integrated Development Environment
Maximum
Application (Aplicatie)
Tehnologie informaional
Spaiul tridimensional
Spaiu bidimensional
Aici urmrim acronimele i abrevierile care sunt utilizate n document i explicate n tabelul 1.2.
Termen
Definiie
Video
Audio
nregistrator
5
6
10
11
Distance
Viteza medie este raportul dintre distanta parcursa si timpul in care s-a
parcurs aceasta distanta.
speed
Average
Viteza medie este raportul dintre distanta parcursa si timpul in care s-a
parcurs aceasta distanta.
12
Altitude
13
Satelite
oamenilor in monitorizarea traficului rutier . Se cere ca programul s poat efectua opera iile de
inregistrare
Elementele sunt abstraciuni care reprezint piesele fundamentale ntr-un model. La rndul lor se
mpart n: elemente structurale, elemente comportamentale, elemente de adnotare i elemente de grupare.
Relaiile sunt abstraciuni ce leag elementele ntre ele. O relaie este o conexiune ntre elemente.
n modelarea orientat obiect, exist patru tipuri de relaii: dependente, generalizri, asocieri i realizri.
Diagramele sunt prezentri grafice ale unui set de elemente, cel mai adesea exprimate ca un graf
de noduri (elementele) i arce (relaiile). Regulile stabilesc cum trebuie grupate blocurile constructive.
Exista reguli detaliate pentru definirea modelelor bine formate. Sunt admise ns i modele mai
puin dect bine formate, n sensul ca se pot admite i modele cu elemente ascunse, modele incomplete
sau modele inconsistente, cel puin pentru iteraiile preliminare ale procesului de dezvoltare .
n ce privete generarea de cod Enterprise Architect, acesta ofer posibilitatea proiectantului de
aplicaii s genereze cod din modelul realizat folosind una dintre metodele amintite mai sus. Generarea de
cod se realizeaz doar la nivelul diagramelor de clas, i deci se genereaz doar abloane. Astfel, pentru
fiecare clas din model se vor genera fiiere cu extensia ".cs", n care vor fi incluse declara ia clasei,
declaraiile tuturor variabilelor i funciilor membru existente n model precum i declaraii de variabile
membru corespunztoare tuturor asociaiilor i agregrilor care implic clasa respectiv [2].
selectare setari.
Selectare istorie.
11
descrierea logicii metodelor diagramele de secvene pot fi folosite pentru a descrie logica
de funcionare a funciilor sau proceselor complexe;
descrierea logicii unui serviciu sau proces pentru a implementa o funcie complex la
nivelul sistemului este nevoie ca dou sau mai multe componente s interacioneze,
diagramele de secvene permit reprezentarea fluxurilor de mesaje ntre componentele
sistemului, evideniind i constrngerile temporare (ordine de execuie, durate de execuie,
termene limit).
Aceast diagram reprezint setul de aciuni ce descriu transferul de informa ii intre obiecte n
timp, n urma crora userul beneficiaz de opiunea de a fi acceseata harta.
Diagrama reprezint
13
14
15
16
17
Urmtoarele diagrame din figura 2.7 i figura 2.8 reprezint rela ia dintre principalele clase ale
sistemului modelat. Clasa Video care contine inscrierea Video-Audio contentului .
n clasele MAPS sunt aratate functiunile stard si end a inregistrarii Vide-Audio contentului .
Relaiile dintre clase este de asociere, fiind descrise i rolurile fiecreia dintre ele, precum i
multitudinea existent.
19
aceste
componente. Componentele
fizice
includ si
n ea librrii, tabele, fiiere, fiierele executabile i documentele care fac parte din sistemul este
plasat.
Una dintre utilizrile principale este c acesta poate fi folosit pentru a vedea care componentele
pot fi partajate ntre sisteme sau ntre diferite pri ale unui sistem.
21
3 Realizarea sistemului
Softul care urmeaz a fi descris mai jos este un instrument cu ajutorul cruia persoanele de rind
economisesc timp i bani ctignd n eficacitate totodat. Pe lng aceste argumente forte, aplica ia este
un instrument care poate lucra autonom, cerndu-se de la utilizator minimul necesar pentru ca softul sa
ruleze, si sa ofere rezultatele necesare la momentul dat.
Pentru a realiza acest proiect pe baza planurilor la stadiu de proiectare este necesar de ales cu
atenie instrumentele corecte i efective. Ca rezultat au fost alese cteva instrumente care permit
realizarea proiectului n timp i calitativ.
3.1 Instrumente
Pentru crearea unui soft la momentul actual este necesar de un sir de intrumente, care ne
permit indeplinirea scopului stabilit. Mai jos sunt enumerate intrumentele minim necesare:
calculator;
IDE (XCode);
alegerea limbajului de programare (Objectiv-C);
dispozitiv de testare (Iphone, (Ipod,Ipad)).
Un calculator ( figura 3.1), numit i sistem de calcul, computer sau ordinator, este o main de
prelucrat date i informaii conform unei liste de instruciuni numit program. n zilele noastre
calculatoarele se construiesc n mare majoritate din componente electronice i de aceea cuvntul
calculator nseamn de obicei un calculator electronic.
Calculatoarele care sunt programabile liber i pot, cel puin n principiu, prelucra orice fel de date
sau informaii se numesc universale (englez general purpose, pentru scopuri generale). Calculatoarele
actuale nu sunt doar maini de prelucrat informaii, ci i dispozitive care faciliteaz comunicaia ntre doi
sau mai muli utilizatori, de exemplu sub form de numere, text, imagini, sunet sau video sau chiar toate
deodat
(multimedia).
tiina
prelucrrii
informaiilor
cu
ajutorul
calculatoarelor
se
numete informatic (englez Computer Science). Tehnologia necesar pentru folosirea lor poart numele
Tehnologia Informaiei, prescurtat TI sau IT (de la termenul englezesc Information Technology) .
n principiu, orice calculator care deine un anumit set minimum de funcii (altfel spus, care poate
emula o main Turing) poate ndeplini funciile oricrui alt asemenea calculator, indiferent c este vorba
de un PDA sau de un supercalculator. Aceast versatilitate a condus la folosirea calculatoarelor cu
22
arhitecturi asemntoare pentru cele mai diverse activiti, de la calculul salarizrii personalului unei
companii pn la controlul roboilor industriali sau medicali (calculatoare universale).
23
24
25
.
Figura 3.5 New Project
Poduct Name este ceea cum se va numi proiectul. Si in continuare vom putea seta numele
aplicaiei care va fi afiat sub pictograma aplicaiei mai trziu.
Organization Name reprezinta nume companiei din care facem parte, si atunci chind completam
rubrica data , se completeaza automat si rubrica Bundle Identifier.
Bundle Identifier este un indentificator unic pentru aplicatia noastra si de obicei are unrmatorul
format: com.organization_name.product_name
In rubric Devices alegem tipul de dispozitiv pentru care noi dorim sa creem aplicatia. Si dupa
selectarea dispozitivului, facem clic pe Next pentru a alege locul salvarii proectului.
Fisierele noului proiect Xcode
Sa vedem ce fisiere au fost crate in mod omplicitit:
n figura 3.6 vedem fisierele AppDelegate.h si AppDelegate.m, acestea impreuna formeaza o
clasa. Ok, deci avem o clas numit AppDelegate, dar cu toate acestea, nu este ca o clas normal pe care
o definim i creem o instana ale acesteia.
Clasa AppDelegate este punctul de intrare pentru aplicaia dumneavoastr. Tot ce facem cu
adevrat n AppDelegate,adugam un cod personalizat (dac avem nevoie) la anumite evenimente, cum ar
la pornirea aplicaiei, cind o inchidem , o trimitem pe fundal sau cind revine pe prim-plan.
26
27
28
Din rubrica componente a aplicatiei fac parte MAPS, VIDEO, SPEED, BORD COMPUTER si
MORE.
Clasa Hart
Acesta clasa raspunde pentru: conectarea cu serverul google pentru a incarca harta, crearea
marsutul pe care ne vom misca, distribuierea unui screenshot sau a coordonatelor marsutului pe retelele
sociale(Facebook, Twitter, ) precum i E-mail, sau salvarea in galereia proprie a dispozitivului.
pragma mark - GPS MAP methods
- (IBAction)startBt
{
drawRoutePath = [GMSMutablePath path];
passedDist = 0;
passedTime = 0;
startTime = [NSDate date];
[self chooseMapButton:2];
[self startLocationManager];
[self setSimpleWebViewText:@"Started!"];
[mapViewGMS animateToZoom:17];
if (internet.isReachable){
locationIndex = 0;
conexion = YES;
noNet = NO;
}else{
polyline.map = nil;
_arrowToRouteView.hidden = NO;
conexion = NO;
noNet = YES;
}
}
- (IBAction)stopBt
{
[self chooseMapButton:3];
countUpdates = 0;
_arrowToRouteView.hidden = YES;
[locationManager stopUpdatingLocation];
if (noNet) {
GMSMutablePath xline = [GMSMutablePath path];
[line addCoordinate:startPin.position];
[line addCoordinate:endPin.position];
[self addPolyline:line line:YES];
[self setMapBoundsWith:line];
[self setSimpleWebViewText:@"Stopped!"];
}else{
NSMutableDictionary xdict = [userDefaults objectForKey:@"tempDictToSave"];
[self showRoute:dict];
if ([[utils getLocalLanguage]isEqualToString:@"en"])
[self performSelectorInBackground:@selector(speak:) withObject:@"Stopped"];
shareBt.hidden = NO;
routeInfoView.frame = CGRectMake(shareBt.frame.size.width+5, 0,
startButton.frame.origin.x-shareBt.frame.size.width 10,
mapMainMenu.frame.size.height);
routeInfoWebView.frame = CGRectMake(0, 0, routeInfoView.frame.size.width,
routeInfoView.frame.size.height);
}
startPin = [self setStartEndFlagsMarker:startFlagLocation.coordinate
flag:@"directionsPin"];
startPin.groundAnchor = CGPointMake(0.5, 0.5);
}
- (IBAction)cancelInsideMap
{
[self hideSubmenus:@"13"];
29
[self showSubmenus:@"2"];
[mapViewGMS clear];
[self cancelInputData];
tapDir = YES;
animatedX = YES;
[self setCurrentStart];
shareBt.hidden = YES;
routeInfoView.frame = CGRectMake(5, 0, startButton.frame.origin.x-5,
mapMainMenu.frame.size.height);
if ([userDefaults objectForKey:@"tempDictToSave"] != nil)
[self saveRouteToHistoryFile];
else
NSLog(@"temp dict for save nil");
noNet = NO;
_arrowToRouteView.hidden = YES;
[self chooseMapButton:1];
[drawRoutePath removeAllCoordinates];
drawRoutePath = nil;
[userDefaults removeObjectForKey:@"tempDictToSave"];
}
#pragma mark - Stop methods
-(void)saveRouteToHistoryFile
{
NSMutableArray xtempArrayForSave = [utils readFromFile:historyPath];
NSMutableDictionary xtempDictForSave = [[NSMutableDictionary alloc]initWithDictionary:
[userDefaults objectForKey:@"tempDictToSave"]];
NSDate xcurrDate = [NSDate date];
NSDateFormatter xdateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd.MM.YYYY HH:mm"];
NSString xdateString = [dateFormatter stringFromDate:currDate];
[tempDictForSave setObject:dateString forKey:@"time"];
if (!tempArrayForSave) {
tempArrayForSave = [[NSMutableArray alloc]initWithObjects:tempDictForSave, nil];
[utils saveArray:tempArrayForSave toFile:historyPath];
}else{
[tempArrayForSave insertObject:tempDictForSave atIndex:0];
[utils reSaveArray:tempArrayForSave toFile:historyPath];
}
[tempArrayForSave removeAllObjects];
tempArrayForSave = nil;
}
30
31
}else{
if ([[userDefaults objectForKey:@"units"] isEqualToString:@"metric"]) {
// metric selected
[metricUnits setImage:[UIImage imageNamed:@"selMetPad"]
forState:UIControlStateNormal];
[imperialUnits setImage:[UIImage imageNamed:@"impPad"]
forState:UIControlStateNormal];
}else {
// imperial selected
[metricUnits setImage:[UIImage imageNamed:@"metPAd"]
forState:UIControlStateNormal];
[imperialUnits setImage:[UIImage imageNamed:@"selImpPad"]
forState:UIControlStateNormal];
}
}
}
- (IBAction)mapChange:(UIButton x)bt
{
if (bt.tag == 1) {
[userDefaults setObject:[NSNumber numberWithInt:kGMSTypeNormal] forKey:@"mapType"];
}else if(bt.tag == 2){
[userDefaults setObject:[NSNumber numberWithInt:kGMSTypeSatellite] forKey:@"mapType"];
}else if(bt.tag == 3){
[userDefaults setObject:[NSNumber numberWithInt:kGMSTypeHybrid] forKey:@"mapType"];
}
[self refreshElements];
[userDefaults synchronize];
}
- (IBAction)modeChange:(UIButton x)bt
{
if (bt.tag == 4) {
[userDefaults setObject:[NSNumber numberWithBool:YES] forKey:@"mode3D"];
}else if(bt.tag == 5){
[userDefaults setObject:[NSNumber numberWithBool:NO] forKey:@"mode3D"];
}
[self refreshElements];
[userDefaults synchronize];
}
- (IBAction)unitsChange:(UIButton x)bt
{
if (bt.tag == 6) {
[userDefaults setObject:@"metric" forKey:@"units"];
}else if(bt.tag == 7){
[userDefaults setObject:@"imperial" forKey:@"units"];
}
[self refreshElements];
[userDefaults synchronize];
}
- (IBAction)historyClear
{
if (history.count == 0) {
[utils simpleAlertView:@"Info"
andMessage:@"History already removed!"
andOKButton:@"OK"
otherButton:nil];
return;
}else{
if([utils removeFile:historyPath] == YES){
[utils simpleAlertView:@"Info"
andMessage:@"All history removed!"
andOKButton:@"OK"
otherButton:nil];
[utils createNewEmptyFile:historyPath];
[history removeAllObjects];
history = nil;
32
}else{
[utils simpleAlertView:@"Info"
andMessage:@"History not removed\nPlease try again!"
andOKButton:@"OK"
otherButton:nil];
}
}
}
- (IBAction)historyShow
{
if (![utils checkIfExistFile:historyPath]){
[utils simpleAlertView:@"Info"
andMessage:@"History file not found or not created yet"
andOKButton:@"OK"
otherButton:nil];
return;
}else if(history.count == 0){
[utils simpleAlertView:@"Info"
andMessage:@"History is empty!"
andOKButton:@"OK"
otherButton:nil];
return;
}else{
ABBk xABBKs = [[ABBk alloc]initWithNibName:@"ABBk" bundle:nil];
ABBKs.delegate = self;
[self presentViewController:ABBKs animated:YES completion:nil];
[self.tabBarController setSelectedViewController:
[self.tabBarController.viewControllers objectAtIndex:0]];
}
}
Clasa Video
Clasa Video (Camera) are ca functional inregistra video si audio content precum si captarea
imaginilor in caz de necessitate, deasemenea salveaza si distribute contentul foto si video in clasa
GalleryPhoto pentru a putea viziona materialul salvat.
#pragma mark #pragma mark Start/Stop recording
// x x x x x x x x x x START STOP RECORDING BUTTON
- (IBAction)StartRecordingButton:(id)sender
{
x x x x x x x x x x
OptionsButton.userInteractionEnabled=NO;
VideosButton.userInteractionEnabled=NO;
if ((!WeAreRecording)&&(timpvideo>0))
{
[self playSound];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
[playbutton setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:@"rec_on" ofType:@"png"]] forState:UIControlStateNormal];
else
[playbutton setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:@"rec_on" ofType:@"png"]] forState:UIControlStateNormal];
//----- START RECORDING ----WeAreRecording = YES;
deleg = (AppDelegate x)[[UIApplication sharedApplication] delegate];
//Create temporary URL to record to
33
//
//
//
//
deleg.home=home;
//
nume = [NSString stringWithFormat:@"dalban"];
NSString xoutputPath1 = [[NSString alloc] initWithFormat:@"%@/%@", Documents, [NSString
stringWithFormat:@"%@.mp4",nume]];
nameToSave = nume;
NSURL xoutputURL1 = [[NSURL alloc] initFileURLWithPath:outputPath1];
NSFileManager xfileManager1 = [NSFileManager defaultManager];
if ([fileManager1 fileExistsAtPath:outputPath1])
{
NSError xerror;
if ([fileManager1 removeItemAtPath:outputPath1 error:&error] == NO)
{
//Error - handle if requried
}
}
//Start recording
[MovieFileOutput startRecordingToOutputFileURL:outputURL1 recordingDelegate:self];
}
}
- (void)StopRecordingButton {
if((WeAreRecording)||(timpvideo==0))
{
[experiment invalidate];
experiment = nil;
//
WeAreRecording = NO;
[MovieFileOutput stopRecording];
}
}
- (void)killActivityIndicator
34
35
}];
}];
}
else
{
if (myCustomtime.isOn)
{
[[NSUserDefaults standardUserDefaults] setObject:@"NULL" forKey:@"timeBool"];
}else{
[[NSUserDefaults standardUserDefaults] setObject:@"yes " forKey:@"timeBool"];
}
[UIView animateWithDuration:0.2 animations:^{
imagetime.transform = CGAffineTransformMakeScale(1,0 );
}completion:^(BOOL finished){
if ([[[NSUserDefaults standardUserDefaults]
objectForKey:@"timeBool"]isEqualToString:@"NULL"])
{
[imagetime setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:@"time_11~ipad" ofType:@"png"]]];
}
else
{
[imagetime setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:@"time_1~ipad" ofType:@"png"]]];
}
[UIView animateWithDuration:0.2 animations:^{
imagetime.transform = CGAffineTransformMakeScale(1,1 );
}];
}];
}
}
36
de startare.
38
SOUND OFF, REC OFF, REC ON. Toate acestea ishi au functinalul si utilizarea sa in monitorizarea
traficului si ushurarea acestuia. (figura 4.3)
39
CHANGE CAMERA - acest butor are functia de schimbare a camelor celei din spate si
celei frontale, pentru inscrierea sau monitorizarea traficului dorit cu ajutorua a oricarei camere
a dispozitivului;
MUSIC PLAYER - aceasta functie este activa in decursul inscrierei VIDEO doar cu
setarea acestuea din meniu utilizatorului se da posibilitatea de a alege muzica din dispozitiv si
de a reda muzica,deasemenea putem muta piesele din lista alese anterior;
BARA LANDSCAPE - reprezinta interfata grafica pe care se pozitioneaza butoul REC
ON si REC OFF : SOUND ON, SOUND OFF si coronometrul care arata timpul de inscriere
VIDEO;
SOUND ON - reprezinta optiunea de inscriere a sunetului pe parcursul inscrierei de
VIDEO;
SOUND OFF - reprezinta optiunea de inscriere a sunetului pe parcursul inscriereide
VIDEO care poate fi stopata in orice timp;
efectua atit cu camera dispozitivului frontala atit si cu cea din spate cu ajutorul butonului
REC OFF - butoul REC OFF are functia de finisare a inscrierei VIDEO.
40
41
42
Video
Deasemenea utilizatorul poate modifica inscrierea sound in tipul inregistrarii video cu ajutorul
butonului grafic OF si ON, figura. 4.9, figura 4.10.
44
45
Concluzii
Elabornd aceast lucrare am studiat mai aprofundat ce constituie acest domeniu al informaticii i
anume proiectarea sistemelor nzestrate cu anumite proprieti. Am analizat ce este un sistem, de ce
cunotine i capaciti dispun n desfurarea activitii.
46
Bibliografie
1. Sirghi Igor, Sistem de informare, accesat 30.03.2016, [Resursa electronica]. - Regim de acces:
2. http://biblioteca.regielive.ro/proiecte/electronica/sistem-de-informare-163884.html
3. tefan Marin, Analiza i modelarea sistemelor informatice ndrumar metodic pentru lucrri de
laborator, UTM 2004
4. Florin Leon, Limbajul unificat de modelare UML, Universitatea Tehnic Gh. Asachi, Iai
5. Despre NeXT , accesat 28.09.2015, [Resursa electronica]. - Regim de acces:
http://www.kevra.org/TheBestOfNext/index.html
6. Librariele iOS i a limbajului de programare Objective-C, accesat 13.10.2015 , [Resursa
electronica]. - Regim de acces:
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/
Introduction/Introduction.html
7. Chris Frazier Editor (versions 1.2-4.0),Jon Leech Editor (version 2.0), Pat Brown The OpenGL R
8. Xcode descarcare, accesat 01.09.2015, [Resursa electronica]. - Regim de acces:
https://itunes.apple.com/us/app/xcode/id497799835
9. Planificarea necesarului de personal, acce 19.05.2016, [Resursa electronica]. - Regim de acces:
http://resurseumane.wikidot.com/example-item-1
10. Limbajul de programare Objective-C, accesat 28.09.2015, [Resursa electronica]. - Regim de
acces: http://www.tutorialspoint.com/objective_c/
11. Imagine Calculator personal [Resursa electronica]. - Regim de acces:
https://en.wikipedia.org/wiki/Desktop_computer#/media/File:Desktop_computer_clipart__Yellow_theme.svg
12. Imagine [Resursa electronica]. - Regim de acces: IDE Xcode http://2012.igem.org/Team:SUSTC-Shenzhen-A/Biodesign_Tool
13. Codewithchris [Resursa electronica]. - Regim de acces: http://codewithchris.com/demo-app-withxcode-4-and-interface-builder/
14. Imagine evolutie Iphone -[Resursa electronica]. - Regim de acces:
https://www.google.md/search?
q=iphone&newwindow=1&hl=en&biw=1366&bih=643&site=webhp&source=lnms&tbm=isch&s
a=X&ved=0ahUKEwi1oZfd1ZvNAhWIHpoKHdUIBRgQ_AUIBigB#newwindow=1&hl=en&tb
m=isch&q=iphone+history+timeline&imgdii=jDq2yDCOCdgCpM%3A%3BjDq2yDCOCdgCpM
%3A%3BYTWTk2TEK1-8PM%3A&imgrc=jDq2yDCOCdgCpM%3A
47
Anexa A
Codul surs
//Maps
#pragma mark - GPS MAP methods
- (IBAction)startBt
{
drawRoutePath = [GMSMutablePath path];
passedDist = 0;
passedTime = 0;
startTime = [NSDate date];
[self chooseMapButton:2];
[self startLocationManager];
[self setSimpleWebViewText:@"Started!"];
[mapViewGMS animateToZoom:17];
if (internet.isReachable){
locationIndex = 0;
conexion = YES;
noNet = NO;
}else{
polyline.map = nil;
_arrowToRouteView.hidden = NO;
conexion = NO;
noNet = YES;
}
}
- (IBAction)stopBt
{
[self chooseMapButton:3];
countUpdates = 0;
_arrowToRouteView.hidden = YES;
[locationManager stopUpdatingLocation];
if (noNet) {
GMSMutablePath *line = [GMSMutablePath path];
[line addCoordinate:startPin.position];
[line addCoordinate:endPin.position];
[self addPolyline:line line:YES];
[self setMapBoundsWith:line];
[self setSimpleWebViewText:@"Stopped!"];
}else{
NSMutableDictionary *dict = [userDefaults objectForKey:@"tempDictToSave"];
[self showRoute:dict];
if ([[utils getLocalLanguage]isEqualToString:@"en"])
[self performSelectorInBackground:@selector(speak:) withObject:@"Stopped"];
shareBt.hidden = NO;
routeInfoView.frame = CGRectMake(shareBt.frame.size.width+5, 0,
startButton.frame.origin.x-shareBt.frame.size.width 10,
mapMainMenu.frame.size.height);
routeInfoWebView.frame = CGRectMake(0, 0, routeInfoView.frame.size.width,
routeInfoView.frame.size.height);
}
startPin = [self setStartEndFlagsMarker:startFlagLocation.coordinate
flag:@"directionsPin"];
startPin.groundAnchor = CGPointMake(0.5, 0.5);
}
- (IBAction)cancelInsideMap
{
[self hideSubmenus:@"13"];
48
[self showSubmenus:@"2"];
49