29
Tipo de Código Elabora Modific Lista de Revisad e documento del documento ado por Fe caciones respec e distribución do por Guion o elipe Martínez Álv to a la revisión GUIA ALL Revisión 1.0 varez anterior A DE R LJOYN S A ETOS SDK Aprobado por Nº total de pág ginas

Guia Retos Alljoyn

Embed Size (px)

Citation preview

  • Tipo de Cdigo Elabora Modific Lista de Revisad

    e documento

    del documento

    ado por Fe

    caciones respec

    e distribucin

    do por

    Guion

    o

    elipe Martnez lv

    to a la revisin

    GUIA

    ALL

    Revisin 1.0

    varez

    anterior

    A DE R

    LJOYN S

    A

    ETOS

    SDK

    Aprobado por

    N total de pgginas

  • 1. AL1.1. A1.2. D1.3. A1.4. M1.5. In 2. AL2.1. O2.2. M2.3. C2.4. C2.5. C2.6. C

    LLJOYN OVEAlljoyn SDK ..Descarga del Arquitectura CModelo de Contegracin de

    LLJOYN APP Overview AppManifiesto .....Cdigo ServicCdigo EventCdigo MensaCdigo Desco

    ERVIEW ............................... SDK ..............Cliente-Servi

    onexin .........el SDK ..........

    (CHAT) .........p ...........................................cio Alljoyn ....tos .................ajera .............onexin .........

    ......................

    ......................

    ......................cio ............................................................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    NDICE

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    Pgina

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    ......................

    a 2 de 29

    ....... 3

    ....... 3

    ....... 5

    ....... 7

    ..... 10

    ..... 11

    ..... 15

    ..... 15

    ..... 17

    ..... 19

    ..... 21

    ..... 26

    ..... 28

  • 1. A

    [Video

    Las usuariosocialeaplicacaplicac Alljoyintercaconectconexi [Vide En esun aspfuncionAceptaproxim

    1.1. A

    [Scree

    ALLJOYN O

    o Introducto

    nuevas tecnos independiees no hace mcin mvil sincin porque esyn nace con e

    ambio de datotividad peer-tin entre igua

    eo Reto]

    ste reto aprendpecto conceptnalidades relaa el reto en e

    midad.

    Alljoyn SD

    enCast de W

    OVERVIEW

    orio]

    ologas buscentemente des que consta

    n incluir la constaremos destel fin de ofrec

    os entre las apto-peer o de les.

    ders a utilizatual as como

    acionadas conel que te inic

    K

    Websites // V

    W

    an continuame la plataformatar esta realidnectividad continados al frac

    cen una va deplicaciones sin proximidad

    r el SDK de Ao las diferente la conectivida

    ciars en el fa

    Videos de Fo

    mente que lasma que estn dad. Hoy en dn otros usuaricaso. e comunicacin un servidor apoyndose

    Alljoyn en tus es opciones qad o el intercafabuloso mund

    ondo ]

    s aplicaciones usando. El

    da no podemoos o un estud

    n entre difer remoto. Alljoyen la tecnol

    proyectos conque nos facilitambio de datodo de la com

    s tengan unaauge de la wos contemplardio de esta ne

    ente aplicacioyn se basa enoga WI-FI p

    nociendo su fua este SDK ps en nuestras

    municacin en

    Pgina

    a conectividadweb 2.0 o lasr el desarrollo ecesidad en

    ones para facn el concepto para establec

    uncionamientopara poder ints aplicacionesntre aplicacion

    a 3 de 29

    d entre s redes de una nuestra

    ilitar el de una

    cer una

    o desde troducir . nes por

  • Gener El Scomunlas aplinterca Caract

    Ejemp

    Existenetworconectintegreeste ejcomundesperigual mtratasecomo

    ralidades:

    SDK de Alljoynicacin basadlicaciones. Alljambiar informa

    tersticas: Alljoyns esConectividaSeguridad ConectividaBsqueda Multiplatafocomo C,C+operativo cOpera con

    plo de uso :

    en multitud drking , aplicactada o inteligeen dentro de sjemplo de cas

    nicasen entre rtador para qumanera mediae de un controEl Internet de

    yn nos propordo en conectijoyn hace incaacin sin nece

    Open Sourcead Ad-hoc sinen las comunad peer-to-peede nuevos disorma , el SDK++ o Java lo como Windows los protocolos

    e mbitos deciones de negente. Cada vezsu electrnicasa inteligente s mediante

    ue al sonar todante nuestro Solador de dome las cosas.

    rciona las hevidad Wi-FI dapie en la nec

    esidad de cont

    e podemos en nodo central icaciones. er actuando aspositivos o seK de Alljoynque posibilita s,Linux,iOses Wi-Fi y Wi-F

    e aplicacin docioetc. Vaz es ms haba un sistema opodramos ha

    e una reglas das las maanSmartphone ptica. Este co

    erramientas nde proximidad cesidad de qutar con un inte

    contrar el cd y en igualdad

    a la vez como ervicios por pr esta dispon que podamoetc.

    Fi-Direct.

    del SDK de Aamos a ilustraritual que electoperativo basacer uso de A

    preestablecidnas se comun

    podemos controncepto de red

    ecesarias pa que nos perm

    ue las aplicacioermediario.

    digo fuente en d de condicion

    clientes y servroximidad. nible en difereos hacer uso

    Alljoyn como pr un uso de Atrodomsticos

    sado en LinuxAlljoyn para qudas , por ejenicase con la crolar todos esd de objetos in

    ra poder aamita el intercaones se comu

    GitHub. es.

    vidores dentro

    entes lenguajdel SDK desd

    puedan ser loAlljoyn en el sus como un frig como pueda

    ue los propios emplo , podrcafetera para stos electrodomnterconectado

    Pgina

    adir un protocambio de datouniquen entre

    o de una mism

    es de prograde cualquier s

    os juegos , eupuesto de ungorfico o un laa ser Android. electrodomsamos prograpreparar un cmsticos com

    os tambin se

    a 4 de 29

    colo de os entre s para

    ma red.

    macin sistema

    l social na casa avadora As en stico se amar el caf. De mo si se

    conoce

  • Ejemphttps://https://

    1.2. D CompodremDuran Desdde Anddescarhttps://

    los: /www.youtube/www.youtube

    Descarga d

    mo ya hemos cmos encontrar

    nte el transcude la pgina odroid. Si es largarnos el SD/www.alljoyn

    e.com/watch?fe.com/watch?f

    del SDK

    comentado el Sr diferentes verso del cursooficial de Alljoa primera vezK.

    n.org/docs-and

    feature=playefeature=playe

    SDK de Alljoyersiones del So nos centraryn seleccionaz que visitamo

    d-downloads/a

    er_embedded&er_embedded&

    yn es multiplatSDK segn esremos en la vamos la pestaos la pgina

    android

    &v=2nWezEj1&v=fN-h2is253

    taforma por lo stemos trabajaversin de Ana Dosc/Downos solicitara

    Sco 3o

    que nos podrando sobre unndroid. nloads y sele que nos reg

    Pgina

    remos por lo qna plataforma

    eccionamos la gistremos para

    a 5 de 29

    que nos u otra.

    opcin a poder

  • Una proced Comocarpeta

    Si nosJavadofile:///Frel/java

    Dentrodurant Existe(http:/framewfuncionJava. E

    vez que nos demos a descoo podemos aas:

    C : ContienCpp : ContJava : Conpara trabajcontiene eAndroid. Unity: Conentorno de

    s fijamos en laoc:

    F:/Felipe/UNEDa/docs/html/in

    o de la carpete el curso.

    e la posibilida//developerwork JNI. El unalidad adicioEn la docume

    hemos descomprimirlo paapreciar tene

    ne las librerasiene las librer

    ntiene las librejar con Androl modelo de c

    ntiene las libre Unity3D

    a carpeta Jav

    D/Alljoyn%20Sdex.html.

    eta Java/samp

    ad de trabajar.android.couso de la impleonal pero parantacin oficial

    cargado el ficra ver su contmos una car

    s de Alljoyn coas de Alljoyn eras de Alljoyoid.Dentro de clases del SD

    eras de Alljo

    va/docs/Html p

    SDK/SDK/alljo

    ples/chat pod

    ar con el cdom/sdk/ndk/i

    ementacin na la mayora dl puedes enco

    chero alljoyn-Xtenido. rpeta por cad

    ompiladas en e compiladas eyn compiladas la carpeta Ja

    DK de Alljoyn

    oyn compilada

    podemos obte

    oyn-3.3.0-and

    demos obtene

    digo nativo d/index.html) ativa de Alljoyde los desarroontrar ms info

    X.X.X-android

    da lenguaje d

    el lenguaje C.en el lenguaje s en el lenguaava/jar enconty que utilizare

    as en el leng

    ener el model

    roid-sdk-rel/al

    er la aplicaci

    e Alljoyn hacpara acced

    yn nos ofreceollos ser suormacin sobr

    -sdk-rel.zip q

    de compilaci

    C++. aje Java y sertraremos el ficemos en nue

    guaje C# para

    o de objetos

    lljoyn-3.3.0-an

    n de ejempl

    ciendo uso dder a cdigo un extra de rficiente con lare este aparta

    Pgina

    ue contiene

    n as tenem

    r las que utilchero alljoyn.estros proyect

    a su uso den

    del SDK en f

    ndroid-sdk-

    lo que analiza

    del NDK de Ao nativo derendimiento y a implementac

    ado.

    a 6 de 29

    el SDK

    mos las

    licemos jar que tos con

    ntro del

    formato

    aremos

    Android sde el alguna cin de

  • Arquitectu

    odelo de arqu

    La librera Un serviciocomunicac

    n este modelocarga de realices de comun

    ora de implem

    Implementainterfaz grpropio serv

    ra Cliente-

    uitectura de Al

    para el soporto en segundoin como pue

    o las aplicaciozar la conect

    nicaciones sop

    mentar el servic

    ar el servicio fico que su vico Alljoyn co

    -Servicio

    ljoyn se basa

    te a la parte clo plano que pda ser el regi

    ones se comuividad con losportados (Blue

    cio en segund

    Alljoyn comonica funcionmo parte de n

    en dos partes

    liente de las aproporciona toistro del servic

    unican directams servicios deetooth y Wi-Fi

    do plano tenem

    o un servicio Analidad sea cnuestra aplica

    s claramente d

    aplicaciones odos los servcio o la bsqu

    mente con el e otros dispos).

    mos varias op

    Android. Podecrear el serviccin.

    diferenciadas:

    vicios relacioneda de nuevo

    servicio en seitivos por med

    ciones dentro

    emos crearnocio Alljoyn o p

    Pgina

    :

    nados con el os dispositivos

    egundo planodio de alguno

    o de Android:

    os una aplicacpodemos inte

    a 7 de 29

    bus de s.

    o y este o de los

    cin sin egrar el

  • 2.

    Dentro delencuentra e\alljoyn-3.3 Tomandopgina oficUna vez aservicio cuyo intenciReceiver cresponde asistema op

    Broadcast el servicio a Ms adelacuando veaBajo esta imdisponible que no per

    La siguientque podamproceso mpermisos dcualquier oPodemos e\alljoyn-3.3Bajo esta imdisponible que no rea

    SDK podemen la ruta:

    3.0-android-sdo como platafocial de Androidabierto el proya funcionalidn org.alljoyn.jcuya funcionaal evento BO

    perativo Andro

    podemos apreasociado que ante veremos amos la aplicamplementacila tecnologa

    rmite esta imp

    te posibilidad mos planificar s del sistem

    de administracotro proceso qencontrar el bi3.0-android-sdmplementacila tecnologa liza esta imple

    mos encontrar

    k-rel\cpp\alljoyorma de desad (http://develoyecto podem

    dad se encuenjni.alljoynandr

    alidad se encOOT_COMPLE

    id cuando enc

    eciar como pr en este caso cmo podemacin demostrn solo podrem de Bluetooth lementacin.

    el servicio Allpara que se a. Para pode

    cin que nos ue corre bajo inario del servk-rel\alljoyn-3

    n solo podrem de Bluetooth ementacin.

    un ejemplo d

    yn_android arrollo el bundoper.android.cos apreciar e

    ntra en la claseroidext. Segucuentra en laETED o lo qucendemos nue

    repara la inten es el de alljoy

    mos integrar erativa. mos hacer uso ya que esta

    ljoyn es creanarranque de r realizar estapermita copia Linux. vicio Alljoyn (a.3.0-android-smos hacer uso ya que esta

    de creacin d

    le de Eclipse com/sdk/indexen el manifiee AllJoynAndruidamente tea clase Startue es lo mismestro dispositi

    ncin org.alljoyyn codificado este servicio d

    o del canal deltima requie

    ndo un binariomanera autom

    a accin debear el binario y

    alljoyn-daemonsdk-rel\cpp\bino del canal deltima requie

    de servicio Al

    que podemosx.html) abriremsto como tenroidExt y que rnemos declaServiceReceiv

    mo la finalizacvo.Si abrimos

    yn.jni.alljoynanen la clase Allentro de nues

    e comunicacire un acceso

    o o ejecutable mtico como seremos contar

    planificarlo co

    n) dentro de lan. e comunicacire un acceso

    Pgina

    lljoyn.El proye

    s descargarnomos este proyenemos declarresponde a la

    arado un Brover. Este brocin de la cas la clase del

    ndroidext paralJoynAndroidEstra propia ap

    n de WiFi al n a bajo nivel

    (compilado esi se tratase r con un usuaomo si se trat

    a carpeta del S

    n de WiFi al n a bajo nivel

    a 8 de 29

    ecto se

    os en la ecto. ado un

    a accin oadcast oadcast rga del

    a inicial Ext. licacin

    no estar del API

    en C++) de otro

    ario con tase de

    SDK:

    no estar del API

  • 3.

    Indeservici Tamsolamerecurso

    La ltima

    administracson inevitarequiere deHay que tea lo que hvenden losestndaresBajo una iWiFi o Blue

    pendientemenos del mismo

    bin hay queente cuando os ser mayo

    posibilidad cin deberamables si queree una compilaener en cuentahay que sumas terminales bas de Google pimplementacietooth , tenien

    nte de la imp ser idntica

    e valorar si detengamos nur si el servicio

    es similar a mos contar comos acceder

    acin especfia que cada faar las posiblesajo su propia ueden generan de este tipndo en cuenta

    plementacin q.

    eseamos queestra aplicaci

    o est siempre

    la anterior on un disposit a bajo nivel ca para la pla

    abricante realizs alteracionesmarca. Estas

    an incompatibipo podremos a las limitacion

    que realicemo

    e el servicio sin abierta yae activo.

    pero ademtivo rooteado al API de la tataforma sobrza su propia ims que las pro pequeas difilidades con Ahacer uso delnes comentad

    os del servici

    se inicie comoa que evident

    s de contaro desprotegidtecnologa Blure la que instamplementaci

    opias operadoerencias que

    Alljoyn. l canal de comas.

    o Alljoyn la fo

    o un procesoemente el co

    Pgina

    r con permisdo. Estos requetooth. Esta alaremos el sn de las tecnoras realizan pueda haber

    municacin m

    forma de invo

    o ms del sisonsumo de ba

    a 9 de 29

    sos de quisitos opcin

    servicio. ologas cuando con los

    ediante

    ocar los

    tema o atera y

  • 1.4. M El sigcomun

    1.

    2.

    3.

    4.

    Modelo de

    guiente esquenicacin hacie

    El primer aplicacin establecer

    DeterminarBusObject

    Crear un id

    Llegados a

    a. Cap

    b. Enimen

    Conexin

    ema represenndo uso del S

    paso consistse pueda co

    la comunicac

    r los mtodos para impleme

    dentificador n

    a este punto tr

    rear un grupplicaciones dencontrar otras

    mplementar esncontremos en

    nta los distinSDK de Alljoyn

    te en crear nectar a un bin entre nues

    s e interaccioentar esta func

    nico que sea re

    abajaremos d

    po al que ote que nos hems aplicacionessta funcionalidn las proximid

    ntos pasos qn.

    un BusAttachbus o canal dstra aplicacin

    ones que nuecionalidad.

    representativo

    de forma paral

    ras aplicaciomos conectados por proximidad. De esta

    dades.

    que tienen l

    hment (esto de comunicacn y el resto.

    stra aplicaci

    de nuestra ap

    ela para:

    nes se puedo mediante el idad. Utilizare

    a forma nos p

    ugar para qu

    objeto nos pcin Alljoyn)

    n soporta. Ut

    plicacin.

    dan unir e inenvio de sea

    emos el objetpodremos un

    Pgina 1

    ue se produ

    permite que para que se

    tilizaremos el

    nformar al reales. to BusListeneir a los grup

    10 de 29

    uzca la

    nuestra pueda

    objeto

    esto de

    er para os que

  • 5.

    1.5. I Una para p Tomoficial de Anpasos:

    1.

    2.

    3.

    Comunicar

    ntegracin

    vez que nos oder hacer us

    ando como pde Android (hdroid median:

    Aadir la lmanera mdirectorio liDeberamo

    o Lio Li

    Debemos cen C++ poente Java yPara carga

    staticLog.i(TSystem.

    En el caso

    procedimiedeberemosque un camcaso de Prla documeofuscadorepara que n http://dev

    rnos con otras

    n del SDK

    hemos descaso del SDK.

    lataforma de http://developete el asistent

    ibreras que s rpida de bs desde algu

    os copiar las sb/alljoyn.jar b/armeabi/liba

    cargar la librer lo deberemoy C++ y viceve

    ar la librera a

    {TAG,"Syste.loadLibrar}

    o de usar ofuentos de ingens configurar embio de nomroguard el fichntacin oficia

    es de cdigo o trate las cla

    veloper.and

    s aplicaciones

    argado el SDK

    desarrollo el er.android.comte o sobre un

    contienen el aadir estasuno de los proiguientes libre

    alljoyn_java.so

    ra nativa de aos hacer uso dersa. adiremos el s

    em.loadLibry("alljoy

    uscadores deniera inversa l ofuscador pbres de estas

    hero de configul de cmo hapara Android ses de Alljoyn

    droid.com/gu

    de nuestro gr

    K de Alljoyn e

    bundle de Ecm/sdk/index.htn proyecto ya

    SDK de Alljos libreras a noyectos incluideras conserva

    o

    alljoyn desde de la librera a

    siguiente cdig

    brary(\"allyn_java");

    e cdigo com o simplemeara que no ps impedira quracin es proabra que mo debers infon.

    uide/develo

    rupo.

    l siguiente pa

    clipse que podml) y habinda existente de

    oyn as como nuestro proyedos en el SDKando la estruc

    cdigo. La liballjoyn_java pa

    go:

    ljoyn_java\

    o ProGuard ente para obterocese las claue Alljoyns seoguard.cfg y podificar este firmarte de cm

    oping/tools/p

    aso es prepara

    demos descaronos generadeberamos re

    las dependeecto es copiaK. ctura de directo

    rera actual deara poder real

    \")");

    para protegerener un ejecuases pertenece ejecutase c

    podemos encochero. En el mo debes con

    proguard.htm

    Pgina 1

    ar nuestra ap

    rgarnos en la do un proyectoealizar los sig

    encias asociadarlas directam

    orio:

    e Alljoyn estlizar la comun

    r nuestro cdutable menor tcientes a Alljocorrectamenteontrar un ejem caso de usanfigurar el ofu

    tm

    11 de 29

    licacin

    pgina o nuevo uientes

    das. La ente al

    escrita nicacin

    digo de tamao

    oyn , ya e. En el mplo en as otros uscador

  • El siguienaplicacin aplicacin q Code 43.-optimiza-dontusem-dontskip-dontprev-verbose -optimiza#REQUIRED#(NOTE: c# alljoyn# obfusca-dontwarn-keepattr-keepattr-keep claHT80-BA002-1MAY CONTAIGuide to Al-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla

    nte cdigo mdemostrativa

    que variarn s

    . Sample pationpassesmixedcaseclpnonpubliclverify

    ations !codD FOR ALLJOcould use n samples uated code wn org.alljoributes *Anributes Sigass org.all1 Rev. J 65 QualcIN U.S. AND INTEllJoyn Develass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.allass org.all

    uestra la cona Chat. Resasegn la estru

    roguard.cfs 5 lassnames libraryclas

    de/simplifiOYN TO FUNCkeep classuse org.allwould not boyn.bus.**nnotation*gnature ljoyn.bus.a

    comm Innovation CERNATIONAL EXopment Usingljoyn.bus.iljoyn.bus.Aljoyn.bus.Aljoyn.bus.Bljoyn.bus.Bljoyn.bus.Bljoyn.bus.Bljoyn.bus.Bljoyn.bus.Eljoyn.bus.Iljoyn.bus.Iljoyn.bus.Kljoyn.bus.Mljoyn.bus.Mljoyn.bus.Mljoyn.bus.Mljoyn.bus.Oljoyn.bus.P

    nfiguracin dealtado en rojouctura de nues

    fg file

    sses

    ication/arNCTION WHENs org.alljljoyn.bus.be seen) annotationCenter, Inc.

    XPORT CONTROLg the Java SDifaces.** AnnotationAuthListenBusAttachmBusExceptiBusListeneBusObject*BusObjectLErrorReplyInterfaceDIntrospectKeyStoreLiMarshalBusMessageConMsgArg** {Mutable** OnJoinSessProxyBusOb

    el fichero proo tenemos lastra aplicacin

    ithmetic,!N USED WITHoyn.bus** samples so

    n.** { *; }LLED INFORMATK Android-Sp{ *; }

    nBusExceptiner** { *; ment** { *;on** { *; r** { *; }* { *; }

    Listener** yBusExceptiescription

    tionListenestener** {Exception*

    ntext** { * *; } { *; } ionListene

    bject** { *

    oguard.cfg paas partes esn.

    field/*,!c PROGUARD {*;} but t if you ch

    TION ecific Conside

    on** { *; } } } { *; } on** { *; ** { *; } r** { *; } *; } * { *; } ; }

    r** { *; }; }

    Pgina 1

    ara el ejemplospecficas par

    class/mergi

    the hecked the

    erations

    }

    }

    12 de 29

    o de la ra esta

    ing/*

    .apk

  • 4.

    -keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla-keep cla#Keep all-keep cla-keepclas#-------------- #USER NEEAN EXAMPLE #Need to interface-keep int-keepclas*; } #Need to -keepclaspublic vo} #-------------- -keep pub-keep pub-keep pub-keep pub-keep pub-keep pub-keep pub-keep pubHT80-BA002-1MAY CONTAIGuide to Al-keepclasnative

    ljoyn.bus.Sljoyn.bus.Sljoyn.bus.Sljoyn.bus.Sljoyn.bus.Sljoyn.bus.Sljoyn.bus.Sljoyn.bus.Vljoyn.bus.Vts ements org.class * imp-----------IFY WITH VA

    AllJoyn intg.alljoyn.binterface osignal methclass org.aava.lang.St-----------* extends * extends * extends * extends * extends * extends * extends com.androi

    comm Innovation CERNATIONAL EXopment Usingmbernames c

    mbernames coid.content

    mbernames coid.content

    enum * { values();

    alueOf(java

    ements andrl android.o

    quedara introd

    permisos intro

    ionandroid

    SecurityViSessionLisSessionOptSessionPorSignalEmitSignature*Status** {Variant** VariantTyp

    g.alljoyn.bmplements o----------

    VALUES FROM

    nterfaces abus.sampleorg.alljoy

    thods alljoyn.butring);

    ---------- android.a android.a android.a android.c android.c android.a android.pid.vendingCenter, Inc.

    XPORT CONTROLg the Java SDclass * {

    class * {t.Context,

    class * {t.Context,

    a.lang.Str

    droid.os.Paos.Parcela

    ducir las mod

    oduciremos los

    d:name="and

    olationListener** {

    ts** { *; }rtListener*tter** { *;* { *; } *; } { *; }

    peReferencebus.BusObjerg.alljoyn----------

    M THEIR APP

    and classme.chat.Chat

    yn.bus.samp

    us.sample.c

    ----------pp.Activitpp.Applicapp.Serviceontent.Broontent.Conpp.backup.reference.

    g.licensingLLED INFORMATK Android-Sp

    android.u

    android.u

    ing);

    rcelable {ble$Creato

    dificaciones ne

    s siguientes:

    droid.perm

    tener** { *; } * { *; } }

    ** { *; } ct { *; } .bus.BusOb----------LICATION -

    mbers of ttInterface le.chat.Ch

    hat.AllJoy

    ----------y tion adcastRecetentProvidBackupAgenPreference.ILicensin

    TION ecific Conside

    til.Attrib

    til.Attrib

    r *;

    ecesarias dent

    ission.INT

    Pgina 1

    *; }

    bject {*;} ------------ CHAT USED

    the AllJoyn

    hatInterfac

    ynService {

    -----------

    eiver der ntHelper e ngService

    erations

    buteSet);

    buteSet, in

    tro del manifie

    TERNET">

  • Es improcesdiferen Ya espuedesun ejem

    staramos preps encontrar dmplo de aplica

    spermissiname="andron>spermissiname="andrspermissiname="andr

    Permissiospermissiname="andrespermis:name="andion>

    uesto de que dientes a este

    ra opcional pon el que se inios al definir ervicio de Alljo

    stacar que Allj segundo planes con indep

    parados para ocumentada eacin donde p

    ionroid.permis

    ionroid.permisionroid.permis

    onrequiredionroid.permissiondroid.perm

    no tengamos apartado.

    odremos introdiciara este serla arquitectura

    oyn.

    joyn est dispano que ser endencia de l

    poder hacer en la carpeta

    podremos apre

    ssion.CHANG

    ssion.ACCES

    ssion.CHANG

    dtousethssion.BLUET

    rmission.B

    s conectividad

    ducir un apartrvicio ya sea

    ra cliente-serv

    ponible para el encargadoa plataforma q

    uso de la col Java/docs/Htender el uso d

    GE_WIFI_MU

    SS_WIFI_STA

    GE_WIFI_STA

    heBluetooTOOTH">ssion>

    /uses

    suprimir los pe

    o de Alljoyn as aplicacin. Coidades a la h

    o siempre exisnicaciones en

    DK nos ofreces adelante ve que incluye e

    14 de 29

    es

    ion>ion>

    ermisos

    s como omo ya hora de

    stir un ntre las

    e y que eremos

    el SDK.

  • 2. A

    [Video

    En estlas difAllJoynAceptaproxim

    2.1. O

    [Scree

    UtilizaUna ve\alljoynque co La aptenganpor meaplicac Al inicpoder redirige

    ALLJOYN A

    o Introducto

    te reto veremoferentes funcin y realizar tu a el reto en e

    midad.

    Overview A

    encast app]

    aremos la apliez que hemosn-X.X.X-androontiene el proyplicacin Chat n instalada la edio de Wi-Fi cin y la iniciaciar la a nueestablecer une a la pantalla

    APP (CHAT

    orio]

    os un ejemploonalidades p propia implemel que te ve

    App

    icacin Chat s descomprimioid-sdk-rel\javayecto de Eclip tiene como f aplicacin y o Bluetooth . amos en dos sestra aplicacin canal de coa inicial de la a

    T)

    o de aplicaciodrs conoce

    mentacin en teremos un ej

    incluida dentrido el fichero qa\samples\chase de la aplicafinalidad estabse encuentren Abriremos la sesiones del en ,esta notificomunicacin caplicacin.

    n que implemer mejor el mtus aplicacionemplo prctic

    ro del propio Sque contiene eat acin Chat. blecer un chan prximos pa proyecto des

    emulador paracacin nos in

    con otros disp

    menta el SDK modelo de clanes. co sobre com

    SDK de AllJoel SDK podrem

    at de conversaara poder est

    sde Eclipse coa comprobar sndica que el spositivos. Si p

    de AllJoyn. Mases que imp

    municacin en

    yn como aplicmos visualizar

    acin entre ditablecer una vomo si te tratau funcionamieervico Alljoynulsamos sobr

    Pgina 1

    Mediante un replementa el S

    ntre aplicacion

    cacin demosr el directorio

    istintos usuarva de comunase de cualquento. n se ha iniciadre la notificac

    15 de 29

    epaso a SDK de

    nes por

    strativa.

    ios que nicacin uier otra

    do para in nos

  • AntesexistenChanepestasimblpodem Una vque de Una ventre t Esque Una compo

    de iniciar cuante. Como no el. Vamos a a superior dlico. Seguidam

    mos apreciar cvez que tenemeseen participvez que los ctodos los clien

    ema de Clase vez abierto onen el proyec

    AllJoynSerEsta clasegestin desegundo plChatApplicEsta clase aadir o questado globel punto deactividad ,sChatInterfaEste interfa

    alquier conver tenemos ningcrear un nueerecha y puls

    mente pulsarecomo su estadmos creado el ar en la conve

    clientes se hantes conectado

    es el proyecto d

    cto:

    rvice e hereda de l eventos. La lano para esta

    cation hereda de lauitar observadbal de nuestrae entrada de nservicio o listeace ace implemen

    rsacin tendregn canal cre

    evo canal de samos sobre

    emos sobre el o cambia de canal de comersacin al canan conectado os.

    de la aplicac

    a clase Serv funcionalidadablecer un can

    a clase Applicdores de evena aplicacin e nuestra aplicacner.

    ta el mtodo C

    emos que creaeado nos saldr

    comunicacin el botn Se botn Start idle a adver

    municacin sonal que hemoal canal de c

    cin Chat pod

    vice de Androd de esta clanal de comuni

    cation de Andntos a la aplic iniciar el servcin al ejecuta

    Chat para el e

    ar un canal der una lista van para realizaet Chanel NaChanel para

    rtised. lo tendremos

    os creado medcomunicacin

    dremos visua

    oid e implemease permite imcacin.

    roid e implemcacin. Esta

    vicio Alljoyn. Aarse este mto

    envio de mens

    e comunicaciacia al pulsar ar esta acciname para esp iniciar el cana

    que unir cadadiante el botn podemos ini

    lizar el esque

    enta el interfamplementar e

    menta el interfclase nos ser

    Adems el mtodo antes de

    sajes.

    Pgina 1

    n o unirnos a sobre el botn nos dirigimopecificar un nal de comunic

    a uno de los cn Join Channeiciar la conve

    ema de clas

    az Observer el servicio Allj

    faz Observabrvir para guatodo OnCreatcargar cualqu

    16 de 29

    uno ya n Join os a la nombre cacin ,

    clientes el. rsacin

    es que

    para la oyn en

    ble para ardar el te()ser uier otra

  • 2.2. M Comencont

    DialogBuildEsta clasecualquiera HostActivityEsta clase de eventosObservableEste interfobservadorObserver Este interfaTabWidgetEsta claseaplicacin eUseActivityEsta clase de eventoscontroles pconversaci

    Manifiesto

    mo ya sabemotrar las propie

    der e se utilizar de los botoney hereda de la s. e faz implementres de evento

    az implementat e hereda de en ella se crea

    y hereda de la s.En esta clapara unirnos n y un Listvie

    os el manifiesedades que de

    para constres del interfaz

    clase Activity

    ta los mtodos a la aplicaci

    a el mtodo U

    la clase Tabaran dos pest

    clase Activity ase se imple a un canal ew con las inte

    sto es el archiefinen nuestra

    ruir los dilo grfico.

    de Android e

    os addObsern.

    Update() para

    bActivity de Ataas sobre un

    de Android e ementa la fun

    de comunicaervenciones d

    vo ms impo aplicacin.

    ogos persona

    implementa e

    rver() y delete

    la gestin de

    Android.Ser n contenedor

    implementa encionalidad deacin , la cade los participa

    rtante de un p

    lizados que

    el interfaz Obs

    eObserver() p

    eventos.

    la actividad pde pestaas o

    el interfaz Obse la pestaaaja de texto antes en el ch

    proyecto Andr

    Pgina 1

    aparecen al

    server para la

    para aadir o

    principal de o TabHost.

    server para la a que conten

    para introduchat.

    roid , en el po

    17 de 29

    pulsar

    gestin

    o quitar

    nuestra

    gestin dr los cir una

    odemos

  • Nos cAllJoyn En elotros mno teng

    Ya en compoglobal ChatAcualquTambiUseAc pplicationandroidandroidandroidandroid:nayandroid:ter>

    =".HostActowSoftInpul="AllJoyn

    =".UseActiowSoftInpu

    del manifiesto

    ar como requein de conectimos suprimir

    d:name="and

    ssion.CHANG

    ssion.ACCES

    ssion.CHANG

    dtousethssion.BLUET

    rmission.B

    cmo se utilizon de Androidrvicio Alljoyn.

    nuestra aplicac

    cipal TabWid

    con"p_name"ation">

    get"g/app_name"

    me="androiname="andr

    tivity"tMode="adj

    nChatChan

    vity"tMode="adj

    o que guarda

    erimos permisvidad Wi-Fi y los permisos

    droid.perm

    GE_WIFI_MU

    SS_WIFI_STA

    GE_WIFI_STA

    heBluetooTOOTH">

    "

    Pgina 1

    acin con el S

    tividad con intn el supuesto ntes a este ap

    TERNET">.LAUNCHER"

    18 de 29

    SDK de

    ternet y de que

    partado

    uses

    es

    ion>ion>

    cribir el estado a clase e cargar

    ctivity y

    />

  • < Dentroservicicomun

    2.3. C En lomodelo En eApplicahemos Nos fijpodemplano canal o pAbriremlos m Nos fse encmanejamanejaque en

    and

    s nos encontrabemos este s

    ="AllJoynSe>

    oyn

    s a ir viendo e implementar s como se deos esta clase q

    Create() que cobtener el conAllJoynService

    (){eate()");etApplicatnewIntent=startSerice==nulonCreate()

    e para ver comases del SDK

    Create() vemode ejecucin ymplementadoer actualizar edificar el inter

    nChatChan

    Service">

    amos el servicservicio se e

    Service">

    el funcionamieel canal de coefina la clasque constituye

    constituye el ntexto de la ae. Este servici

    ionContext(this,All

    rvice(intenll){:failedt

    mo este servicK de Alljoyn.

    os como de iny asociarle un

    o en la claseel interfaz grrfaz grfico de

    nnelUsage"

    cio AllJoynSeencargara de

    ento de la apomunicacin ese ChatApplice el punto de

    punto de entaplicacin inicio ser el serv

    t().getPacklJoynServicnt);tostartSer

    cio forma el ca

    nvoca al mtona cola de m BackgroundH

    fico medianteesde otro hilo

    ">

    ervice que se crear y ges

    licacin y comentre aplicacioation para so entrada de la

    trada a nuestciaremos un svicio de Alljoy

    kageName();ce.class);

    rvice()");

    anal de comun

    do startBusThmensajes que

    Handler) , ad el objeto mH que no sea e

    Pgina 1

    e correspondestionar el ca

    mo se ha utilizones. obreescribir laa aplicacin co

    tra aplicacin.servicio en seyn que establ

    ;

    nicacin invoc

    hread(),este ser tratada dems tendreHandler. Recoel hilo principa

    19 de 29

    e con el anal de

    zado el

    a clase omo ya

    . Como egundo ezca el

    cando a

    mtodo por un

    emos el rdemos al de la

  • aplicacnos pe A coobservcualquinforma

    Seguila aplic En lamensaconectaplicacBusOb Por mensaaplicac publiintenSyste

    cin por esa rermite actualizntinuacin ob

    vador o moduier cambio eacin del inter

    damente creacacin y la geas ltimas lneaje de tipo ctar nuestra cin se reprebject para podltimo se invaje de tipo deciones remota

    icvoidonCLog.i(TstartBumChatApmChatApCharSeqCharSeqIntentPending

    nt,0);Notific

    em.currentT

    razn se implzar el interfaz gbtenemos unadelo, siguienden el modelorfaz grfico en

    aremos la notiestionamos coeas invocamoconexin recaplicacin c

    esenta mediader establecer voca al mtoscubrir recog

    as mediante la

    Create(){TAG,"onCreusThread()pplicationpplication

    quencetitquencemesintent=ngIntentpecationnotTimeMillis

    ementa el magrfico. a instancia dedo un esquemo ser rpidan nuestra aplic

    ficacin que aon el mtodo ss el mtodo ccogido por elcon el bus dante el objeto el canal de codo startDisco

    gido por el maa funcin doSt

    eate()");;=(ChatAp

    .addObserv

    le="AllJsage="ChnewIntentndingInten

    ification());

    anejador mHa

    e la aplicacima de MVC

    amente notificcacin.

    aparece en la startForegrouconnect() del l manejador

    de comunicaco BusAttachmomunicacin. overy() del manejador de evtartDiscovery

    pplication)ver(this);

    oyn";atChannel(this,Tabt=Pendin=newNoti

    andler que se

    n para aad (Modelo-Vis

    cado a la vis

    barra de notifnd() para darlmanejador ende eventos

    cin mediantement al que

    anejador en ventos handle()

    )getApplica

    lHostingSbWidget.clangIntent.ge

    ification(R

    ejecuta en e

    dirle nuestro ta-Controlado

    sta-controlado

    ficaciones cade la mxima pn segundo plahandleMessag

    e la funcin dasociaremos

    segundo planMessage() qu

    ation();

    Service.";ass);etActivity(

    R.drawable

    Pgina 2

    el hilo principa

    servicio a moor) de esta mor para actua

    da vez que iniprioridad. ano que invocge() que finadoConnect().N

    s un objeto d

    no que invocue intentara de

    (this,0,.icon,nul

    20 de 29

    al y que

    odo de manera

    alizar la

    iciamos

    cara un almente Nuestra de tipo

    cara un escubrir

    l,

  • Notifapp

    2.4. C Una vservicireprescomo pestapredet UseAc Si Abrlayout usaremque esel intecompocheckiSeguidlas etiqentremA contFinalmgestion publipp

    notificnotific

    fication.FL

    Log.i(TstartFo/**Weh*adva*remo*iss*/mBackgrmBackgr}

    Cdigo Eve

    vez que se ho de Alljoyn sentada por lase carga el i

    as a las queterminada y ej

    ctivity

    imos la clase use de la pmos para escrsta clase implrfaz grfico. S

    onentes del lan().

    damente se inqueta que con

    mos a la aplicatinuacin se in

    mente se aadnar los evento

    icclassUsprivatestapublicvoidLog.i(Tsuper.on

    setCont

    cation.setcation.flagLAG_ONGOING

    TAG,"onCreoreground(N

    haveanAlantageoftotechannestartinguroundHandleroundHandle

    entos

    a ejecutado ese cargara la aa clase TabWinterfaz grfic asociaremosecutamos el c

    UseActivity yprimera pestaribir los mensementa el InteSeguidamenteayout use y

    nvoca al mtontienen el nomacin mostraranvoca al mtodde el observados.

    seActivityaticfinaldonCreateTAG,"onCreCreate(savtentView(R

    LatestEvengs|=NotiG_EVENT|eate():stNOTIFICATI

    lJoynhandthefacttlinstancep.er.connecter.startDi

    el mtodo OnCactividad inicia

    Widget.Si abrimco mediante es las clases Ucdigo asociad

    nos fijamos eaa compuestsajes y un Listerfaz Observee se implemencomprobamo

    odo updateChambre del Canaa los valores ddo updateHistdor a la aplica

    extendsAStringTA

    (Bundlesaeate()");vedInstance.layout.us

    tInfo(thisfication.DNotificati

    artForegroION_ID,not

    lerthreadogetconn

    esintheb

    ();scovery();

    Create() de laal de nuestra

    mos la clase yel layout maUseActivity y Hdo.

    en el mtodo to de unas ettview que coner por lo que cntan diferentes si el servici

    annelState() qal que creem

    de Not set e tory() que actucin mediante

    ActivityimAG="chat.vedInstanc

    eState);e);

    s,title,mDEFAULT_SOUion.FLAG_NO

    ound()");tification)

    drunninganectedtotbackground

    a clase ChatAAplicacin. Eny nos fijamos in y que la HostActivity. F

    OnCreate() ptiquetas ,dos ntendr los mcontar con ues manejadoreio de Alljoyn

    que se encargmos y el estadIdle respectiualiza el Listvie el mtodo a

    mplementsOUseActivit

    ceState){

    message,peUND|O_CLEAR;

    );

    atthistimthebusandwhilethe

    Application y hn nuestro caso en el mtodonica funcionFijamos la pri

    odemos ver cbotones , un

    mensajes. Es n mtodo Updes de eventosesta iniciado

    ga de actualizdo del mismo.ivamente. ew de los menddObserver()

    Observer{ty";

    Pgina 2

    endingInte

    me,sotakdstartfirestoft

    hemos inicializo esta activido OnCreate()

    nalidad es creimera pestana

    como se estabna caja de teximportante fijadate() para res para los difemediante el

    zar la informa. La primera v

    nsajes. para que se

    21 de 29

    nt);

    endinghe

    zado el ad est vemos ear dos a como

    blece el xto que arse en efrescar erentes mtodo

    cin de vez que

    puedan

  • androTextVKeyEvKeyEvmessastartournot

    mHistoroid.R.layouListViehlv.setEditTexmessage

    View.OnEditpub

    ventevent)

    vent.ACTION

    age+")");

    }});mJoinBumJoinBupub }});mLeaveBmLeaveBpub}});mChannemChanne/**Keep*ast

    ted*wen*requ*/mChatApmChatAp/**Call*outl*just*/updateCupdateH

    ryList=neut.test_lisewhlv=(tAdapter(mH

    xtmessageBeBox.setOntorActionLblicboolea){if(actioN_UP){ StrinLog.;mChatAview.s}returnt

    utton=(Button.setOblicvoidoshowDialo

    Button=(BButton.setOblicvoidoshowDialo

    elName=(TelStatus=

    papointetheModelfneedto"cuiredservpplicationpplication

    ldownintolivesitsAtempty.ChannelStatHistory();

    ewArrayAdst_item);ListView)HistoryLis

    Box=(EdiEditorActiistener()anonEditoonId==Edgmessagei(TAG,"usApplicationsetText("")

    rue;

    utton)findnClickListonClick(Viog(DIALOG_

    Button)finOnClickLisonClick(Viog(DIALOG_

    TextView)f(TextView

    rtotheAforourMVheckin"wicesarer=(ChatAp

    .checkin()

    othemodeActivities

    te();

    apter(this,yId(R.id.us

    dViewById(Rr(newextViewvieIME_NULL&&tText().toSonEditorAct

    UserMessag

    R.id.useJoiView.OnClic

    (R.id.useLeView.OnCli

    Id(R.id.useById(R.id.u

    pliationclpplication.

    pplication

    )getApplica

    itscurrentyactually

    seHistoryLi

    R.id.useMes

    ew,intact&event.getString();tion():gote(message)

    in);ckListener(

    eave);ickListener

    eChannelNamuseChannelS

    lassaround.Whenevsoitcan

    ation();

    tstate.Sbealoto

    Pgina 2

    ist);

    ssage);

    tionId,tAction()

    tmessage;

    (){

    r(){

    me);Status);

    d.Weuseverweareensureth

    Sincetheofstatea

    22 de 29

    ==

    "+

    this

    at

    modelnd

  • notif}

    Una a la eshemossobre HostA Si Abrlayout en querefrescdiferenmtodoSeguidlas etiqentremFinalmgestionpublip

    /**Now

    fications*from*/mChatAp

    }

    vez que se haspera de la ins visto deberela pestaa su

    Activity

    rimos la clase host de la se esta clase car el interfazntes componeo checkin(). damente se inqueta que con

    mos a la aplicamente se aadnar los eventoicclassHoprivatesta

    thatwe'remothercompplication

    a ejecutado elnteraccin delmos acceder perior derecha

    e HostActivity ysegunda pestaimplementa

    z grfico. Segentes del layou

    nvoca al mtontienen el nomacin mostrarade el observados. ostActivityaticfinal

    eallreadmponents.

    .addObserv

    l mtodo OnC usuario. El sa la pestaa sa se cargar l

    y nos fijamos aa compuesel Interfaz Ouidamente seut host y com

    odo updateChambre del Canaa los valores ddor a la aplica

    yextendsStringTA

    ytogo,w

    ver(this);

    Create() de la csiguiente pasosuperior dereca actividad Ho

    en el mtodosto de unas etbserver por le implementanmprobamos si

    annelState() qal que creem

    de Not set e cin mediante

    ActivityiAG="chat.

    weareread

    clase UseActivo sera crear cha para realostActivity.

    OnCreate() ptiquetas y cuao que contarn diferentes mi el servicio de

    que se encargmos y el estadIdle respectie el mtodo a

    implementsHostActivi

    dytoaccep

    vity nuestro prel canal de cizar esta acci

    podemos ver catro botones. Er con un mmanejadores e Alljoyn esta

    ga de actualizdo del mismo.ivamente. ddObserver()

    Observer{ity";

    Pgina 2

    pt

    rograma se qucomunicacin n. Segn pu

    como se estabEs importantetodo Updatede eventos p iniciado med

    zar la informa. La primera v

    para que se

    {

    23 de 29

    uedara , como

    ulsemos

    blece el e fijarse e() para para los iante el

    cin de vez que

    puedan

  • pstartournotnotif

    publicvoidLog.i(Tsuper.osetContmChannemChannemChannemChannemSetNammSetNammSetNampub }});mStartBmStartBmStartBpub}});mStopBumStopBumStopBupub}});/**Keep*ast

    ted*wen*requ*/mChatApmChatAp/**Call*outl*just*/updateC/**Now

    fications*from

    donCreateTAG,"onCreonCreate(satentView(R

    elName=(TelName.setT

    elStatus=elStatus.se

    meButton=meButton.semeButton.seblicvoidoshowDialo

    Button=(BButton.setButton.setOblicvoidoshowDialo

    utton=(Button.setEutton.setOblicvoidoshowDialo

    papointetheModelfneedto"cuiredservpplicationpplication

    ldownintolivesitsAtempty.ChannelStat

    thatwe'remothercom

    (Bundlesaeate()");avedInstan.layout.ho

    TextView)fText("");

    (TextViewetText("Id

    (Button)fetEnabled(etOnClickLonClick(Viog(DIALOG_

    Button)finEnabled(faOnClickLisonClick(Viog(DIALOG_

    utton)findnabled(falnClickListonClick(Viog(DIALOG_

    rtotheAforourMVheckin"wicesarer=(ChatAp

    .checkin()

    othemodeActivities

    te();

    eallreadmponents.

    vedInstanc

    ceState);ost);findViewByI

    w)findViewBle");

    findViewByItrue);istener(neewv){SET_NAME_I

    dViewById(lse);tener(newewv){START_ID);

    ViewById(Rlse);ener(newVewv){STOP_ID);

    AndroidAppVCbasedapwiththeaprunning.pplication);

    eltogeti,thismay

    ytogo,w

    ceState){

    Id(R.id.hos

    ById(R.id.h

    Id(R.id.hos

    ewView.OnCID);

    (R.id.hostS

    View.OnCli

    R.id.hostSt

    View.OnClic

    pliationclpplication.

    pplication

    )getApplica

    itscurrentyactually

    weareread

    stChannelNa

    hostChannel

    stSetName);

    ClickListen

    Start);ickListener

    top);ckListener(

    lassaround.Wheneversoitcan

    ation();

    tstate.Sbealoto

    dytoaccep

    Pgina 2

    ame);

    lStatus);

    ;ner(){

    r(){

    (){

    d.Weuserweareensureth

    Sincetheofstatea

    pt

    24 de 29

    this

    at

    modelnd

  • Establ

    ENamela clahostSefuncionHOST_

    E

    que imeventoproceseventosegundBackg

    Elos dife

    */mChatApmQuitBumQuitBumQuitBupub}});}

    lecer canal d

    El siguiente p para asociar

    ase DialogBuetChannelNamnes se _INIT_CHANN

    Estos eventosmplementen el os (de primer sado por el Ho (de tercer ndo plano .EsroundHandler

    Esta forma deferentes comp

    pplication

    utton=(Button.setEutton.setOblicvoidomChatApp

    e comunicac

    paso para podr un alias al cauilder y en me() y hostIni

    lanzarn NEL_EVENT.

    son procesad interfaz Obsenivel) que que

    Handler de canivel) si deseaste evento dr. tratar los eve

    ponentes que

    .addObserv

    utton)findnabled(trunClickListonClick(Vilication.q

    cin

    der estableceanal de comuneste caso tChannel() dlos event

    dos en primeerver. Ya en eeremos tratar ada clase. En amos que el e tercer grad

    entos es la m forman el m

    ver(this);

    ViewById(Re);ener(newVewv){uit();

    er la comunicanicacin. La fal pulsar so

    de la clase Chtos HOST

    ra instancia pel mtodo Upd y se generara el caso de levento sea t

    do ser proc

    manera que tieodelo MVC (

    R.id.hostQu

    View.OnClic

    acin ser puuncionalidad dobre el bothatApplication

    T_CHANNEL_

    por el mtodo date de cada ca un nuevo evla clase AllJotratado por ecesado con e

    ene la aplicaciModelo-Vista-

    uit);ckListener(

    ulsar sobre ede todos boton se invocan. Mediante laSTATE_CHAN

    Update de toclase se realizvento (de segoynServices pl hilo que se el Handler d

    n para pode-Controlador).

    Pgina 2

    (){

    el botn Set ones se encuearn las funa ejecucin deNGED_EVEN

    odas aquellaszar un filtradoundo nivel) qu

    podr generar est ejecuta

    de la clase a

    er comunicarsDe esta form

    25 de 29

    Chanel entra en nciones e estas

    NT y

    s clases o de los ue ser rse otro ndo en

    anidada

    se entre ma cada

  • uno degrfico

    DdetallaJoin C

    2.5. C Ya emensa Recibi El pues la fu En esChatA @psystectx.sctx.s

    e los componeo o establecer De igual manearla. Ya solo nChannel de la

    Cdigo Me

    estamos coneajes que interv

    ir mensajes:

    unto de entraduncin Chat dsta funcin sepplication()

    @BusSignalHpublicvoid

    /**Seet*whyt**Theo*throu*signa*local

    */StringuMessageC

    Log.i(TLog.i(T/**Alwa

    em.*/if(ctxLog

    sessionId); re}

    /**Drop*/if(mJoLog

    sessionId+ re

    entes puede h el canal de coera la operativos quedara p

    a primera pest

    ensajera

    ectados a un cvienen en el C

    da de la aplicadel interface Ce obtiene infor

    Handler(ifadChat(Str

    helongcohisisneenlytimewghisifwlisus,wlyechoth

    niqueNameontextctxTAG,"ChatTAG,"Chat

    aysdropo

    x.sender.eqg.i(TAG,"C;eturn;

    psignalsooinedToSelfg.i(TAG,"C+"whennoeturn;

    hacer su propomunicacin. va para el respulsar sobre lotaa para unir

    canal de comChat.

    acin cuando hatInterface srmacin del re

    ace="orgingstring

    ommentindeded.weallowaweareinmwealsofilhesignal.

    =mBus.getx=mBus.ge():usese():messag

    urownsig

    quals(uniqChat():dr

    onthehosf==falseChat():drotjoined

    pio tratamiento sto de botoneos botn Starrnos al canal y

    municacin y l

    recibe un mesobrescrita en emitente y se

    g.alljoyn.bg){

    doJoinSessi

    signalfromJoinedToSelteroutth

    tUniqueNameetMessageCoessionIdisgesessionI

    gnalswhich

    ueName)){roppedour

    tedsessioe&&ctx.seroppedsigntoself");

    o para cada e

    es sera la mrt Channel pay poder empez

    istos para ve

    nsaje por el c la clase Alljoy invoca al mt

    bus.samples

    ion()for

    omthehoselfstate.hesignal

    e();ontext();s"+mUseSIdis"+c

    hmaybeec

    {ownsignal

    onunlesswessionId==nalreceive

    evento ya sea

    isma por lo qara iniciar el cazar a recibir m

    r cmo se en

    canal de comuynService . todo newRem

    s.chat",si

    moreexpla

    tedsessioIfthessincewea

    SessionId);ctx.session

    choedback

    lreceived

    wearejoin=mHostSessedonhoste

    Pgina 2

    a refrescar el

    que no entrareanal y sobre e

    mensajes.

    nvan y proce

    unicacin esta

    moteUserMess

    ignal="C

    anationof

    onIDtopasourceoftaregoingt

    ;nId);

    fromthe

    onsessio

    nedtoselsionId){edsession

    26 de 29

    interfaz

    emos a el botn

    san los

    ablecido

    sage de

    hat")

    asstheto

    n"+

    f.

    "+

  • nicknnickn Si nomodo mtodoHISTOlas clasegundtodos botn s

    Enviar El printrodueventose invo

    }

    /**Tok*nick*just*/Stringnicknam

    name.lengthLog.i(T

    name);mChatAp}

    os fijamos en de regin cro addHisto

    ORY_CHANGEases que impdo nivel para tlos mensajes solamente ca

    r mensajes:

    roceso para eucido un menso de editar texoca al mtodo

    keeptheakname.Wetusethenickname=me=nicknah());TAG,"Chatpplication

    la funcin nertica al produryItem() quED_EVENT. Eplementen el terminar invoc del Chat. El tmbia el emiso

    enviar un mesaje en la cajaxto se encueno newLocalUs

    pplicationwanttoi

    uniquenam=ctx.sendame.substr

    ():signal.newRemote

    ewRemoteUseucirse concure aade Este evento s interfaz Obscando a la funtratamiento de

    or del evento q

    ensaje empieza de texto quentra en el mterMessage()

    simple,wdentifyth

    meoftheser;

    ring(nickna

    "+strineUserMessag

    erMessage() prrencia entre el mensaje

    ser tratado eserver. Seguidncin updateHel evento es sque en este ca

    za con la pule existe para etodo OnCreatede la clase C

    wedidn'tfhemessagesender'sbu

    ame.length(

    ng+"recege(nickname

    podemos ver procesos. Es

    e a una en primera insdamente se

    History() que asimilar al que aso es el serv

    lsacin de la este fin. El cde() de la clasehatApplication

    forceuserssourcesom

    usattachme

    ()10,

    eivedfrome,string);

    que esta sinsta funcin te

    lista y tancia por el generar el ectualizar el L se realiza coicio Alljoyn.

    tecla Enterdigo del listenee UseActivity.n. Esta funcin

    Pgina 2

    stochoosmehow,soent.

    nickname;

    ncronizada y aermina invocaemite el mtodo Updaevento asocia

    Listview que con la pulsacin

    despus deer correspond. Podemos ven esta sincron

    27 de 29

    eawe

    "+

    acta a ando al evento

    ate() de ado de ontiene n de un

    e haber iente al

    er como nizada ,

  • al iguaal prodque aser tObservasociaenviaraun everealiza

    2.6. C Para de la alisteneHostAcemite eUpdateUserAcque lacorres

    Si noseventoconexi

    al que lo ocurrducirse concuade el mensaratado en priver ,en este

    ado de seguna el mensaje ento HISTORara para un m

    Cdigo De

    terminar ya saplicacin. La

    er correspondctivity. Podemel evento APPe() de las clactivity se ejec actividad se pondiente par

    s fijamos en los de tercer niones.

    ra con la funcurrencia entre aje a una listaimera instanccaso solo lodo nivel y teinvocando la

    RY_CHANGEDmensaje extern

    sconexin

    solo nos queda salida de laiente al even

    mos ver como PLICATION_Qases que impcutar el mto destruya , sera liberar los O

    la clase AllJonivel que com

    cin newRemo procesos. Es de salida y e

    cia por el mo tratara la clrcer nivel parfuncin Chat(

    D_EVENT parno.

    n

    ara revisar ea aplicacin sento de pulsacse invoca al m

    QUIT_EVENT.plementen el odo finish() dee deber ejecuObservadores

    oynService poo en las clase

    oteUserMessasta funcin teremite el eventotodo Updatelase AllJoynSra terminar in() del interfacera actualizar

    l procedimiene inicia al pucin se encumtodo quit() . Este evento interfaz Obs

    el SDK se Andutar el mtod creados.

    odemos ver ces anteriores

    age() , por lo qrmina invocano OUTBOUND() de las cla

    Service. Segunvocando a lae ChatInterfacel Listview de

    to de desconelsar el botn

    uentra en el de la clase Cser tratado e

    server. As pudroid que deso OnDestroy(

    como en el m tienen la fina

    que acta a mndo al mtodoD_CHANGED_ses que implidamente se

    a funcin doSce al mismo tieel Chat del m

    exin cuando Quit Applicamtodo OnC

    ChatApplicationen primera insues en las cstruir la activ) del ciclo de

    manejador de alidad de liber

    Pgina 2

    modo de regino addOutboun

    D_EVEN. Este lementen el generar el

    SendMessageempo que se

    mismo modo

    realizamos laation . El cdCreate() de lan y seguidamstancia por el clases HostAcvidad, pero ane vida de la ac

    la clase se irar recursos y

    28 de 29

    n crtica ndItem() evento interfaz evento

    s() que genera que se

    a salida digo del a clase ente se mtodo ctivity y ntes de ctividad

    nvocan y cerrar

  • caseAPPLI

    eHANDLE_AP

    ICATION_QUI

    PPLICATION_{LoIT_EVENT")mBmBmBmBmBst}brea

    _QUIT_EVEN

    og.i(TAG,";BackgroundHBackgroundHBackgroundHBackgroundHBackgroundHtopSelf();

    k;

    NT:"mHandler.h

    Handler.leaHandler.canHandler.unbHandler.relHandler.exi

    handleMess

    aveSessionncelAdvertbindSessioleaseName(it();

    age():();ise();n(););

    Pgina 2

    29 de 29