2016-06-21 14 views
0

Ich entwickle eine App basierend auf Google Wifi P2P API und ich möchte den Namen des Geräts, das ich benutze (nicht die Peers) aber den einzigen Weg ich fand den Namen im Fall ich es mit so etwas wie dies zu ändern abzurufen:Wie bekomme ich den Gerätenamen meines Geräts mit Wifi p2p

if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) { 
      // this device details has changed(name, connected, etc) 
      mApp.mThisDevice = (WifiP2pDevice) intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE); 

      mApp.mDeviceName = mApp.mThisDevice.deviceName; 
      PTPLog.d(TAG, "processIntent: WIFI_P2P_THIS_DEVICE_CHANGED_ACTION " + mApp.mThisDevice.deviceName); 
      if(mApp.mHomeActivity != null){ 
       mApp.mHomeActivity.updateThisDevice(mApp.mThisDevice); 
      } 
     } 

Aber ich will nicht, dass (zu, bis eine Änderung warten), möchte ich meinen eigenen Namen aus der beggining kennen , um es zu zeigen, wenn ich nur die App öffne. Ist das möglich?

+0

haben Sie versucht, android.os.Build.MODEL? –

+0

speichern in Zeichenfolge erhalten Sie Ihren Gerätenamen –

+0

WifiP2pDevice Gerät = (WifiP2pDevice) intent.getParcelableExtra (WifiP2pManager.EXTRA_WIFI_P2P_DEVICE); können Sie dies verwenden. –

Antwort

0

Wenn Wi-Fi aktiviert ist und Sie P2P und alles beim Laden registrieren, sollte der Gerätename sofort verfügbar sein, wenn diese Absicht ausgelöst wird. Wenn WLAN deaktiviert ist, müssen Sie warten, bis es aktiviert wird, wenn Sie den Gerätenamen von WifiP2pManager abrufen möchten. Nur so kann ich den Namen bekommen.

+0

Entschuldigung, was meinst du genau mit "Register P2P"? Ich mache das: 'WifiManager wifiManager = (WifiManager) getSystemService (WIFI_SERVICE); wifiManager.setWifiEnabled (true); // Wenn der Dienst noch nicht gestartet wurde, starten Sie ihn. Intent serviceIntent = neue Absicht (this, ConnectionService.class); startService (serviceIntent); // starte den Verbindungsservice' Und dann verarbeite ich die Absicht. – BlueMountain

+0

Ja, das ist es, was ich mit Register P2P gemeint habe. Wenn Sie die WiFiDirectServiceDiscovery-Demo von Android ausführen, wird die DEVICE_CHANGED-Absicht sofort beim Laden ausgelöst, wenn WLAN aktiviert ist. Sie können dort device.deviceName anmelden, um den Namen zu sehen. Der Gerätename muss sich nicht für die Auslöseabsicht ändern, sodass Sie nicht auf eine Änderung warten müssen. https://github.com/android/platform_development/tree/master/samples/WiFiDirectServiceDiscovery https://groups.google.com/forum/#!topic/wi-fi-direct/uWpuOzHY6y0 – Brendan

+0

Ich habe eine andere Frage Dann benutze den Code in deinem letzten Kommentar. Wenn ich einige Nachrichten (sagen wir Nachrichten in einer von mir erstellten db) von einem Gerät zum anderen und umgekehrt (zur gleichen Zeit) übertragen möchte, wie kann ich Kollisionen vermeiden? Ich versuche das zu tun, funktioniert aber nur in einer Richtung. – BlueMountain

0

Die einzige Möglichkeit, die ich sehe, ist die Verwendung von Reflection, um den Gerätenamen zu ändern und dann den ursprünglichen Gerätenamen zu verwenden. Danach können Sie den Gerätenamen auf das Original zurücksetzen.