2016-06-21 6 views
0

Я разрабатываю приложение на основе API-интерфейса wifi для p2p Google, и я хотел бы получить имя устройства, которое я использую (а не сверстников), но единственный способ Я нашел, чтобы получить имя в случае, если я изменить его, используя что-то вроде этого:Как получить имя устройства моего устройства с помощью 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); 
      } 
     } 

Но я не хочу, чтобы (не ждать, пока изменений), я хочу знать свое имя от самого начала , чтобы показать это, когда я просто открываю приложение. Это возможно?

+0

Вы попробовали android.os.Build.MODEL? –

+0

магазин в строке вы получите свое имя устройства –

+0

WifiP2pDevice device = (WifiP2pDevice) intent.getParcelableExtra (WifiP2pManager.EXTRA_WIFI_P2P_DEVICE); вы можете использовать это. –

ответ

0

Если Wi-Fi включен и вы регистрируете P2P и все, что находится под нагрузкой, тогда имя устройства должно быть доступно сразу, когда это намерение срабатывает. Если Wi-Fi отключен, вам придется ждать, пока он будет включен, если вы хотите получить имя устройства из WifiP2pManager. Это единственный способ узнать, как получить имя.

+0

Извините, что вы подразумеваете под "register P2P"? Я делаю это: 'WifiManager wifiManager = (WifiManager) getSystemService (WIFI_SERVICE); wifiManager.setWifiEnabled (true); // Если сервис еще не запущен, запустите его. Intent serviceIntent = новое намерение (это, ConnectionService.class); startService (serviceIntent); // Запустите службу соединения. И затем обрабатываю намерение. – BlueMountain

+0

Да, вот что я имел в виду при регистрации P2P. Если вы запускаете демонстрацию Android WiFiDirectServiceDiscovery, намерение DEVICE_CHANGED сразу же запускается при загрузке, если Wi-Fi включен. Вы можете зарегистрировать имя device.deviceName, чтобы увидеть это имя. Имя устройства не должно меняться для намерения стрелять, поэтому вам не нужно ждать изменения. https://github.com/android/platform_development/tree/master/samples/WiFiDirectServiceDiscovery https://groups.google.com/forum/#!topic/wi-fi-direct/uWpuOzHY6y0 – Brendan

+0

У меня есть еще один вопрос затем, используя код в своем последнем комментарии. Если я хочу передать некоторые сообщения (скажем, сообщения из созданного db) с одного устройства на другое и наоборот (в то же время), как я могу избежать столкновения? Я пытаюсь это сделать, но работает только в одном направлении. – BlueMountain

0

Единственный способ, которым я вижу, - использовать отражение, чтобы изменить имя устройства, а затем использовать код для получения имени оригинального устройства, после чего вы можете вернуть имя устройства обратно в оригинал.

Смежные вопросы