Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
colocvii:colocviu02 [2015/05/16 20:42] Andrei Roșu-Cojocaru [Rezolvări] |
colocvii:colocviu02 [2015/05/16 21:28] (current) Andrei Roșu-Cojocaru |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| ===== Model de Subiect ===== | ===== Model de Subiect ===== | ||
| + | |||
| + | <HTML> | ||
| + | <center> | ||
| + | </HTML> | ||
| + | |||
| + | {{url>http://pdsd2015.andreirosucojocaru.ro/_media/colocvii/colocviu02/pdsd2015-tp02-varsim.pdf 90%,800px}} | ||
| + | |||
| + | <HTML> | ||
| + | </center> | ||
| + | </HTML> | ||
| + | |||
| + | {{ colocvii:colocviu02:pdsd2015-tp02-varsim.pdf }} | ||
| ===== Observații Generale ===== | ===== Observații Generale ===== | ||
| Line 639: | Line 651: | ||
| * Genymotion: adresele Internet sunt alocate de serverul DHCP din cadrul VirtualBox în intervalul ''192.168.56.101'' → ''192.168.56.254''; | * Genymotion: adresele Internet sunt alocate de serverul DHCP din cadrul VirtualBox în intervalul ''192.168.56.101'' → ''192.168.56.254''; | ||
| * AVD: se utilizează redirectarea porturilor. | * AVD: se utilizează redirectarea porturilor. | ||
| + | |||
| + | <columns 100 50> | ||
| <code> | <code> | ||
| Line 650: | Line 664: | ||
| humidity: 68 | humidity: 68 | ||
| </code> | </code> | ||
| + | |||
| + | <newcolumn> | ||
| <code> | <code> | ||
| Line 662: | Line 678: | ||
| Connection to host lost. | Connection to host lost. | ||
| </code> | </code> | ||
| + | |||
| + | </columns> | ||
| **7.** Pentru încărcarea codului în contextul depozitului din cadrul contului Github personal: | **7.** Pentru încărcarea codului în contextul depozitului din cadrul contului Github personal: | ||
| Line 683: | Line 701: | ||
| </code> | </code> | ||
| - | **8.** | + | **8.** În situația în care un server de aplicații dorește să transmită un mesaj către un dispozitiv mobil prin intermediul serviciului Google Cloud Messaging, specificând în antetul ''Authorization'' al cererii o cheie publică ce nu este asociată numărului de proiect pe baza căruia a fost generat identificatorul de înregistrare transmis ca valoare a parametrului ''registration_id'', respectiv ''registration_ids'', răspunsul va fi ''MismatchSenderId''. Acesta indică faptul că utilizatorul respectiv nu are dreptul de a transmite notificări către dispozitivul mobil. În aceste condiții, notificarea nu va fi transmisă, acest lucru fiind precizat prin contorizarea sa în secțiunea ''failure''. |
| - | **9.** | + | **9.** Înregistrarea unui serviciu în cadrul rețelei locale se face prin intermediul unor obiecte ''NsdServiceInfo'' (Android NSD) respectiv ''ServiceInfo'' (JmDNS). Acestea sunt transmise ca parametrii ai metodelor ''registerService()'' din clasele ''NsdManager'', respectiv ''JmDNS''. |
| - | **10.** | + | Aceste obiecte sunt caracterizate prin parametrii de conectare la serviciu: |
| + | * ''NsdServiceInfo'' - adresaInternet (metoda ''setHost()'') și port (metoda ''setPort()''); | ||
| + | * ''ServiceInfo'' - portul, configurat prin intermediul constructorului. | ||
| + | Se recomandă ca portul să fie furnizat de sistemul de operare, pentru a evita situațiile în care utilizatorul poate specifica un port care este ocupat. În acest sens, se instanțiază un obiect de tip ''ServerSocket'' care primește parametrul ''0'', indicându-se astfel faptul că se dorește utilizarea unui port aleator, care poate fi folosit la momentul respectiv. Ulterior, parametrii de conectare pot fi obținuți folosind metodele specifice ale unui astfel de obiect: | ||
| + | * adresa Internet - ''getInetAddress()''; | ||
| + | * port - ''getLocalPort()''. | ||
| + | |||
| + | <code java> | ||
| + | ServerSocket serverSocket = new ServerSocket(0); | ||
| + | if (serverSocket != null) { | ||
| + | InetAddress inetAddress = serverSocket.getInetAddress(); | ||
| + | int port = serverSocket.getLocalPort(); | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | **10.** Harta Google este implementată în SDK-ul Android: | ||
| + | * prin intermediul unei componente grafice de tipul [[https://developer.android.com/reference/com/google/android/gms/maps/MapView.html|MapView]]; | ||
| + | * în cadrul unui fragment, de tipul [[http://developer.android.com/reference/com/google/android/gms/maps/MapFragment.html|MapFragment]]. | ||
| + | |||
| + | Referințele către aceste obiecte se obțin în mod obișnuit, prin intermediul metodelor ''findViewById()'', respectiv ''findFragmentById()''. | ||
| + | |||
| + | Pe baza controalelor grafice ''MapView'' sau ''MapFragment'', se poate obține o instanță a unui obiect [[https://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.html|GoogleMap]], prin intermediul metodelor ''getMap()'', respectiv ''getMapAsync()''. Se recomandă să se folosească metoda asincronă care garantează faptul că obiectul furnizat este nenul. Metoda de callback ''onMapReady()'' a clasei ascultător ''OnMapReadyCallback'' nu va fi apelată în situația în care serviciul Google Play Services nu este disponibil pe dispozitivul mobil sau obiectul este distrus imediat după ce a fost creat. | ||
| + | |||
| + | <code java> | ||
| + | if (googleMap == null) { | ||
| + | if (googleMap == null) { | ||
| + | ((MapFragment)getFragmentManager().findFragmentById(R.id.google_map)).getMapAsync(new OnMapReadyCallback() { | ||
| + | @Override | ||
| + | public void onMapReady(GoogleMap readyGoogleMap) { | ||
| + | googleMap = readyGoogleMap; | ||
| + | } | ||
| + | }); | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
