2016-05-22 24 views
1

Ich arbeite tatsächlich an einer Android-Handy-Anwendung für Proximity-Marketing, meine App soll Karten und Gutscheine von Vermarkter erhalten und die erhaltenen Artikel anzeigen.Nachrichten in der Nähe api: Wie Bilder und Videos abrufen?

Der folgende Code ist von Google-Entwicklern und es zeigt eine Nachricht Hörer mit Nachrichten von einem BLE Bake empfangen zu analysieren:

mMessageListener = new MessageListener() { 
    @Override 
    public void onFound(Message message) { 
     // Do something with the message here. 
     Log.i(TAG, "Message found: " + message); 
     Log.i(TAG, "Message string: " + new String(message.getContent())); 
     Log.i(TAG, "Message namespaced type: " + message.getNamespace() + 
       "/" + message.getType()); 
    } 

    ... 
}; 

Meine Frage ist:

oberhalb der Nachricht im Code analysiert wird, eine string, so dass es einfach zu handhaben ist, denke ich, in meinem fall muss ich karten und coupons so bilder bekommen .. wie könnte ich mit den empfangenen bildern umgehen?

Antwort

1

Beacon attachments with the Nearby APIs are limited to 1024 bytes von beliebigen Daten, und sind in der Regel Base64-codiert für die Speicherung als Zeichenfolgen. Theoretisch könnten Sie binäre Bilder aufnehmen, Base64 diese kodieren und als Anhänge speichern, aber die Bilder müssten 1024 Byte oder kleiner sein (ohne Base64-Kodierungsaufwand.) Fazit: Anhänge können keine großen Bilder transportieren.

Eine typische Alternative besteht darin, Ihr Image auf einem Webserver unter einer öffentlichen URL zu speichern und die URL im Anhang zu speichern. Anschließend schreiben Sie Code innerhalb der onFound()-Methode, um einen Hintergrund-Thread zu starten, um das Image mit einem HTTP-Client abzurufen. Sobald dies zurückkehrt, können Sie das Bild anzeigen. Sie können an example of fetching an image here.

Natürlich sehen, dieser Netzwerkzugriff erfordern für alles zu arbeiten, aber die Nähe APIs wirklich verlangen, dass, wie auch immer, sonst wäre es unmöglich, die Anlagen von Googles Cloud-Server zu holen.

+0

Vielen Dank David, sehr hilfreich! –