google spiller tjenesteydelser: ved hjælp af de nærliggende forbindelser api -

, google spiller tjenesteydelser: ved hjælp af de nærliggende forbindelser api -,,,,, 20,,,,,,,, 50,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, indledning, en af de mange api - grænseflader, der er til rådighed i google spiller tjenesteydelser er den nærliggende forbindelser api,.indført i begyndelsen af 2015, denne ramme kan man fastsætte en anordning, at deres anvendelse som vært og har flere andre anordninger forbindes til det for at kommunikere i et, lokalnet (lan),.,, anvende sager for denne artikel, omfatter forbinder en telefon til en androide tv for at kontrollere en app og giver brugerne mulighed for at deltage i flere spillere spil.i denne forelæsning, vil du lære at oprette ansøgninger til at forbinde flere anordninger, sammen i et net, og hvordan de skal sende oplysninger i den forbindelse.en prøve for denne lektion kan findes på github.,, 1.   projekt fælde, når du har din første program oprettet i androide studie, du vil være nødt til at importere spiller i biblioteket i din app.for at gøre dette sted følgende linje kode under afhængighed knudepunkt i  , build.gradle, fil.i skrivende stund, spiller tjenesteydelser 7.5.0 er den seneste overgang til udvikling, udarbejder kom. google. androide. gms spiller tjenesteydelser: 7.5.0, når spiller tjenesteydelser indgår i din app, kan du lukke  , bygge. gradle,   og åbne, androidmanifest. xml,.da dette træk anvender et ian til at kommunikere, du bliver nødt til at omfatte, access_network_state, tilladelse i deres manifest.,, < anvender tilladelse androide: navn = "androide. tilladelse. access_network_state" />,, næste gang, du bliver nødt til at tilføje et stykke, meta - data i, anvendelse, knude, som definerer en service identifier, der vil blive anvendt ved din app, så det kan finde værter reklame med samme identifikationskode.i dette eksempel, vores service identifier er defineret i strings.xml, som tutsplus_service_id,.,, < meta - data androide: navn = "kom. google. androide. gms. i nærheden. forbindelse. service_id" androide: værdi = "@ snor /service_id" />,, når du er færdig. med den åbenbare, du kan flytte til  , mainactivity -.det er en klasse, hvor vi vil gennemføre både reklame og opdagelse.i mainactivity, vil du også kontrollere sende beskeder mellem forskelligt udstyr, med henblik på at begynde at bruge de nærliggende forbindelser api, du skal oprette og forbindes med google api - klient.starte med at gennemføre, connectioncallbacks, og onconnectionfailedlistener, i toppen af klassen.mens vi udvider vores grænseflader, lad os også omfatte de tre, der er nødvendige af api - og en, onclicklistener,.,, offentlige klasse mainactivity udvider appcompatactivity gennemfører googleapiclient.connectioncallbacks, googleapiclient.onconnectionfailedlistener, connections.connectionrequestlistener, connections.messagelistener, connections.endpointdiscoverylistener, view.onclicklistener {...... lad os nu skabe den pågældende variabler, der får vi brug for denne forelæsning på på toppen af, mainactivity, klasse.   for korthedens skyld vil jeg blot nævne, at udformningen af denne kategori består af en, listview, til visning af meddelelser, en, edittext, område med en, for at sende messages efter forbundet, en knap til reklame, der forbinder, eller ved at afbryde, afhængigt af den rolle, og en, textview, for at vise de grundlæggende statslige oplysninger.,, du vil se, at der er to boolean - flag for at udpege om ikke udstyret er tilsluttet og, hvis det er den forbindelse vært,,, googleapiclient, som er nødvendige for anvendelse af de nærliggende forbindelser api - og en række tal for at holde styr på netværksforbindelsen typer vil vi støtte til denne api -.,, private googleapiclient mgoogleapiclient; private spinner mtypespinner; private textview mstatustext; private knap mconnectionbutton; private knap msendbutton; private listview mlistview; private viewgroup msendtextcontainer; private edittext msendedittext; private arrayadapter < snor > mmessageadapter; private boolean mishost; private boolean misconnected; private snor mremotehostendpoint; private liste < snor > mremotepeerendpoints = nye arraylist < snor > c), menig static endelige længe connection_time_out = 10000l, menig static int. [...] network_types = {connectivitymanager.type_wifi, connectivitymanager.type_ethernet};,, hvis du har arbejdet med en androide google api - klasser, før den sidste smule fælde ser temmelig bekendt.du er nødt til at nulstille, googleapiclient og tilslutning til det, oncreate,.,, mgoogleapiclient = nye googleapiclient. bygmester (dette). addconnectioncallbacks (dette). addonconnectionfailedlistener (dette). addapi (nearby.connections_api). build();,,, onstart,   og onstop, vi   klare tilslutning og afbryde.,, @ tilsidesætte beskyttede tomrum onstart() {super. onstart(); mgoogleapiclient. connect();} @ tilsidesætte beskyttede tomrum onstop() {super. onstop(); hvis (mgoogleapiclient!= null & & mgoogleapiclient. isconnected()) (mgoogleapiclient. disconnect();), 2.reklame og acceptere forbindelser, når du har forbindelse til googles api - klient, du kan begynde at arbejde med nærliggende forbindelser.den første del, vi tager over, reklame, som tillader en anordning til at påtage sig den rolle som vært og klare forbindelser mellem forskellige folk for kommunikation, reklame, i sig selv er forholdsvis ligetil.du er simpelthen nødt til at kontrollere, at enheden har en acceptabel form for forbindelse, og så ringer jeg  , i nærheden. forbindelser. startadvertising,   med rette parametre.dette vil give anordning til at reklamere for over dit ian, det er til rådighed for at acceptere forbindelser fra andre ansøgninger. i dette eksempel, vi vedtager i en pause i ti sekunder til reklame.men du kan bestå i en værdi på 0,   at reklamere på ubestemt tid.i det følgende kode,  , isconnectedtonetwork,   er en metode til at kontrollere, om reklame hjælper mente forekommer.,, private tomrum advertise() (hvis (!isconnectedtonetwork()) tilbage, snor navn = "i nærheden af reklame" i nærheden. forbindelser. startadvertising (mgoogleapiclient, navn, nul, connection_time_out, denne). setresultcallback (nye resultcallback < forbindelser. startadvertisingresult > c) {@ tilsidesætte offentlige tomrum onresult (connections.startadvertisingresult resultat) (hvis (resultat. getstatus(). issuccess()) (mstatustext. settext ("reklame");}}})} private boolean isconnectedtonetwork() {connectivitymanager connmanager = (connectivitymanager) getsystemservice (context.connectivity_service) til (int networktype: network_types (ne)tworkinfo info = connmanager. getnetworkinfo (networktype); hvis (info.= null & & info. isconnectedorconnecting()) {tilbage.}} tilbage falske},,,,,, når din vært anvendelse er reklame, vil det være i stand til at modtage forbindelse anmodninger fra jævnaldrende.når en anordning, forsøg på at forbinde følgende metode vil blive kaldt:,, offentlige eller onconnectionrequest (sidste snor remoteendpointid, sidste snor remotedeviceid, sidste snor remoteendpointname, byte [] nyttelast), ved hjælp af denne metode, du kan enten godkende eller forkaste det.at acceptere anmodningen, du ringer, i nærheden. forbindelser. acceptconnectionrequest,   med en, resultscallback,.du kan udføre handlinger, afhængigt af om de er godkendt eller ikke forbindelse med succes.,, for det eksempel, vi vil blot tilføje fjernbetjeningen endpoint til en til at holde styr på det og sendt til en forbundet ligemænd, at dette nye udstyr der er forbundet.hvis du af en eller anden grund bestemme, at anordningen ikke forbindes til din ansøgning, du kan afvise den ved at  , i nærheden. forbindelser. rejectconnectionrequest,.,, @ tilsidesætte offentlige tomrum onconnectionrequest (sidste snor remoteendpointid, sidste snor remotedeviceid, sidste snor remoteendpointname, byte [] nyttelast) (hvis (mishost) (i nærheden. forbindelser. acceptconnectionrequest (mgoogleapiclient, remoteendpointid, nyttelast, denne). setresultcallback (nye resultcallback < status > c) {@ tilsidesætte offentlige tomrum onresult (status, status) (hvis (status. issuccess()) (hvis (!mremotepeerendpoints. indeholder (remoteendpointid)) (mremotepeerendpoints. der tilsættes (remoteendpointid)} mmessageadapter. der tilsættes (remotedeviceid + "forbundet!"); mmessageadapter. notifydatasetchanged(); sendmessage (remotedeviceid + "forbundet!"); msendtextcontainer. setvisibility (view.visible)}}})} andre {i nærheden. forbindelser. rejectconnectionrequest (mgoogleapiclient, remoteendpointid)}},,,,, 3.opdagelse, som reklame, opdagelse er afhængig af at have den, googleapiclient,   og under et acceptabelt netforbindelse.du kan starte discovery ved, at ansøgningen er service identifier i  , i nærheden. forbindelser. startdiscovery,   metode, som sætter deres brugerens anordning til opdagelse tilstand., når anordningen opfanger en vært, som i øjeblikket reklamer ved hjælp af den foruddefinerede service identifier, onendpointfound,   callback vil blive udløst.det bør bemærkes, at denne metode kan blive bedt om flere gange, hvis der er flere værter for radio - og tv - virksomhed.i denne situation, du kan skabe en dialog for deres brugere, der viser alle tilgængelige værter, så de kan vælge, hvor de vil gerne tilsluttes.,, for det eksempel, vi går ud fra, at der kun er en vært reklame i en tid, så vi må straks anmode om, at forbinde ved at  , i nærheden. forbindelser. sendconnectionrequest,.hvis de er accepteret eller afvist af værten,, sendconnectionrequest,   resultat callback vil blive indfriet.hvis de er accepteret, status vil blive fastsat succes, og vi kan redde værten endpoint - id og gør klar til at sende budskaber i den forbindelse kanal.,, private tomrum discover() (hvis (!isconnectedtonetwork()) tilbage, snor serviceid = getstring (r.string.service_id); i nærheden. forbindelser. startdiscovery (mgoogleapiclient, serviceid, 10000l, denne). setresultcallback (nye resultcallback < status > c) {@ tilsidesætte offentlige tomrum onresult (status, status) (hvis (status. issuccess()) (mstatustext settext ("at opdage.");} andre (log. e ("tutsplus", "og ikke" + status. getstatusmessage())}}})} @ tilsidesætte offentlige tomrum onendpointfound (string - endpointid, snor deviceid, sidste snor serviceid, snor endpointname) (byte [] nyttelast = ugyldig; i nærheden. forbindelser. sendconnectionrequest (mgoogleapiclient, deviceid, endpointid, nyttelast, nye forbindelser. connectionresponsecallback() {@ tilsidesætte offentlige tomrum onconnectionresponse (string - endpointid, status, status, byte [] bytes) (hvis (status. issuccess()) (mstatustext. settext ("forbundet med:". endpointid); i nærheden. forbindelser. stopdiscovery (mgoogleapiclient, serviceid); mremotehostendpoint = endpointid; msendtextcontainer. setvisibility (betragtning. synlig); hvis (!mishost) (misconnected = sandt;) andet (mstatustext. settext ("forbindelse" + endpointid + "ikke"); hvis (!mishost) (misconnected = falske}}}} denne)},,,,, i en situation, hvor du hører til flere endpoints for at fremlægge et valg for brugerne,  , onendpointlost,   metode vil lade dig vide, hvis en vært har stoppet reklame, før du bruger har forsøgt at blive forbundet med det.den  , ondisconnected,   callback er også til rådighed for klient anordninger og kan bruges til at reklame værter i tilfælde af en uventet frakoble.,, 4.at sende beskeder, når deres udstyr har koblet sammen, det er tid til at begynde at kommunikere.der er to former for meddelelser, der sendes,  , pålidelige og upålidelige.hvis du er bekendt med netværksteknologi, kan du tænke på disse i form af tcp (transmission control protocol)   og udp (udp - protokol).   en simpel forklaring er, at pålidelige budskaber vil endnu et forsøg på at sende en besked, hvis de ikke, mens upålidelige meddelelser vil ganske enkelt dropper de data, hvis det der er ikke sendt og modtaget.,, for resten, de vil anvende pålidelige beskeder.når en meddelelse er modtaget over api, onmessagereceived,   vil blive indfriet.denne metode accepterer endpoint - id, en nyttelast, og en boolean, med angivelse af, om forbindelsen er pålidelige og upålidelige.lasten   indeholder det budskab og endpoint identifikator er   identifikator for den anordning sendte den besked.,, i stikprøven ansøgning, du vil bruge det til at vise den last, som en snor på, listview,   og, hvis anordningen er vært, de gentages det, at hver tilsluttet apparat.,, @ tilsidesætte offentlige tomrum onmessagereceived (string - endpointid, byte [] nyttelast, boolean isreliable) (mmessageadapter. der tilsættes (nye string (last)); mmessageadapter. notifydatasetchanged(); hvis (mishost) (sendmessage (nye serie (last)}},,, sendmessage,   metode er en hjælper, metode, der viser to udgaver af  , i nærheden. forbindelser. sendreliablemessage,.vært ansøgninger,  , sendreliablemessage,   vil acceptere en liste over endpoints for at sende et budskab.det giver dig mulighed for at kommunikere med flere anordninger med en linje kode.for kunder, meddelelser kun skal gå til vært, så kun værten navn er nødvendig som en parameter med, googleapiclient, og budskabet byte array.,, private tomrum sendmessage (string - meddelelse) (hvis (mishost) {i nærheden. forbindelser. sendreliablemessage (mgoogleapiclient, mremotepeerendpoints budskab. getbytes()); mmessageadapter. tilføj (meddelelse); mmessageadapter. notifydatasetchanged();} andre {i nærheden. forbindelser. sendreliablemessage (mgoogleapiclient, mremotehostendpoint (i nærheden. forbindelser. getlocaldeviceid (mgoogleapiclient) + "siger:" + meddelelse). getbytes())}},,,,, 5.ved at afbryde, når du er klar til at slå på enten værts - eller klient side af den ansøgning, der er en smule op, som skal finde sted.for værter, du er nødt til at stoppe reklame og frakoble alle dine endpoints.,, i stikprøven kode, vil i se, at en meddelelse sendes også, at forsøgene på at lade folk vide, at værten har afbrudt.i en mere fuldstændig app 'en, du ville have dine kunder til at lytte til den slags besked, så de kan håndtere situationen korrekt.,, hvis du forsøger at slå en kunde, som ikke er knyttet til en vært, men du er bare nødt til at stoppe det.hvis du har allerede tilsluttet en vært, du kalder  , disconnectfromendpoint,   og api vil håndtere at afbryde forbindelsen.,, private tomrum disconnect() (hvis (!isconnectedtonetwork()) tilbage, hvis (mishost) (sendmessage ("lukker vært"); i nærheden. forbindelser. stopadvertising (mgoogleapiclient); i nærheden. forbindelser. stopallendpoints (mgoogleapiclient); mishost = falske mstatustext. settext ("forbundet"); mremotepeerendpoints. clear();} andre (hvis (!misconnected



Previous:
Next Page: