en introduktion til androider stavemåde checker ramme

, en introduktion til androide er stave checker ramme,,,,, 23,,,,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, indledning,, hvis du er ved at skabe en skik ime (input metode redaktør) eller et sprog, forarbejdning app, du kan bruge androide er stave checker ramme til hurtigt at tilføje stavekontrol funktioner til din app uden at skulle beskæftige sig med lavt niveau opgaver, som f.eks. bevarelse af ord lister eller om fastsættelse af damerau levenshtein afstande mellem ord.,,, det rammer også kan bruges til at skabe en skik stave checker (sige til et nyt sprog eller til et bestemt område), at andre applikationer kan bruge.,,, det pædagogiske første viser, hvordan man bruger den ramme til at interagere med androide er misligholdelse stave brik, og så går til dækning af grundlaget for at udvikle en skik stave checker.,,, 1.interaktion med en besværgelse checker, trin 1: skabe en, aktivitet, før vi dykke ned i den ramme, lad os skabe en aktivitet, der kan vise resultater af stavekontrol.,,, skabe en ny java - klasse, som hedder, spellingsclient, der udvider, aktivitet.denne klasse skal også gennemføre den, spellcheckersession.spellcheckersessionlistener, grænseflade til at interagere med androide er stave checker tjenester.i androide studie, du kan presse, alat + indsætte, der automatisk genereres tomme billetter til metoder for grænsefladen.,,, som denne aktivitet, er, at der kun er én, textview i sin udformning, behøver du ikke at skabe et layout xml - for det.- de, oncreate,   metode til at nulstille, textview, og send det til, setcontentview,   metode, så det tager hele   skærm.,,, på dette punkt, at din klasse skal se sådan ud:,, offentlige klasse spellingsclient udvider virksomhed gennemfører spellcheckersession.spellcheckersessionlistener (private textview forslag; @ tilsidesætte beskyttet ugyldige oncreate (bundt savedinstancestate) (super. oncreate (savedinstancestate) forslag = nye textview (dette). setcontentview (forslag);} @ tilsidesætte offentlige tomrum ongetsuggestions (suggestionsinfo []) {} @ tilsidesætte offentlige tomrum ongetsentencesuggestions (sentencesuggestionsinfo []) {}}, trin 2: send data til misligholdelse stave checker, lad os nu vedtage en sætning, der indeholder flere stavet forkert ord til androide er misligholdelse stave checker.   skabe en metode, der hedder, fetchsuggestionsfor, som accepterer, at en streng, som et parameter, private tomrum fetchsuggestionsfor (string - input) {}, fordi forbandelsen checker, service, er en del af den tekst, tjenesteydelser, api, du skal bruge, getsystemservice,   metode til at finde et eksempel på, textservicesmanager,.du kan kalde det, newspellcheckersession,   metode til at skabe en ny, samling, som kan anvendes til at sende data til besværgelsen checker.der tilføjes følgende kode til metoden:,, textservicesmanager tsm = (textservicesmanager) getsystemservice (text_services_manager_service); spellcheckersession møde = tsm. newspellcheckersession (null, locale.english, det sande);,, sørg for, lokale, siger du til, newspellcheckersession, svarer til de sprog i deres input, punktum.,,, - den samling, er klar, kan du ringe til, getsentencesuggestions,   at komme om forslag til en eller flere domme,.,,,, getsentencesuggestions, metode tager to parametre.den første parameter er en række, textinfo, genstande.du bruger   konstruktøren af  , textinfo, klasse til at konvertere en streng, til en, textinfo, objekt.den anden   parameter er en, int, der angiver antallet af forslag, der skal skabes.i dette eksempel, lad os få det til 5,.,,, tilføje følgende kode til metoden:,, s. getsentencesuggestions (nye textinfo [] (nye textinfo (input), 5), og, endelig, fetchsuggestionsfor i, oncreate, metode af, aktivitet,.,,, //passerer en sætning, som har to //stavet forkert ord fetchsuggestionsfor ("peter liv - værdier i brlin");,,,, konstatere, at det, getsentencesuggestions, metode blev indført i api - niveau, 16.tidligere versioner af api - anvendes den nu påkrævet, getsuggestions metode.,,, trin 3: display - forslagene,,, getsentencesuggestions, metode interagerer med besværgelsen checker asynkront med.når forslagene er blevet skabt, ongetsentencesuggestions, metode kaldes.,,, forslag for hver input punktum   findes i et særskilt  , sentencesuggestionsinfo, objekt.hver sentencesuggestionsinfo,   formål indeholder flere suggestionsinfo, genstande, normalt for hvert ord i den sætning.hver  , suggestionsinfo,   objekt, indeholder den faktiske forslag til et ord i form af  , snor, genstande,.,,, for eksempel, lad os blot loop gennem alle de forslag og sætte dem til en, stringbuffer,.brug getsuggestionscount, til at fastslå antallet af forslag, der er til rådighed, og getsuggestioninfoat, for at få en henvisning til en særlig, suggestioninfo,.,,, tilføje følgende kode til, ongetsentencesuggestions, metode:,, endelig udg. stringbuffer sb = nye stringbuffer ("") til (sentencesuggestionsinfo resultat: resultater) (int n = resultat. getsuggestionscount(); int (i = 0. jeg < n. jeg + +) (int m = resultat. getsuggestionsinfoat (i). getsuggestionscount(); int (k = 0; k < m k + +) (sb. både (resultat. getsuggestionsinfoat (i). getsuggestionat k)). både (") n");} sb. både ("), n")), kan du bruge, textview, er, settext, en metode til at gøre indholdet af  , -buffer.men du kan ikke kalde den metode direkte, fordi  , ongetsentencesuggestions, kører på sine egne ting.i forsøget på at foretage ændringer i brugergrænsefladen   fra et ikke - eu - erhvervsgrenen tråd, vil føre til en runtime undtagelse.derfor, du kalder det, settext,   metode inde fra, runonuithread metode.,, runonuithread (nye runnable() {@ tilsidesætte offentlige tomrum run() {forslag. settext (sb. tostring())}});,, hvis du løber din app - produktionen vil se sådan ud:,,,,, som du kan se, er vores app i øjeblikket viser forslag for alle ordene i den sætning, selv for dem med korrekt stavemåde.,,, at kun   vise forslag til stavet forkert ord, bliver vi nødt til at se på de flag, der er forbundet med hver enkelt, suggestionsinfo, objekt.en, suggestionsinfo, genstand for en stavefejl, er det, result_attr_looks_like_typo, flag.derfor skal vi tilføje kode til at ignorere  , suggestionsinfo, genstande, hvor dette flag, er ikke fastsat.,,, tilføje følgende kode til, ongetsentencesuggestions, metode, før den inderste loop begynder:,,, hvis (resultat. getsuggestionsinfoat (i). getsuggestionsattributes() & suggestionsinfo. result_attr_looks_like_typo).= suggestionsinfo.result_attr_looks_like_typo) fortsætte;,, løb app igen at se de ændrede produktion.,,,,, 2.at skabe en skik stave checker, nu, at du ved, hvordan til at interagere med misligholdelse stave checker, lad os gå videre til at skabe en skik stave checker.,,, trin 1: skabe en tjeneste, skabe en ny java - klasse, der hedder, spellingservice,.i en klasse for at blive behandlet som en trylleformular checker af androide system, må det udvide, spellcheckerservice, klasse og omgå, createsession metode.,,, tilføje følgende kode, spellingservice -:,, offentlige klasse spellingservice udvider spellcheckerservice {@ tilsidesætte et offentligt møde createsession() {}}, skridt 2: skabe en samling, alle skik stavekontrol logik består i, samling.skabe en ny klasse, der hedder, myspellingsession, det rækker, samling.du kan skabe det som en underklasse af  , spellingservice,.,,,  , samling,   klasse er en abstrakt klasse.efter overordnede alle abstrakt metoder, din klasse skal se sådan ud:,,, klasse myspellingsession udvider samling {@ tilsidesætte offentlige tomrum oncreate() {} @ tilsidesætte offentlige suggestionsinfo ongetsuggestions (textinfo textinfo, int suggestionslimit) {} @ tilsidesætte offentlige sentencesuggestionsinfo [] ongetsentencesuggestionsmultiple (textinfo [] textinfos, int suggestionslimit) {}},, for resten, lad os skabe en meget enkel stave checker, som har følgende karakteristika:,,, det behandler "peter" som en tastefejl. det vender tilbage fem alternative stavemåder for ordet "peter".,,, koden til at gennemføre disse elementer kan føjes til den, ongetsuggestions, metode, fordi det er meningen at behandle individuelle ord(i form af en, textinfo, genstande).,, ekstrakt ordet efter, gettext, metode og se, om det er lig med "peter".hvis det er, tilføjer den passende forslag til en bred vifte af, snor, objekter.hvis det ikke er, holde array tom. endelig skabe og vende tilbage med en ny, suggestionsinfo, objekt, som   indeholder en række forslag med flag, result_attr_looks_like_typo,.den konkrete kode kunne se sådan ud:,, snor ord = textinfo. gettext(); serie forslag [] = ugyldig; hvis (ord. er ("peter") (forslag = nye snor [] ("pedro", "s", "petar", "- -", "petrus");} andre {forslag = nye snor [] {}} suggestionsinfo suggestionsinfo = nye suggestionsinfo (suggestionsinfo.result_attr_looks_like_typo, forslag); tilbage suggestionsinfo;,, vi er ikke færdige endnu.det, spellingsclient, klasse vi skabte tidligere gik hele sætninger til besværgelsen checker, ikke enkelte ord.det betyder, ongetsuggestions, metode vil aldrig blive kaldt direkte.derfor er vi nødt til at skrive kode, der kan dele sætninger i ord og give dem som argumenter for, ongetsuggestions metode.denne kode skal tilføjes til den metode, ongetsentencesuggestionsmultiple,.,,, her er, hvad du gør i, ongetsentencesuggestionsmultiple, metode:,,, loop gennem en række, textinfo, genstande, det modtager som input og omdanne hver sætning i en række ord ved hjælp af dele, metode, omdanne hvert ord. i en textinfo, formål og give det som et argument for, ongetsuggestions metode. tilføje forslag tilbage til en, arraylist, af, suggestionsinfo, genstande, skabe og vende tilbage til en ny række, sentencesuggestionsinfo, genstande ved hjælp af, arraylist, af, suggestionsinfo, genstande,.,,, tilføjes følgende kode for, ongetsentencesuggestionsmultiple, metode:,, liste < suggestionsinfo > suggestionsinfos = nye arraylist < > c); (inti = 0. jeg < textinfos.length; jeg + +) (textinfo køter = textinfos [i]; //konvertere den sætning i en række ord snor ord [] = køter. gettext(). split (") 's +") til (string ord: ord) (textinfo tmp = ny textinfo (nyt); //skabe forslag for hvert ord suggestionsinfos. der tilsættes (ongetsuggestions (tmp, suggestionslimit)}} tilbage nye sentencesuggestionsinfo [] (nye sentencesuggestionsinfo (suggestionsinfos. toarray (nye suggestionsinfo [suggestionsinfos. size()]), nye int [suggestionsinfos. size()] nye int [suggestionsinfos. size()])}, nu, at den skik, samling, klasse er klar, skabe og vende tilbage til et tilfælde af den i slade os, createsession, metode:,, tilbage til nye myspellingsession();,, trin 3: skabe metadata for tjenesteydelsen, skabe en ny xml - filen, spellinginfo.xml, i de res /xml, mappe.denne sag er anvendt af androiden system til bestemmelse af navnet på den besværgelse checker og sprog, den støtter.lad os kalde vores forbandelse checker min forbandelse checker.der tilføjes følgende kode til sagen:,, <?xml - version = "0" kodning = "utf - 8"?> < stave checker xmlns: androide = "http://schemas.android.com/apk/res/android" androide: fareseddel = "@ snor /service_label" > < subtype androide: fareseddel = "engelsk" androide: subtypelocale = ", en" /> < /stave checker >,, opdatere din, værdier /strings.xml, så er det, service_label:,, < snor navn = "service_label" > mine stave checker < /snor >,, trin 4: ajourføring af listen,,, service, det vil opføre sig som en trylleformular checker skal anmode om  , android.permission.bind_text_service, tilladelse og reagere på den  , android.service.textservice.spellcheckerservice handling.det bør også indeholde en henvisning til de metadata, xml - vi er defineret i de foregående trin.definere  , spellingservice, ved tilføjelse af følgende kode til din androidmanifest. xml,:,,, < service androide: navn = ". spellingservice" androide: tilladelse = "androide. tilladelse. bind_text_service" > < hensigt filter > < aktion androide: navn = "- androiden. service. textservice. spellcheckerservice" /> < /hensigt filter > < meta - data androide: navn = "androide. betragtning. textservice. scs" androide: ressource = "@ xml - /spellinginfo" /> < /tjeneste >,, skridt 5:   aktivere de nye stave checker,, hvis du samler og løbe din app nu, kan du se nogen forskel i resultaterne af deres  , aktivitet.det er, fordi det er stadig ved at bruge standard androide stave checker.for at aktivere jeres skik stave checker, gå til den, kulisser, app og vælg jeres stave ekpedient i, sprog og input, afsnit.,,,,, når de er aktiveret, hvis du genoptage app 'en, du vil se forslag til ordet "peter".,,,,, konklusion i denne forelæsning, du har lært at kommunikere med - androiden er stave checker tjenester til at udføre stavekontrol operationer i din app.du lærte også at skabe deres egen skik stave checker.du kan bruge denne viden til ikke blot at skabe bedre imes, men også fuldgyldige stavekontrolprogrammer for sprog, der i øjeblikket ikke er støttet af android som standard.for at få mere at vide om textservices api - og stavning checker ramme, henviser til den androide udviklere reference.







Previous:
Next Page: