Dezvoltarea primei aplicații Android

de ce ne pasă de Android? Ne pasă de platforma Android, deoarece este cea mai distribuită platformă mobilă de pe planetă și este accesibilă consumatorilor din întreaga lume. În economiile în care proprietatea asupra unui computer personal este un lux, utilizarea dispozitivelor mobile este norma–iar Android joacă un rol major în conectarea oamenilor între ei. După cum veți învăța în acest tutorial, Android are o abordare distinctă a aplicațiilor. Arhitectura Android permite un mediu software extrem de personalizabil datorită legării sale de rulare a acțiunilor solicitate și a codului pentru a satisface aceste solicitări. Indiferent dacă este vorba de considerații bazate pe piață sau de aspectele tehnice ale Android, este o platformă care merită examinată. Mai mult, dacă acordați o atenție serioasă unei experiențe mobile pentru platforma dvs., nu puteți ignora Android.

cerințe preliminare

acest tutorial necesită mai multe tehnologii care lucrează împreună. Ai nevoie de toate pentru acest tutorial.

  • Android Studio – Android Studio este punctul de plecare principal pentru construirea de aplicații Android
  • dispozitiv Android sau Emulator – veți dori fie un dispozitiv Android fizic, sau Emulator Android. Oricum, citirea acestui tutorial vă va ajuta să înțelegeți punctele de conectare de bază ale unei aplicații Android.
  • cod sursă-fragmentele de cod sursă din acest tutorial includ:

    • AndroidManifest.xml snippet — acest fișier este descriptor implementare aplicație pentru aplicații Android.
    • Activitate Principală.java-aceasta pune în aplicare O Activitate Android, punctul de intrare principal la aplicarea eșantion de acest tutorial.
    • Activity_main.xml-aceasta conține definiții pentru elementele vizuale, sau resurse, pentru utilizarea de către activitățile Android.
    • AndroidManifest.xml complete-aceasta listează un AndroidManfest complet.fișier xml, împreună cu o descriere a fiecăruia dintre elementele importante.

introducerea arhitecturii Android

înainte de scufundări chiar în intrarile si iesirile de Android Studio și dezvoltarea de aplicații Android, să aruncăm o privire la arhitectura Android și unii dintre termenii cheie care vor fi de ajutor în tutorial și dincolo, pe măsură ce începe să construiască aplicații Android pentru tine.

Android terminologie

o înțelegere a termenilor de mai jos este util în dezvoltarea de aplicații Android cu Android Studio.

  • Android este un mediu de operare open source destinat dispozitivelor mobile. Din ce în ce mai mult, Android se găsește în aplicații dincolo de „smartphone-uri”. Acestea includ tehnologia Purtabilă, aparate precum proiectoare, difuzoare și televizoare și chiar automobile.
  • Emulator este un instrument software reprezentativ pentru un alt sistem. Adesea, un emulator este un mediu care rulează pe un computer personal (PC, Mac, mașină Linux) care emulează un alt mediu, cum ar fi un dispozitiv de calcul mobil.
  • Linux este un nucleu de sistem de operare open source în centrul multor platforme de calcul, inclusiv servere, computere desktop, Aparate de rețea și dispozitive de calcul mobil. Android rulează pe partea de sus a unui kernel Linux.
  • Android Run Time (ART) este un mediu de operare găsit în stiva Android, care execută codul aplicației în timpul rulării. Timpul de rulare Android înlocuiește” legacy ” Dalvik Virtual Machine (VM) din versiunile anterioare de Android care funcționau într-un mod similar cu un Java VM compatibil.

intenția

de la începuturile sale, Android a devenit o forță dominantă în spațiul de telefon mobil. Modelul său de aplicație este unic prin faptul că aplicațiile nu sunt aplicații monolitice, încărcate de meniu, care necesită mult clic și atingere pentru a funcționa. Sigur, există meniuri și butoane pentru a fi exploatat, dar Android are un element de design inovator pentru arhitectura sa cunoscut ca o intenție.

o intenție este o construcție care permite unei cereri să emită o cerere, care este oarecum ca un semn de ajutor dorit. S-ar putea arata ca acestea:

  • „dorit: O aplicație care să mă ajute să caut un contact ”
  • „Wanted: o aplicație care să mă ajute să afișez această imagine”
  • „Wanted: o aplicație pentru a efectua această căutare geografică.”

în mod similar și complementar, aplicațiile se pot înregistra ca fiind capabile și interesate să satisfacă diverse cereri sau intenții. Pentru a urma paradigma publicității clasificate, acestea ar putea arăta astfel:

  • „disponibil: Cerere gata și dispus să prezinte înregistrările de contact în mod clar, concis”
  • ” disponibil: Aplicație gata și dispus să efectueze o căutare geografică.”

acestea sunt exemple de Intenționarefiltre, care sunt discutate în continuare.

aplicațiile IntentFilter

își anunță disponibilitatea de a efectua aceste tipuri de operații printr-o construcție cunoscută sub numele de IntentFilter. IntentFilter este fie înregistrat în timpul rulării, fie este enumerat în AndroidManifest.fișier xml. Următorul fragment provine dintr-o aplicație Android care răspunde la mesajele SMS (text) primite:

<receiver android:name=".MySMSMailBox" android:exported="true"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>

arată moreShow mai multe icon

IntentFilter, secțiunea următoare introduce cele patru tipuri principale de aplicații Android.

tipuri de aplicații Android

să luăm un moment pentru a examina cele patru tipuri principale de aplicații Android:

  • activitate
  • serviciu
  • receptor
  • ContentProvider

vom lua, de asemenea, o privire la punctele de vedere pentru a afișa elementele user-interface (UI).

aplicații de activitate

activitatea este cea mai vizibilă și proeminentă formă a unei aplicații Android. O activitate prezintă UI la o aplicație, împreună cu asistența unei clase cunoscut ca un punct de vedere. Clasa view este implementată ca diverse elemente UI, cum ar fi casete de text, etichete, butoane și alte UIs tipice în platformele de calcul, mobile sau otherwise.An aplicația poate conține una sau mai multe activități. O activitate este de obicei definită pe o relație unu-la-unu cu ecranele găsite într-o aplicație.

o aplicație se mută de la o activitate la alta apelând o metodă cunoscută sub numele de startActivity()sau startSubActivity(). Fosta metodă este utilizată atunci când aplicația dorește să „comute” pur și simplu la noua activitate. Acesta din urmă este utilizat atunci când se dorește o paradigmă sincronă de apel/răspuns. În ambele cazuri, o intenție este transmisă ca argument la metoda numită.

este responsabilitatea sistemului de Operare să determine activitatea cea mai calificată pentru a satisface intenția specificată.

aplicații de Service și receptor

ca și alte medii de calcul multi-tasked, există aplicații care rulează „în fundal” care îndeplinesc diverse sarcini. Android apelează la aceste tipuri de servicii de aplicații. Serviciul este o aplicație Android care nu are UI.

receptorul este o componentă a aplicației care primește cereri de procesare a intențiilor. La fel ca serviciul, un receptor nu are, în practica normală, un element UI. Receptoarele sunt de obicei înregistrate în AndroidManifest.fișier xml.

următorul fragment (care este același cu cel prezentat pentru IntentFilter) este un exemplu de aplicație receptor definită. Rețineți că atributul de nume al receptorului este clasa Java responsabilă de implementarea receptorului.

<receiver android:name=".MySMSMailBox" android:exported="true"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>

arată moreShow more icon

ContentProvider este mecanismul Android pentru abstractizare Magazin de date. Să ne uităm la un anumit tip de date găsite pe un dispozitiv mobil: agenda de adrese sau baza de date de contacte. Agenda conține toate contactele și numerele de telefon de care o persoană ar putea avea nevoie atunci când utilizează un telefon mobil.

ContentProvider este un mecanism de acces abstract la un anumit magazin de date. În multe privințe, ContentProvider acționează în rolul unui server de baze de date. Operațiunile de citire și scriere a conținutului într-un anumit depozit de date ar trebui să fie transmise printr-un ContentProvider adecvat, în loc să acceseze direct un fișier sau o bază de date. Pot exista atât „clienți”, cât și” implementări ” ale ContentProvider.

Vizualizări Android

vizualizări Android sunt mecanismul UI pentru a pune lucrurile pe ecranul unui dispozitiv Android. Activitatea Android folosește vizualizări pentru a afișa elemente UI. Unele dintre cele mai populare modele de aspect includ:

  • LinearVertical – fiecare element ulterior își urmează predecesorul curgând sub el într-o singură coloană.
  • Liniarorizontal – fiecare element ulterior își urmează predecesorul curgând spre dreapta într-un singur rând.
  • tabel – o serie de rânduri și coloane, similare cu un tabel HTML. Fiecare celulă poate deține un element de vizualizare.
  • constrângere – fiecare element este „constrâns” la un aspect al afișajului, cum ar fi partea superioară sau laterală a ecranului sau un alt element. Acest aspect ajută la construirea de aplicații „receptive” și este moștenitorul aspectului relativ moștenit introdus în versiunile anterioare ale platformei Android.

după ce a fost selectat un anumit aspect (sau o combinație de machete), vizualizările individuale sunt utilizate pentru a defini UI.

elemente de vizualizare constau din elemente UI familiare, inclusiv:

  • buton
  • ImageView
  • EditText pentru a aduna intrare cu diverse filtre, cum ar fi data sau Numeric
  • TextView (similar cu o etichetă, afișează text static)
  • caseta
  • buton Radio
  • Spinner (similar cu o casetă combo „drop-down”)
  • completarea automată (EditText cu text automat-caracteristică completă)

vizualizările sunt definite într-un fișier XML. De exemplu, aceasta arată o vizualizare liniară simplă verticală, cu butoane și vizualizări de text definite:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" ><TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Activity 1!" /><TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Activity 1, second text view!" /><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Switch To Activity 2" /></LinearLayout>

arată moreShow more icon

https://developer.android.com/, și derulați în jos pentru a descărca Android Studio. Android Studio este disponibil pentru Windows, Mac și Linux.

Android Studio se bazează pe platforma IntelliJ IDE. Dacă sunteți genul de dezvoltator care este interesant în utilizarea comenzilor rapide de la tastatură, ați putea lua în considerare să aflați mai multe despre IntelliJ de pe site-ul jetbrains.

Noțiuni de bază cu Android SDK

acum, că avem Android Studio instalat, este timpul pentru a obține software Developer Kit (SDK) pentru Android.

dar, înainte de a merge mai departe, trebuie să avem o discuție în jurul versiunilor Android.

versiuni Android

de la începuturile sale, Android a fost lansat sub o cale oarecum paralelă de revizii de lansare numerice, niveluri API și, de asemenea, nume „dulci”, inclusiv Jelly Bean, KitKat, Oreo și alte favorite de cofetărie.

este ușor să fii copleșit de alegerile disponibile. Pentru moment ai nevoie doar de un pic de înțelegere a acestui „peisaj versiune” pentru a începe ca un dezvoltator Android.

există multe versiuni sau revizuiri ale Android în sălbăticie. Dacă aveți de gând să scrieți o cerere de lansare comercială, va trebui să știți ce dispozitive vizați. Wikipedia are un rezumat frumos al versiunilor Android, numele, datele de lansare, precum și un grafic care descrie numărul aproximativ al fiecărui dispozitiv de pe piață.

dispozitivele mai noi rulează cel mai recent cod, iar dispozitivele mai vechi pot fi oarecum constrânse în capacitatea lor de a face upgrade la o versiune mai nouă de Android. Uneori, versiunile mai noi acceptă capabilități pe care telefoanele mai vechi nu sunt capabile să le suporte (gândiți-vă la a doua cameră, comunicații în câmp apropiat și așa mai departe). Un alt motiv non-banal pentru care telefoanele mai vechi ar putea să nu poată rula cea mai recentă versiune Android este că atât producătorul, cât și operatorul de telecomunicații (Verizon, AT&T și așa mai departe) trebuie să sprijine software-ul care rulează în ecosistemul lor. Sprijinirea unui nou sistem de operare necesită resurse din partea producătorului dispozitivului și a transportatorului. Forțele pieței sugerează că acești participanți la piață sunt mai preocupați de vânzările viitoare decât de sprijinirea vânzărilor anterioare și își investesc capitalul uman în consecință.

ca dezvoltator de software, ce contează că există noi versiuni ale sistemului de operare? Aceasta se împarte în două mari categorii atunci când vine vorba de aplicații de programare:

  • o nouă versiune a sistemului de operare introduce adesea noi caracteristici de care putem profita și/sau Baza noastră de utilizatori se așteaptă ca aplicațiile noastre să le accepte.
  • caracteristicile mai vechi (sau moștenite) ale mediului pot împiedica de fapt caracteristicile mai noi și/sau reprezintă o abordare inferioară a furnizării unui set specific de funcționalități. Uneori, codul trebuie eliminat efectiv din definițiile API. Există un termen special pentru această „eliminare” a codului de lucru anterior – îl numim „depreciere a codului”. Când un API a fost marcat pentru eliminare, spunem că acesta este un API învechit. Acesta este, în esență, un mesaj pentru dezvoltator care merge ceva de genul: „avertisment” acest cod va fi eliminat în viitor, vă rugăm să planificați în consecință.”

platforma Android a fost destul de liberală (adică favorabilă dezvoltatorului) cu abordarea sa față de codul depreciat, permițând aplicațiilor să continue să utilizeze API-uri mai vechi destul de mult timp după ce au fost marcate ca depreciate. (Această abordare contrastează cu abordarea Apple cu codul depreciat în iOS, unde Codul mai vechi poate pur și simplu să nu mai funcționeze la următoarea versiune a sistemului de operare. Cu iOS, chiar și limbajul de programare pare să se schimbe în timp ce nu căutăm!)

în timp ce Android poate fi un pic mai iertător cu îndelunga sa suferință de cod depreciat, trebuie să fim atenți la eticheta de documentație care spune că un anumit API este depreciat. Dacă un cod pe care îl folosim este marcat ca depreciat, va trebui să ne schimbăm în cele din urmă abordarea într-o versiune viitoare a aplicației noastre, deoarece orice API marcat ca depreciat poate fi eliminat într-o versiune viitoare. Markerii de depreciere din SDK sunt foaia noastră de parcurs către oportunități viitoare de îmbunătățire și potențiale dureri de cap. Uneori,” noul ” mod de a face lucrurile este simplu și direct, dar nu în fiecare caz!

a fi un dezvoltator de aplicații mobile de succes necesită o investiție continuă pe durata de viață a unei aplicații în care timpul tinde să treacă ca anii câinilor…foarte repede!

cu acest intro de bază pentru versiunile de Android, este timpul pentru a obține Android SDK.

obținerea și instalarea Android SDK

Start Android Studio. Sub meniul Instrumente, selectați SDK Manager. Această opțiune de meniu încarcă dialogul Preferințe Android Studio și preselectează submeniul Android SDK. Acest meniu este principalul nostru mijloc de a interacționa cu diferitele SDK-uri disponibile pentru numeroasele versiuni de Android.

screen shot de dialog Preferințe Android Studio, cu managerul SDK Android listarea versiunile disponibile ale SDK Android

cu fiecare versiune a sistemului de operare, creșterile de nivel API. Observați că revizuirea crește mai lent decât nivelul API. Vă puteți gândi la revizuire ca la o „generație” a platformei sau ca la un număr de versiune „Major”. Când răsfoiți documentația Android, asigurați-vă că observați ce nivel API a fost introdus o anumită capacitate. Fiecare API este disponibil la nivelul API indicat și mai mare, cu excepția cazului în care API-ul a fost depreciat și ulterior eliminat. De exemplu, API-ul ContactsContract a fost introdus la nivelul 5, care este destul de „vechi” în acest moment.

selectați unul sau două niveluri SDK pentru a lucra cu acum. Managerul SDK va descărca ulterior fișierele aferente și le va pune la dispoziție pentru utilizare în cadrul Android Studio.

de asemenea, în meniul Instrumente este o opțiune pentru managerul AVD. AVD standuri pentru Android dispozitiv Virtual. Acesta este emulatorul. Emulatorul este util, deoarece ne permite să testăm aplicații pe diferite tipuri de dispozitive, dimensiuni și versiuni. Capturile de ecran din acest tutorial sunt preluate din emulator. Mai multe despre asta mai târziu.

construirea prima aplicație Android

acest tutorial vă pașii prin crearea unei aplicații Android de bază, numitSaySomething , folosind Android Studio și demonstrând-o pe emulator Android.

Obțineți codul

Pasul 1: Crearea unui nou proiect

  1. selectați Fișier > proiect nou.
  2. completați dialogul Creare proiect Android și faceți clic pe Următorul.

    captură de ecran a crea nou dialog proiect în Android Studio

    cerințele pentru noul proiect includ:

    • numele aplicației
    • domeniul companiei (acest lucru se inversează în com.domeniu) pentru a păstra aplicațiile partiționate chiar dacă au același nume de aplicație.
    • locația proiectului – unde se stochează fișierele
    • Numele pachetului este sugerat din numele aplicației și domeniul companiei
    • în mod implicit, aplicațiile Android sunt scrise în Java. Dacă doriți să acceptați limbi alternative, cum ar fi C++ (pentru codul nativ) sau Kotlin, bifați casetele de selectare corespunzătoare.
  3. în dialogul dispozitive Android țintă, Specificați nivelul API și platformele țintă. Așa cum am menționat mai devreme, Android este pentru mai mult decât telefoane, deși pentru scopurile noastre vom selecta pur și simplu factorul de formă al telefonului și tabletei pentru acest tutorial. Apoi, faceți clic pe Următorul.

     captură de ecran a dialogului țintă dispozitive Android în Android Studio

  4. în dialogul adăugați o activitate la mobil, Selectați tipul de activitate gol. Apoi, faceți clic pe Următorul.

    captură de ecran a adăuga o activitate la dialog mobil în Android Studio

    aceasta va crea o aplicație implicită gata pentru a fi construit și a alerga direct de la Android Studio.

  5. în dialogul configurare activitate, denumiți fișierele pentru aplicație.

    captură de ecran a dialogului de configurare a activității în Android Studio

Pasul 2: examinați codul

următoarea figură prezintă componentele noului nostru proiect:

captură de ecran de noi fișiere de proiect prezentate în secțiunea de proiect de Android Studio

există două foldere: app și script-uri Gradle.

  • folderulapp conține tot codul aplicației noastre.
  • manifestă dosarul în app dosarul conține AndroidManifest.xml care este Descriptorul de implementare pentru această aplicație. Acest fișier îi spune dispozitivului Android despre cum să interacționeze cu aplicația, Ce activitate să afișeze la pornirea aplicației, care intenționează serviciile aplicației, ce pictograme să afișeze și multe altele.
  • folderul java conține codul sursă pentru aplicație. În acest caz, fișierul care implementează activitatea noastră plus câteva fișiere de clasă pentru efectuarea testelor automate (pe care le vom ignora pentru acest tutorial).
  • folderul res conține resursele pentru aplicație, inclusiv pictograme, fișiere de aspect, șiruri, meniuri și așa mai departe.
  • folderul Gradle Scripts conține toate elementele scriptabile pentru construirea aplicației. Sistemul de construire Gradle este un subiect în sine. Deocamdată, înțelegeți că aceste scripturi guvernează procesul de construire a aplicației – și, important, pentru proiecte și echipe mai mature, fiecare dintre acești pași poate fi rulat din linia de comandă. Acest lucru este important deoarece această abordare susține automatizarea și se încadrează în categoria integrării continue.

acum, să examinăm codul sursă în detaliu.

activitate primară pentru aplicația

cererea noastră eșantion constă dintr-o singură activitate, numit MainActivity.

package com.navitend.saysomething;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.util.Log;import android.widget.Button;import android.widget.TextView;import android.widget.EditText;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("IBM","Hello there logcat!"); setContentView(R.layout.activity_main); final Button btnHitMe = (Button) findViewById(R.id.hitme); final Button btnMapMe = (Button) findViewById(R.id.mapme); final TextView tvLabel = (TextView) findViewById(R.id.thelabel); final EditText etLatitude = (EditText) findViewById(R.id.etLatitude); final EditText etLongitude = (EditText) findViewById(R.id.etLongitude); btnHitMe.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { tvLabel.setText("Ouch!"); } } ); btnMapMe.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String coords = etLatitude.getText()+","+etLongitude.getText(); Log.i("IBM",coords); Uri mapsIntentUri = Uri.parse("geo:" + coords); Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapsIntentUri); startActivity(mapIntent); } } ); }}

arată moreShow mai multe icon

MainActivity este o clasă Java normală, cu un pachet și importuri, așa cum era de așteptat.

  • MainActivityextinde o clasă Android de bază numită AppCompatActivity, care se află în pachetul numit android.sprijin.v7.app.
  • metoda onCreate() este punctul de intrare în această activitate, primind un argument de tip pachet. Bundle este o clasă care este în esență un înveliș în jurul unei hărți sau hashmap. Elementele necesare pentru construcție sunt transmise în acest parametru.
  • setContentView(..) este responsabil pentru crearea UI primar folosind R. layout.principal argument. Acesta este un identificator care reprezintă aspectul principal găsit în resursele aplicației. Rețineți că orice identificatori din clasa „R” sunt generați automat de procesul de construire. În esență, toate fișierele de resurse xml din folderul res descris anterior sunt accesate cu clasa R.
  • resurse pentru aplicația

    resurse în Android sunt organizate într-un subdirector al proiectului numit res, așa cum este descris anterior. Resursele se încadrează într-o serie de categorii. Trei dintre aceste categorii sunt:

    • Drawables
    • Machete - acest folder conține fișiere XML care reprezintă machetele și vizualizările aplicației. Acestea vor fi examinate în detaliu mai jos.
    • valori – acest folder conține un fișier numit șiruri de caractere.xml. Acesta este principalul mijloc de localizare a șirurilor pentru aplicație. Culorile fișierului.xml este util pentru definirea codurilor de culoare utilizate de aplicație. Acest fișier este analog cu o foaie de stil css pentru cei familiarizați cu tehnicile de programare web.

    resurse UI primare în main_activity.fișier xml

    aplicația eșantion conține o singură activitate și o singură vizualizare. Aplicația conține un fișier numit main_activity.xml care reprezintă aspectele vizuale ale UI primar al activității. Rețineți că nu există nicio referință în main_activity.xml unde este utilizat aspectul. Aceasta înseamnă că poate fi utilizat în mai multe activități, dacă se dorește. Consultați următoarea listă de coduri

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="301dp"> <Button android:id="@+id/hitme" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hit Me!" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" tools:layout_editor_absoluteY="383dp" /> <Button android:id="@+id/mapme" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Map Me!" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" tools:layout_editor_absoluteY="460dp" /> </LinearLayout> <TextView android:id="@+id/thelabel" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Hello World, Say Something!!!!!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id="@+id/etLatitude" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Latitude" android:inputType="numberDecimal" android:text="40.9241164" /> <EditText android:id="@+id/etLongitude" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Longitude" android:inputType="numberDecimal" android:text="-74.7213913" /></LinearLayout>

    arată moreShow more icon

    LinearLayout, există un al doilea LinearLayout organizat ca un aspect orizontal. Acest aspect interior conține o pereche de widget-uri buton. Sub orizontală LinearLayout există un singur element TextView, care poate fi asemănat cu o etichetă în alte medii de dezvoltare. Un TextView reprezintă text static care nu poate fi editat. Sub TextView , există două EditText widget-uri, configurate pentru a lua intrări numerice. Aceste elemente de intrare sunt utilizate pentru a capta o valoare de latitudine și longitudine care va fi ulterior transmisă unei aplicații de cartografiere, așa cum se demonstrează mai jos.

    rețineți că fiecare element de vizualizare are atribute în spațiul de nume android. Unele atribute sunt comune tuturor vizualizărilor-atributele android:layout_width și android:layout_height , de exemplu. Valorile disponibile pentru aceste atribute sunt:

    • Match Parent-aceasta extinde elementul de vizualizare pentru a ocupa spațiul maxim disponibil. Acest lucru poate fi, de asemenea, gândit ca însemnând „întindere.”
    • Wrap Content – această opțiune are ca rezultat extinderea elementului suficient pentru a conține vizualizările sau atributele sale copil, cum ar fi textul sau imaginea.

    descriptor de implementare pentru o aplicație Android (AndroidManifest.xml)

    AndroidManifest.fișier xml reprezintă descriptor de implementare pentru o aplicație Android. Fișierul listează orice activitate, serviciu, furnizor de conținut, sau receptor conținute în cerere, împreună cu IntentFilters corespunzătoare suportate de cerere. Iată Androidul completmanifest.fișier xml pentru aplicația eșantion:

    <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.navitend.saysomething"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>

    arată moreShow mai multe icon

    <manifest> importă în esență clase din acest pachet. Toate clasele necalificate din acest fișier se găsesc în pachetul identificat în atributul pachet.

  • eticheta <application> are un atribut care face referire la o resursă din resursele aplicației. Rețineți simbolul @ care precede diferiții identificatori. Acesta este un indiciu pentru toolchain să se uite în folderul respectiv al resurselor aplicației pentru fiecare resursă.
  • eticheta <activitate> conține următoarele atribute și valori ale notei:

    • android: name reprezintă clasa Java care implementează această activitate
    • android:label conține numele aplicației. Rețineți că se referă la una dintre resursele șirului. Șirul .fișierul xml conține șiruri localizate pentru aplicație.
    • <intenție-filtru> reprezintă IntentFilter Disponibil în aplicația eșantion. Acest set specific de acțiune și categoria atribute sunt cele mai frecvente IntentFilter văzut în aplicații Android. Acest filtru spune în esență că implementează acțiunea principală (sau punctul de intrare) și este disponibil în ecranul de lansare care funcționează în prezent pentru sistemul de operare. În termeni simpli, acest lucru înseamnă că poate fi pornit ca o aplicație din lista principală de aplicații de pe un dispozitiv Android.
  • Pasul 3: Construiți aplicația

    pentru a construi aplicația, selectați pictograma cheie (arată mai mult ca un ciocan pentru mine) din meniul Android Studio.

    procesul de construire, așa cum a fost introdus mai devreme, este un proces în mai multe etape care poate fi personalizat pentru orice aplicație particulară. Pentru acest tutorial, nu modificăm procesul de construire. Rezultatul procesului de construire ar trebui să arate cam așa:

    captură de ecran de ieșire construi în Android Studio

    pentru a demonstra procesul de a construi, am introdus o eroare în codul sursă; am adăugat un spațiu suplimentar în numele metodei findViewById , prezentat în figura următoare:

    captură de ecran de eroare intenționată în codul sursă

    aceasta creează o eroare de sintaxă sau parsare care este preluată de procesul de construire și afișată în detaliile ferestrei de construire a rezultatelor din Android Studio. La remedierea erorii din codul sursă, aplicația se construiește corect, iar erorile sunt eliminate din lista de probleme.

    Pasul 4: Rulați aplicația

    acum că aplicația a compilat cu succes, este timpul să rulați aplicația eșantion.

    mai devreme în acest tutorial Avd Manager a fost introdus ca mijloc de configurare a emulatorului pentru testarea aplicațiilor fără a fi nevoie de un dispozitiv real. Rularea unei aplicații utilizând emulatorul este deosebit de utilă, deoarece permite testarea fără a fi nevoie să achiziționați numeroase dispozitive costisitoare.

    pentru a configura un emulator sau, mai corect, un dispozitiv virtual Android (Avd), selectați Instrumente > Avd Manager. Sau, pur și simplu faceți clic pe pictograma Play (Run).

    aceasta lansează o fereastră care vă permite să selectați fie un dispozitiv real conectat printr-un cablu USB, fie o instanță AVD disponibilă, așa cum se arată în figura următoare:

    captură de ecran din dialogul selectare țintă de implementare și Creare dispozitiv Virtual nou încercuit

    dacă există dispozitive conectate, fiecare apare în meniul derulant de mai jos Dispozitive conectate. Alternativ, selectați unul dintre dispozitivele virtuale disponibile. În figura anterioară, există un singur avd definit intitulatNexus One API p . Pentru a crea un nou AVD, selectați butonul Creare dispozitiv Virtual nou.

    în cele din urmă, faceți clic pe OK pentru a lansa aplicația pe ținta de implementare selectată. Avd sau emulator lansează cu aplicația noastră eșantion care rulează pe ea.

    captură de ecran a aplicației eșantion care rulează în emulator sau AVD

    Pasul 5: testați aplicația în emulator

    acum, că cererea se execută pe emulator, să aruncăm o privire la ceea ce se întâmplă în spatele scenei. În Android Studio, selectați Vizualizare > Instrument Windows. Vom evidenția doar câteva dintre aceste opțiuni de instrumente, deși fiecare dintre ele este un subiect în sine.

    Android Studio Tools

    în primul rând, uita-te la Profiler Android care descrie o diagramă care rulează de CPU, memorie, și traficul de rețea. Profilerul Android ne permite să comutăm între diferite dispozitive / instanțe de emulator și procesele de rulare respective. Următoarea figură afișează valorile pentru aplicația noastră eșantion care rulează pe o instanță emulator.

    captură de ecran a Profilerului Android pentru aplicația de probă care rulează

    logare este un instrument util pentru orice dezvoltator de pe orice platformă. Pentru dezvoltatorii Android, numele instrumentului este LogCat.

    LogCat este un fișier jurnal de activitate care rulează în VM. Aplicațiile își pot face propriile intrări în această listă cu o linie simplă de cod după cum urmează: jurnal.i (etichetă,mesaj); 1, unde etichetă și mesaj sunt ambele șiruri Java. Clasa Log face parte din android.util.Jurnal pachet.

    captură de ecran a LogCat pentru aplicația de probă care rulează

    un alt instrument util este file explorer, care permite accesul la sistemul de fișiere al emulatorului. Următoarea figură arată unde este implementată aplicația de probă a tutorialului pe Emulator.

    captură de ecran a dispozitivului File Explorer

    aplicațiile utilizatorului sunt implementate în/data/app în timp ce aplicațiile încorporate Android se găsesc în directorul/system/app .

    depanarea pe scară largă a unei aplicații Android depășește domeniul de aplicare al acestui tutorial, deși fiți siguri că Android Studio acceptă toate instrumentele moderne de depanare a aplicațiilor pe care le putem spera cu lucruri precum Intrarea și trecerea peste apelurile funcționale.

    testarea aplicației eșantion

    apăsați pe Hit Me! butonul, iar conținutul etichetei se schimbă în „Ouch!”

    captură de ecran a aplicației eșantion în emulator după atingerea butonului Hit Me

    apăsați pe hartă mine! și o aplicație de cartografiere este lansată cu latitudinea și longitudinea specificate care sunt conținute în widget-urile EditText.

    captură de ecran a aplicației eșantion în emulator după atingerea butonului Map Me

    cablarea butoanelor este în Principalactivitate.cod xml. În special, rețineți modul în care valorile latitudinii și longitudinii sunt extrase și ambalate într-o intenție, care este ulterior utilizată pentru a lansa aplicația de mapare.

    acest tutorial a introdus platforma Android, Android Studio și elementele cheie ale dezvoltării Android. Acum ar trebui să fiți gata să vă creați propriile aplicații Android.

    ești pregătit pentru ceva mai mult? Încercați acest tutorial în care utilizați API-uri Bluetooth Low Energy (BLE) pentru a construi dispozitive conectate IoT.

    Leave a Reply

    Adresa ta de email nu va fi publicată.