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==nullreturn "";
                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

하지만 윈도우에서는 안된다. 그럼 이 프로그램을 우선 설치를 해보자. 


그리고 다른 명령어로 확인해보자. 

1
dns-sd -Q 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

+ Recent posts