Vous êtes sur la page 1sur 28

SUPERIORIDAD AREA

EN APLICACIONES ANDROID
Sal Daz Gonzlez
saul@tuenti.com

Wi-Fi 802.11 N
Bluetooth 3.0 + HS
Near-Field Comm.

Cmo mejorarlo? Le pondremos Bluetooth. Todo es mejor
con Bluetooth!
-Sheldon Cooer

B!s"ueda
#cetar
Conectar
$escu%rimiento
Emparejados

Conectar
C
r
e
a
r
$escu%rir
Bluetooth
#dater
Bluetooth
$e&ice
Bluetooth
#dater
Bluetooth
Soc'et
Bluetooth
Ser&er
Soc'et
#cetar
Clases !la"e

B()*+,,+H
B()*+,,+H-#$./N
mBt#dater 0
Bluetooth#dater.1et$e2ault#dater345
mBt#dater 00 null6
/ntent3Bluetooth#dater.#C+/,N-7*8)*S+-*N#B(*45
start#cti&it9For7esult3intent: 7*8)*S+-*N#B(*-B+45
Si
A!#$"ando el %l&e#oo#'

Des!&(r$m$en#o
Cl$en#e Ser"$dor
mBt#dater.start$isco&er9345
/ntent3Bluetooth#dater.
#C+/,N-7*8)*S+-$/SC,;*7#B(*45
/ntent.ut*<tra3Bluetooth#dater.
*=+7#-$/SC,;*7#B(*-$)7#+/,N:
30045
/ntentFilter3Bluetooth$e&ice.
#C+/,N-F,)N$45
re1ister7ecei&er3m7ecei&er:
2ilter45
intent.1et>arcela%le*<tra3
Bluetooth$e&ice.*=+7#-$*;/C*45

Cone)$*n
Cl$en#e Ser"$dor
mBt#dater.
listen)sin172commWithSer&ice7ecord3N#.*:
.?-))/$45
ser&erSoc'et.accet345
%t$e&ice.
create72commSoc'et+oSer&ice7ecord3
.?-))/$45
clientSoc'et.connect345
in 0 soc'et.1et/nutStream345
out 0 soc'et.1et,ututStream345
in.read3%u22er4 @@Bu22er is %9teAB
out.Crite3%u22er4

Cualquier tecnologa lo su!icientemente a"an#ada es
indistingui$le de la magia
-#rthur C. Clar'e

Andro$d %eam
Write 7ead
N+C ,a-

Header >a9load
/denti2ier (en1th +9e
N+C Da#a E)!'an-e +orma# .NDE+/
7ecord1 7ecord2 ... 7ecordN

Re0&$s$#os N+C
NFC
Uses Perm$ss$on In#en# +$l#er
android.n2c.action.N$*F-$/SC,;*7*$

Leer &n mensaje NDE+
public void onNewIntent(Intent intent) {
if (NfcAdapter.ACTION_NDEF_DISCOVERED.
equals(intent.getAction())) {
Parcelable[] rawMsgs = intent.
getParcelableArra!"tra(
NfcAdapter.EXTRA_NDEF_MESSAGES)#
NdefMessage[] $sgs#
if (rawMsgs %= null) {
$sgs = new NdefMessage[rawMsgs.lengt&]#
for (int i = '# i ( rawMsgs.lengt&# i))) {
$sgs[i] = (NdefMessage) rawMsgs[i]#
*
*
++Process Messages
*
*

Op!$ones de d$spa#!'$n-
N+C +ore-ro&nd
D$spa#!'
Class$! In#en#
D$spa#!'
Andro$d App
Re!ord
mN2c#dater.
ena%leFore1round$isatch3
...45
mN2c#dater.
disa%leFore1round$isatch3
this45
Nde27ecord.
create#lication7ecord3
Dcom.e<amle.n2c.%eamE45

Es!r$($r en &na ,a-
private void write(,ag tag) throws I-!"ception.
/or$at!"ception {
Ndef0ecord[] records = { create0ecord() *#
NdefMessage $essage = new NdefMessage(records)#
++ 1et an instance of Ndef for t&e tag.
Ndef ndef = Ndef.get(tag)#
++ !nable I+-
ndef.connect()#
++ 2rite t&e $essage
ndef.writeNdefMessage($essage)#
++ 3lose t&e connection
ndef.close()#
*

Andro$d %eam
public class 4luetoot&3&at extends Acti5it implements
3reateNdefMessage3allbac6{
7-5erride
public NdefMessage createNdefMessage(Nfc!5ent e5ent) {
try {
Ndef0ecord[] records = { create0ecord() *#
NdefMessage $essage = new NdefMessage(records)#
return $essage#
* catch (8nsupported!ncoding!"ception e) {
++9andle error &ere
*
return null#
*

$emo timeF

Chuc% &orris puede estrangular a un hom$re con el ca$le
de una cone'in (i)*i.
->ro&er%io chino

%, 123 4$+$ 33- 4$+$ 33n
1<
28<
155)
%, 62578S
12<

Gro&p O9ner
Peers

I!e Cream
Sand9$!'
Perm$sos
#CC*SS-W/F/-S+#+*
CH#NG*-W/F/-S+#+*
CH#NG*-N*+W,7H-S+#+*
/N+*7N*+
#CC*SS-N*+W,7H-S+#+*
Re0&$s$#os 4$:+$ D$re!#

4I+I;P1P;CONNEC,ION;C8ANGED;AC,ION
4I+I;S,A,E;C8ANGED;AC,ION 4I+I;P1P;PEERS;C8ANGED;AC,ION
4I+I;P1P;,8IS;DE<ICE;C8ANGED;AC,ION
Con &n re!e$"er "o= so(rado

Listener Mtodos Eventos
ActionListener
connect(),
cancelConnect(),...
onSuccess()
onFailure()
ChannelListener initialize() onChannelDisconnected()
ConnectionInfoListener requestConnectInfo() onConnectionAvailable()
GrouInfoListener requestGrouInfo() onGrouInfoAvailable()
!eerListListener request!eers() on!eersAvailable()
> es#o es #odo lo 0&e 'a= 0&e sa(er

Peer a la "$s#a
$Manager = (2ifiP:pManager)
get;ste$;er5ice(3onte"t.2I/I<P:P<;!0=I3!)#
$3&annel = $Manager.initiali>e(this. getMain?ooper(). null)#
$0ecei5er = new 2i/i@irect4roadcast0ecei5er($Manager.$3&annel.this)#

$Manager.disco5erPeers(c&annel. new 2ifiP:pManager.Action?istener() {
7-5erride
public void on;uccess() {
++success logic
*
7-5erride
public void on/ailure(int reason3ode) {
++failure logic
*
*)#

if (2ifiP:pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
if ($Manager %= null) {
$Manager.requestPeers($3&annel. new Peer?ist?istener(){
7-5erride
public void onPeersA5ailable(2ifiP:p@e5ice?ist list) {
++8pdate Peer ?ist. data $odel. etc...
*

*)#
*
*
?$en#ras en el re!e$"er222

2ifiP:p@e5ice de5ice = new 2ifiP:p@e5ice()#
2ifiP:p3onfig config = new 2ifiP:p3onfig()#
config.de5iceAddress = de5ice.de5iceAddress#
$Manager.connect($3&annel. config. new Action?istener() {
7-5erride
public void on;uccess() {
++read for connecting t&roug& a soc6et
*
7-5erride
public void on/ailure(int reason) {
++failure logic
*
*)#
+re!&en!$as de llamadas a($er#as

S&per$or$dad a@rea
?-$!o
Sen!$llo

I.uchas 1raciasF
Sal Daz Gonzlez
saul@tuenti.com
+se!!ord

Vous aimerez peut-être aussi