Android things 디버깅시 현재 아이피를 처음에는 모른다. 물론 부팅화면에는 나오지만 앱으로 바로 실행되면 나오지는 않는다.
그래서 할 수 있는 방법은 2가지 이다. 해당 아이피를 화면으로 출력해서 보여주는 것이다.
우선 기본 wifi 와 이더넷 아이피 주소 획득 하는 방법이다. 안드로이드 띵쓰에서도 당연히 가능하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | /** * Returns MAC address of the given interface name. * @param interfaceName eth0, wlan0 or NULL=use first interface * @return mac address or empty string */ public static String getMACAddress(String interfaceName) { try { List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface intf : interfaces) { if (interfaceName != null) { if (!intf.getName().equalsIgnoreCase(interfaceName)) continue; } byte[] mac = intf.getHardwareAddress(); if (mac==null) return ""; StringBuilder buf = new StringBuilder(); for (int idx=0; idx<mac.length; idx++) buf.append(String.format("%02X:", mac[idx])); if (buf.length()>0) buf.deleteCharAt(buf.length()-1); return buf.toString(); } } catch (Exception ex) { } // for now eat exceptions return ""; /*try { // this is so Linux hack return loadFileAsString("/sys/class/net/" +interfaceName + "/address").toUpperCase().trim(); } catch (IOException ex) { return null; }*/ } public static String getIPAddress(boolean useIPv4) { try { List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface intf : interfaces) { List<InetAddress> addrs = Collections.list(intf.getInetAddresses()); for (InetAddress addr : addrs) { if (!addr.isLoopbackAddress()) { String sAddr = addr.getHostAddress(); //boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr); boolean isIPv4 = sAddr.indexOf(':')<0; if (useIPv4) { if (isIPv4) return sAddr; } else { if (!isIPv4) { int delim = sAddr.indexOf('%'); // drop ip6 zone suffix return delim<0 ? sAddr.toUpperCase() : sAddr.substring(0, delim).toUpperCase(); } } } } } } catch (Exception ex) { } // for now eat exceptions return ""; } | cs |
그리고 이걸 가져와서 화면에 뿌려서 체크를 하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | private fun checkIp(){ // test functions Utils.getMACAddress("wlan0") Utils.getMACAddress("eth0") val ip4 = Utils.getIPAddress(true) // IPv4 val ip6 = Utils.getIPAddress(false) // IPv6 Logger.log("ip address $ip4 , $ip6 ") ipAddress.text = "current ipAddress : $ip4" } | cs |
이게 처음 방법이고...아이피도 받는게 귀찮다.. 그러면 mDns 를 호출해서 하면된다.
1 | adb connect Android.local | cs |
하지만 윈도우에서는 안된다. 그럼 이 프로그램을 우선 설치를 해보자.
그리고 다른 명령어로 확인해보자.
Timestamp A/R Flags if Name T C Rdata
22:18:47.771 Add 2 13 Android.local. 1 1 192.168.x.123
22:18:51.247 Add 2 13 Android.local. 1 1 192.168.x.124
이중 맞는 걸 연결 해보자.
adb connect 192.168.1.124
그럼 성공되면 이젠 디버깅 고고씽
'링크모음 > Android Things' 카테고리의 다른 글
와이파이 연결 (0) | 2017.11.23 |
---|---|
Android – AudioRecord to WAV (오디오 녹음) (0) | 2017.11.15 |