Wie tauschen Sie Nachrichten zwischen 2 Android-Geräten über WLAN und Bluetooth ohne Internet aus?

Ich arbeite derzeit an der Erstellung einer Anwendung für mobile Geräte mit Android, die in der Lage sein sollte, Nachrichten über lokale Mittel wie WLAN und Bluetooth zu senden und zu empfangen. Nachdem ich darüber recherchiert hatte, fand ich heraus, dass Android keine native WLAN-Ad-hoc-Funktionalität hat und dass der einzige Weg, dies zu erreichen, darin besteht, Ihr Gerät zu rooten und wpa_suplicant und einige andere ähnliche Methoden zu patchen, die nicht für jedes Gerät generisch sind .

Zusammenfassung dessen, was ich erreichen möchte:

Eine Anwendung für Android, die nach Geräten in der Nähe sucht und versucht, sich automatisch mit ihnen zu verbinden. Wenn das andere Gerät diese Anwendung ebenfalls installiert hat, akzeptiert es automatisch jede Verbindungsanfrage, die es erhält, und wenn die Verbindung hergestellt ist, sendet es eine Nachricht zurück, die sicherstellt, dass diese App installiert ist, sodass beide automatisch mit dem Austausch von Nachrichten beginnen können und die Benutzer nicht. Sie müssen das Senden/Empfangen in Echtzeit nicht zulassen/verweigern.

Meine Fragen sind:

  1. Gibt es eine Möglichkeit, Nachrichten über WLAN zwischen 2 Android-Geräten ohne Verwendung des Internets zu senden?

  2. Da Ad Hoc nicht unterstützt wird, gibt es eine Alternative?

  3. Falls die Antwort auf 2 Nein lautet, ist es möglich, eines der Geräte als Zugangspunkt zu verwenden, damit das andere sich mit ihm verbinden kann und umgekehrt.

  4. Ist es bei Bluetooth möglich, das Zulassen/Ablehnen-Popup einer eingehenden Verbindung und den Kopplungsvorgang zu überspringen oder zu automatisieren?

Ich würde mich freuen, wenn Sie mir darauf eine Antwort und/oder Anregungen geben könnten.

Entschuldigung, aber Entwicklungsfragen sind hier nicht zum Thema und gehören auf Stack Overflow . Bitte werfen Sie einen Blick auf unsere FAQ , um zu sehen, was für diese Seite relevant ist.
Ich denke, diese Frage ist fair für diese Seite. Es wird eher gefragt, ob das Gewünschte technisch möglich ist, weniger eine Programmierlösung. (Das heißt, ich denke, es hätte auch bei Stack Overflow gefragt werden können, aber in seinem aktuellen Format würde es wahrscheinlich hier rübergeschmissen werden.)
@AlEverett: Ich bin mir nicht sicher, ob ich das in diesem Fall sehe, aber so oder so: Ich glaube nicht, dass der neue Titel wirklich widerspiegelt, wonach das OP sucht. Antworten "Wie mache ich das?" als Endbenutzer kann viel anders sein als "Wie mache ich das?" als Entwickler, IMHO. Die Antwort auf Platz 3 auf der Liste wäre beispielsweise die Verwendung einer WLAN-Tethering-App, die den Infrastrukturmodus unterstützt. Ich glaube nicht, dass das wirklich hilft, wenn Sie versuchen, es selbst zu implementieren, es sei denn, Sie verwenden einfach den Quellcode der Tethering-App oder machen ihn zur Voraussetzung für die Verwendung Ihrer eigenen App.
Auch aus Benutzersicht: Diese Frage könnte verwandt sein, obwohl ich denke, dass sie nur Voice-over-WLAN (ohne Internetzugang) speziell abdeckt.
Ja, danke für den Hinweis, es tut mir leid, dass ich die Tatsache, dass sich diese Seite mit der Entwicklung befasst, als selbstverständlich betrachtet habe. Könnte jemand von Ihnen sie dorthin migrieren oder sollte ich sie erneut veröffentlichen?

Antworten (2)

Ich habe selbst an einem ähnlichen Projekt gearbeitet, bei dem wir nicht nur an Textnachrichten, sondern auch an Audio-Chat (Echtzeit) interessiert waren. Wie Sie darauf hingewiesen haben, unterstützt Android derzeit keine Ad-hoc-WLAN-Funktionalität (wie Sie sagten, dass das Patchen von wpa_suplicant nicht generisch ist und ich diese Methode ehrlich gesagt als nutzlos bezeichnen würde). Verwenden Sie NICHT das Internet, um keinen anderen Weg zu finden. Zu dieser Zeit habe ich einfach eine lokale WLAN-Verbindung in der Nähe verwendet, um eine Verbindung herzustellen (nur um klar zu sein, wir verwenden immer noch kein Internet). Ich hoffe, dies antwortet möglicherweise Ihre Punkte 1/2/3. Ich bin mir nicht sicher, ob es zumindest eine bessere Lösung für 1/2/3 gibt, solange Android-Leute nicht zulassen, dass ein Ad-hoc erstellt (oder zumindest beigetreten wird.

Zu Punkt 4 muss ich erneut leider sagen, dass die Antwort darauf ebenfalls „Nein“ lautet. Wenn sich zwei Geräte zum ersten Mal verbinden, muss eine Kopplung erfolgen. Und soweit ich mich erinnere (ich habe dieses Projekt vor ein paar Monaten durchgeführt und hatte keine Zeit, weiterzumachen / darauf aufzubauen), hat es für nachfolgende Verbindungen zu bereits gekoppelten Geräten keine Bestätigung verlangt, außer unserer eigenen Bestätigung, die wir aufgefordert, einen eingehenden Sprachanruf anzunehmen. Abgesehen davon, dass die Bluetooth-Methode tatsächlich einwandfrei funktionierte.

Hoffe das hat geholfen. Lassen Sie mich wissen, wenn es etwas gibt, das ich näher erläutern kann.

-Atul

Ein Vorteil der Verwendung einer externen WLAN-Verbindung war, dass die Reichweite mit Ad-hoc, das von Android erstellt wurde, viel größer sein kann als möglich (selbst wenn wir Ad-hoc von Android erstellen könnten).
Danke Atul für deine schnelle Antwort. Was meinst du mit "jede lokale WLAN-Verbindung in der Nähe, mit der eine Verbindung hergestellt werden kann?" Ich denke, es geht nur über einen Zugangspunkt, oder?
Jawohl. Entschuldigung, wenn ich mich nicht klar ausgedrückt habe.

Dieser Anwendungsfall hat jetzt eine offensichtliche langfristige Lösung: Android Beam/NFC. Allerdings unterstützen noch nicht viele Geräte NFC, sodass noch andere Techniken erforderlich sind.