Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Compartiendo data con Android Beam

Compartiendo data con Android Beam

Compartir no siempre tiene que ser a través de posts de social media. En el Mundo Real™ podemos usar Android Beam para enviar y recibir información de forma fácil, rápida y mágica. En esta sesión aprenderemos cómo.

Avatar for Jhoon Saravia

Jhoon Saravia

December 05, 2015

Other Decks in Programming

Transcript

  1. @jsaravia GDG ¿Qué es NFC? Near Field Communication Rango corto

    (< 5cm) Transferencia lenta (106 - 404 kbit/s) Conexión directa
  2. @jsaravia GDG ¿No es muy poco el rango? Rango como

    ventaja Interacción digital con objetos físicos Permite ser selectivo Beam me up, Android!
  3. @jsaravia GDG ¿Qué se puede hacer con NFC? Pagos Tickets

    - Vouchers Juegos en la Vida Real™ Automatización Mapeo de objetos reales a URLs
  4. @jsaravia GDG NFC en Android Soporte a tags pasivos APIs

    para escribir, leer y dar formato Lanzar la app indicada
  5. @jsaravia GDG Android Beam™ Compartir lo que está en pantalla

    Tocar ambos dispositivos Cualquiera puede enviar información
  6. @jsaravia GDG ¿Por qué debe interesarme NFC? La gente ama

    las novedades Puede ser un diferenciador No toma mucho esfuerzo
  7. @jsaravia Implementando NFC Activity A App que Envía Servicio NFC

    Activity B App que Recibe Servicio NFC Datos (NDEF) startActivity(nfcIntent) Datos (NDEF) Datos (NDEF)
  8. @jsaravia Construyendo un NDEF Record Creando un URI NdefRecord uriRecord

    = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_URI, "id".getBytes(), "http://developer.android. com/index.html".getBytes()); De la forma fácil Uri uri = new Uri("http://developer.android.com/index.html"); NdefRecord uriRecord = NdefRecord.createUri(uri);
  9. @jsaravia Enviando un Mensaje NDEF Creando un URI para la

    app Uri google = new Uri("http://www.google.com"); NdefRecord uriRecord = NdefRecord.createUri(google); Indicando la app NdefRecord aarRecord = NdefRecord .createApplicationRecord("com.example.myapp"); Enviando el mensaje NdefMessage msg = new NdefMessage(uriRecord, aarRecord);
  10. @jsaravia En contexto Enviando el Mensaje public class Beam extends

    Activity implements NfcAdapter.CreateNdefMessageCallback { void onCreate(Bundle savedInstanceState) { NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this); // Registrando el Callback adapter.setNdefPushMessageCallback(this, this); // También puede ser estático (pero no los dos) // adapter.setNdefPushMessage(msg, this); } }
  11. @jsaravia Más contexto Cuando se detecta la presencia de NFC

    public NdefMessage createNdefMessage(NfcEvent event) { // Creando los NdefRecords NdefRecord text = NdefRecord .createTextRecord("UTF-8”, "Usemos NFC!"); NdefRecord aar = NdefRecord .createApplicationRecord("com.example.myapp"); // Retornando el NdefMessage return new NdefMessage(text, aar); }
  12. @jsaravia Configurando el Activity Agregamos un Intent Filter en el

    Manifest <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter>
  13. @jsaravia Procesando el mensaje public void onResume() { super.onResume(); ...

    if (NfcAdapter.ACTION_NDEF_DISCOVERED .equals(getIntent().getAction())) { Parcelable[] rawMsgs = intent .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMsgs != null) { msgs = new NdefMessage[rawMsgs.length]; for (int i = 0; i < rawMsgs.length; i++) { msgs[i] = (NdefMessage) rawMsgs[i]; } } } // terminamos de procesar el arreglo de mensajes }
  14. @jsaravia Para recordar Mensaje = nuevo task stack Para evitarlo,

    ir al manifest: <activity android:launchMode=”singleTask” >