블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2795)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (61)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

[펌] TexturePacker

Unity3D/Plugins / 2016. 5. 10. 12:32

[링크] https://www.codeandweb.com/texturepacker



[링크] Quickstart Guide with TexturePacker and Unity





Tutorials for Unity:
Sprite Sheets &
Normal Mapped Sprites

We currently have 2 detailed tutorials for Unity,
scroll down for our Quickstart Guide.











Quickstart Guide with TexturePacker and Unity

This overview shows you how to create your first sprite sheet and import it into your unity project.

These 6 steps will cost you only 5 minutes - but make your development much easier. Promised!

1.
Open TexturePacker, select
Unity - Texture2D sprite sheet
as framework.

TexturePacker: Select Unity Texture2D as framework

2.
Add sprites ...

Drag & drop sprites
onto TexturePacker.


... or folders

TexturePacker adds
all sprites inside the folder
and updates the texture
when the content changes.

Add Sprites to TexturePacker


3.
Set output files
Make sure to set the output path of both files inside the Assets folder of your Unity project.



Set the output path for your files


4.
Optional: Set Trim mode and Pivot Point.

Crop removes transparency from sprites, allowing a better packing ratio.




5.

Click Publish sprite sheet to write the sprite sheet to your Unity project




6.

Download and install our free
TexturePacker Importer
TexturePacker Importer
Free download from Unity Asset Store 

The sprite sheet is updated after each publish.




TexturePacker allows you to set a Pivot Point and Trim your sprite





TexturePacker: Click Publish sprite sheet







Your files will be imported automatically when using TexturePacker Importer





반응형
Posted by blueasa
, |

[파일]

BitmapFontImporter.unitypackage

BitmapFontImporter설명서.pptx



안녕하세요. NHN스타피쉬 TD 최윤빈 입니다.

Unity 엔진을 이용한 게임 개발 시 기존에는 NGUI를 주로 사용하셨을텐데
4.5 버전 이상부터 uGUI 라는 Unity 내장 GUI가 새로 나오면서
uGUI로 많이 갈아타고 계신걸로 알고 있습니다.

2015년 3월부터 개발중인 게임을 NGUI -> uGUI로 포팅작업을 시작하였고
그 과정에서 기존 NGUI에서 사용하던 방식대로 Bitmap font를 사용할 수 없어서 고민하다가
구글님의 도움을 받아 기존 NGUI와 유사하게 Bitmap font를 사용할 수 있도록
Custom font를 생성해주는 스크립트를 제작하였기에 공유코자 합니다.

또한 NGUI 에서는 Bitmap font를 Atlas에 묶어서 사용할 수 있었는데
uGUI 에서는 Atlas 기능이 없기때문에 직접 multiple sprite 로 묶어서 사용해야 합니다.
저희 팀에서는 TexturePacker를 사용하고 있는데요.
Bitmap font 들 또한 기존 처럼 묶어서 사용해야하기에
이를 지원하기 위한 기능도 포함 되어 있습니다. (Draw call 은 소중하니까요..)

요컨데, BitmapFontImporter 는

  • Bitmap font 제작 툴로 만든 png, txt 파일로부터 font 및 material 파일을 생성
  • Multiple sprite 지원

다음과 같은 기능을 제공합니다. 사용법은 첨부된 파일을 참고부탁드립니다.

클릭 두세번으로 손쉽게 비트맵 폰트 만드세요~





출처 : http://meetup.toast.com/posts/40

반응형
Posted by blueasa
, |

[펌] 고자질의 어원

한글 / 2016. 5. 9. 15:23

남의 잘못이나 비밀을 몰래 일러 바치는 것.

 

이 말이 어디서 왔건 우리말을 바로 쓰자는 이 책의 취지와는 상관없는 일

이지만, 매우 흥미로운 기술이 있어 적는다. 바로 박갑천의 <어원이야기>에 나온

내시內侍 관련설이다.

 

내시란 궁중에서 임금의 시중을 드는 거세된 남자를 말한다. ' 고자' 라고도 불린

이들 내시들은 권력의 틈바구니에서 간혹 임금에게 있는 말 없는 말을 일러 바치기도

하는데, 바로 그런 행동을 비꼬아 '고자 ' 에 ' 강도질 ' ' 계집질 ' 등에 붙이는 접미사

' 질 ' 을 붙였다는 얘기다.

 

그렇다면 ' 고자' 는 어디서 온 말일까. 이에 대해서도 위 책에는 두 가지 가능성이

제시되어 있다. 하나는 진시황의 내시를 지낸 조고(趙高. ? ~ 기원전 208) 와 관련한

이야기다. 진시황의 막내아들 호해胡亥를 모시던 조고는 진시황이 죽자 승상 이사와

짜고 진시황의 장남 부소扶蘇를 제압한 뒤 우둔한 호해왕을 2세 황제로 내세워

정권을 좌지우지한다.

 

그의 전횡이 얼마나 심했는지는 " 지록위마 " 의 고사에 잘 나타나 있다. 황제에게

사슴을 말이라고 속여 바쳤는데도 신하들이 조고의 보복이 두려워 아무 말도 하지

못했다는 것이 지록위마의 내용이다. 결국 조고는 사람들로부터 원성의 대상이 되었고,

누군가가 내시들을 ' 조고의 자식 ' 이라는 뜻으로 '고자 ' 라고 비아냥거린 것이 ' 고자 '

가 되었다고 한다.

 

 

 

-정진한 < 한국인이면 반드시 알아야 할 신문 속 언어지식 > 中 발췌



[출처]

http://cafe.daum.net/_c21_/bbs_search_read?grpid=1RJYG&fldid=H2b0&contentval=00006zzzzzzzzzzzzzzzzzzzzzzzzz&nenc=&fenc=&from=&q=2007%B3%E2%BF%B5%C8%AD%BC%F8%C0%A7&nil_profile=cafetop&nil_menu=sch_updw&listnum=

반응형
Posted by blueasa
, |

일전에 '궁색하다'는 '매우 가난하다'라는 뜻이므로 '궁색한 변명'은 틀린 말이며, '궁색하다' 대신 '군색하다'라는 말을 써야 한다는 글을 보았습니다. 그래서 한번 알아보았습니다.

표준국어대사전에 따르면 각 단어의 정의는 아래와 같습니다.

궁색-하다 (窮塞--)
「형용사」
「1」아주 가난하다.
¶ 궁색한 집안/어머니는 아버지가 돌아가신 후 궁색한 살림을 꾸려 나가셨다./서울 문밖에서 궁색하기 짝이 없이 사는 주제에 시골 가면 어떡하든 뻐길 궁리부터 했다.≪박완서, 그 많던 싱아는 누가 다 먹었을까≫
「2」말이나 태도, 행동의 이유나 근거 따위가 부족하다.
¶ 궁색한 변명/대답이 궁색하다/잠깐 말이 없던 김현숙이 다시 까닭 없이 허둥대며 무어라고 궁색한 이유를 댔다.≪이문열, 영웅시대≫/그들은 이번 사태를 일으킴으로써 판문점 정전 회담에서 우리 측의 입장을 여지없이 궁색하게 만들었소.≪홍성원, 육이오≫


군색-하다 (窘塞--)
「형용사」
「1」필요한 것이 없거나 모자라서 딱하고 옹색하다.
¶ 군색한 집안 형편/집은 비교적 오뚝한 얌전한 기와집이라 전등을 환히 켠 마루 안을 들여다보아도 살림이 군색하지는 않은 것을 알 수 있다.≪염상섭, 삼대≫
「2」자연스럽거나 떳떳하지 못하고 거북하다.
¶ 군색한 표현/군색한 변명을 늘어놓다/박도 대답에 매우 군색한 모양으로 건기침만 연해 토하고 있었다.≪한설야, 탑≫


두 단어 모두 「2」번의 예문에 '○○한 변명'이 들어 있는 것을 볼 수 있습니다. 의미에 미묘한 차이가 있을 뿐 둘 다 사용할 수 있어 보이는데요, 이에 대한 국립국어원의 답변은 다음과 같습니다.

2009.1.30.
‘궁색하다’와 ‘군색하다’의 뜻풀이를 참고하면, 
어떤 잘못이나 실수에 대하여 구실을 대며 그 까닭을 말할 때, 그 말이나 태도, 행동의 이유나 근거 따위가 부족하면 ‘궁색한 변명’이라 표현할 수 있고, 
그것이 자연스럽거나 떳떳하지 못하고 거북하면 ‘군색한 변명’이라고 표현할 수 있습니다. 
‘궁색하다’와 ‘군색하다’가 동의어로 처리되지는 않지만, ‘변명’ 앞에 수식어로 ‘궁색한’을 쓴 ‘궁색한 변명’과, ‘군색한’을 쓴 ‘군색한 변명’은 나타내려는 뜻에서 별 차이가 없을 듯합니다.


의도에 따라 나눠 사용하면 되겠네요. ^^



출처 : http://willucy.tistory.com/119

반응형

'한글' 카테고리의 다른 글

[펌] '개수'와 '갯수'의 바른 표현  (0) 2016.09.30
[펌] 고자질의 어원  (0) 2016.05.09
자주 틀리는 맞춤법  (0) 2016.01.12
'돐', '돌'중 바른 표기는?  (0) 2015.10.14
~율과 ~률  (0) 2015.10.01
Posted by blueasa
, |

[링크] 운영평전

Link / 2016. 5. 9. 11:34


운영평전 - 1 '소통'


운영평전 - 2 '정치'


운영평전 - 3 'TST'


운영평전 - 4 '시대의 흐름'


운영평전 - 5 '온라인게임의 생명'


반응형
Posted by blueasa
, |

Unity에서 장치의 고유한 식별 번호를 얻고 싶은데...

아이폰으로는 테스트를 못해 봤습니다만... 잘 되지 않을까 싶네요.

안드로이드에서 장치의 식별자로 쓸만한 것이 3개 있는데

  1. Settings.Secure 의 ANDROID_ID
  2. WiFi의 MAC 주소
  3. 전화 모듈의 식별자

입니다.
아래 코드에서는 위 순서대로 가져오기를 시도해서 잘 가져오는 것을 반환하게 했습니다.

당연히... 별다른 이상한 오류 상황이 아니면 ANDROID_ID를 가져 오겠지요?

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
public string GetDeviceID ()
{
    if (Application.platform == RuntimePlatform.Android)
    {
        try
        {
            using (AndroidJavaObject activity = new AndroidJavaClass ("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject> ("currentActivity"))
            {
                // ANDROID_ID
                try
                {
                    using (AndroidJavaObject resolver = activity.Call<AndroidJavaObject> ("getContentResolver"))
                    {
                        using (AndroidJavaObject settingsSecure = new AndroidJavaObject ("android.provider.Settings.Secure"))
                        {
                            string deviceID = settingsSecure.CallStatic<string> ("getString", resolver, settingsSecure.GetStatic<string> ("ANDROID_ID"));
                            if (!string.IsNullOrEmpty (deviceID))
                            {
                                return deviceID;
                            }
                        }
                    }
                }
                catch (System.Exception)
                {
                }
 
                // WiFi MAC
                try
                {
                    using (AndroidJavaObject wifiManager = activity.Call<AndroidJavaObject> ("getSystemService", activity.GetStatic<string>("WIFI_SERVICE")))
                    {
                        string macAddr = wifiManager.Call<AndroidJavaObject> ("getConnectionInfo").Call<string> ("getMacAddress");
                        if (!string.IsNullOrEmpty (macAddr))
                        {
                            return macAddr;
                        }
                    }
                }
                catch (System.Exception)
                {
                }
                 
                // IMEI/MEID code
                try
                {
                    using (AndroidJavaObject telephonyManager = activity.Call<AndroidJavaObject> ("getSystemService", activity.GetStatic<string>("TELEPHONY_SERVICE")))
                    {
                        string imeiCode = telephonyManager.Call<string> ("getDeviceId");
                        if (!string.IsNullOrEmpty (imeiCode))
                        {
                            return imeiCode;
                        }
                    }
                }
                catch (System.Exception)
                {
                }
 
            }
        }
        catch (System.Exception)
        {
        }
    }
    else
    {
        // 이 방법은 안드로이드에서는 안된다. - Unity 4.3.4f1
        try
        {
            var nics = NetworkInterface.GetAllNetworkInterfaces ();
            if (nics.Length > 0)
            {
                return nics[0].GetPhysicalAddress ().ToString ();
            }
        }
        catch (System.Exception)
        {
        }
    }
    return "";
}

WiFi MAC 주소를 가져오려면 ACCESS_WIFI_STATE 권한이 필요합니다.

IMEI code 를 가져오려면 READ_PHONE_STATE 권한이 필요합니다.

그럼 이 권한은 어떻게 설정할까요?
만약 프로젝트 경로 아래에
Assets/Plugins/Android/AndroidManifest.xml 파일이 있다면 해당 파일을 수정하시면 됩니다.
이 파일이 없으시다면
(Unity 설치 경로)/Editor/Data/PlaybackEngines 폴더 밑에 있는
androidplayer 또는 androiddevelopmentplayer 폴더에 있는 파일을 복사해서 사용하시면 됩니다.

아래 내용을 추가하시면 되겠죠?

1
2
3
4
5
6
7
8
<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    >
</uses-permission>
<uses-permission
    android:name="android.permission.ACCESS_WIFI_STATE"
    >
</uses-permission>



출처 : http://bspfp.pe.kr/536

반응형
Posted by blueasa
, |


출처: http://all4museum.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%95%B8%EB%93%9C%ED%8F%B0-%EC%A0%95%EB%B3%B4-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0



기본정보, 맥주소, 번호 가져오기


1.android.os.Build 클래스에서 기본정보 받아오기

http://developer.android.com/reference/android/os/Build.html

먼저 Manifest 을 열어서 다음 퍼미션을 추가하여 폰의 정보를 읽을 수 있도록 합니다.

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

그러면 android.os 패키지의 Build 클래스를 통해서 구할 수 있습니다.
Build 클래스 안에 static 변수로 선언되어 있으므로 그 값을 직접 받아오면 됩니다.

SDK 2.1 에서는 아래의 정보를 제공합니다.

Build.BOARD
Build.BRAND
Build.CPU_ABI
Build.DEVICE
Build.DISPLAY
Build.FINGERPRINT
Build.HOST
Build.ID
Build.MANUFACTURER  -> 제조사
Build.MODEL               -> 모델명 
Build.PRODUCT
Build.TAGS
Build.TYPE
Build.USER

제게는 제조사와 모델명이 가장 중요한 정보였습니다.

Build.SERIAL 같은 정보는 SDK 2.3부터 지원한다고 하네요.




2. 맥주소 가져오기

맥주소는 와이파이 하드웨어 맥주소이므로 와이파이의 상태에 접근할 수 있는 퍼미션을 부여합니다.

먼저, Manifest 파일에 다음 퍼미션을 추가합니다.
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

아래 코드로 값을 얻습니다.

WifiManager mng = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo info = mng.getConnectionInfo();
String mac = info.getMacAddress();





3. 폰번호 가져오기

폰의 정보를 읽어 올 수 있는 퍼미션을 부여합니다.

먼저, Manifest 파일에 다음 퍼미션을 추가합니다.
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

아래 코드로 값을 얻습니다.

TelephonyManager mng = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String num = mng.getLine1Number();



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



출처: http://batsu05.tistory.com/37






안드로이드 폰에서 Wi-Fi Mac 주소 가져오는 함수,
어떤 기계에서는 Wi-Fi 가 꺼져 있으면 못가져 온다고도 해서, 
Wi-Fi 가 활성화 되어있는지 체크하고 Mac 주소 가져옴.


  1. public String getCurrentMacAddress(){  
  2.     String macAddress="";  
  3.     boolean bIsWifiOff=false;  
  4.           
  5.     WifiManager wfManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);  
  6.     if(!wfManager.isWifiEnabled()){  
  7.         wfManager.setWifiEnabled(true);  
  8.         bIsWifiOff = true;  
  9.     }  
  10.           
  11.     WifiInfo wfInfo = wfManager.getConnectionInfo();  
  12.     macAddress = wfInfo.getMacAddress();  
  13.           
  14.     if(bIsWifiOff){  
  15.         wfManager.setWifiEnabled(false);  
  16.         bIsWifiOff = false;  
  17.     }  
  18.           
  19.     return macAddress;  
  20. }  




그리고 반드시 퍼미션을 지정해 줘야 함.

  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
  2. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
  3. <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>  
  4. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>  
  5. <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>  


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



출처: http://blog.naver.com/PostView.nhn?blogId=noeul_&logNo=140135587214


m_telephonyManager    =  (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
        wfmanager     = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);
        
        WifiInfo info    = wfmanager.getConnectionInfo();

 

        Log.i(TAG, " MDN 번호 "+m_telephonyManager.getLine1Number());
        Log.i(TAG, " IMEI "+m_telephonyManager.getDeviceId());
        Log.i(TAG, " MAC 주소 "+info.getMacAddress());
        Log.i(TAG, " 국가코드 "+m_telephonyManager.getNetworkCountryIso());
        Log.i(TAG, " 망 사업자 코드 MCC+MNC "+m_telephonyManager.getNetworkOperator());
        Log.i(TAG, " 망 사업자명 "+m_telephonyManager.getNetworkOperatorName());
        Log.i(TAG, " 가입자 ID "+m_telephonyManager.getSubscriberId());
        Log.i(TAG, " SIM카드 상태 "+m_telephonyManager.getSimState());

 

 

-퍼미션 설정 관련

 <uses-permission android:name="android.permission.INTERNET" /> 
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

 



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


출처: http://javaexpert.tistory.com/193


퍼미션 관련 : 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name = "android.permission.INTERNET"/>

<uses-permission android:name = "android.permission.READ_PHONE_STATE"/>


Mac 정보 및 전화번호 가져오기

public String getLocalPhoneNumber(){ //전화번호

     TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

     return manager.getLine1Number();

    }

public String getLocalIpAddress() {//맥 어드레스

        try {

            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {

                NetworkInterface intf = en.nextElement();

                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {

                    InetAddress inetAddress = enumIpAddr.nextElement();

                    if (!inetAddress.isLoopbackAddress()) {

                        return inetAddress.getHostAddress().toString();

                    }

                }

            }

        catch (SocketException ex) {

            ex.printStackTrace();

        }

        return null;

    }


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


출처: http://blog.naver.com/PostView.nhn?blogId=ziippy&logNo=120138070384



안드로이드 디바이스의 IP 구하기  Android 


[출처] 안드로이드 디바이스의 IP 구하기|작성자 지피


존에 사용하던 IP 구하는 코드는, 이런 상황에서 3G IP 를 리턴해 준다. 그럼 대략 난감;;;

 

[기존 코드]

public String getLocalIpAddress()
 {
  try {
         for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
             NetworkInterface intf = en.nextElement();
             for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                 InetAddress inetAddress = enumIpAddr.nextElement();
                 if (!inetAddress.isLoopbackAddress()) {
                     return inetAddress.getHostAddress().toString();
                 }
             }
         }
     } catch (SocketException e) {
         Log.e(DEBUG_TAG, "getLocalIpAddress Exception:"+e.toString());
     }
     return null;
 }

 

그래서 WiFi IP 가 있으면 그걸 사용할 수 있게 조금 수정함

 

[수정 코드]

public String getLocalIpAddress()
 {
  final String IP_NONE = "N/A";
  final String WIFI_DEVICE_PREFIX = "eth";
  
  String LocalIP = IP_NONE;
  try {
         for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
             NetworkInterface intf = en.nextElement();           
             for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                 InetAddress inetAddress = enumIpAddr.nextElement();
                 if (!inetAddress.isLoopbackAddress()) {
                  if( LocalIP.equals(IP_NONE) )
                     LocalIP = inetAddress.getHostAddress().toString();
                  else if( intf.getName().startsWith(WIFI_DEVICE_PREFIX) )
                     LocalIP = inetAddress.getHostAddress().toString();
                 }
             }
         }
     } catch (SocketException e) {
         Log.e(DEBUG_TAG, "getLocalIpAddress Exception:"+e.toString());
     }
     return LocalIP;
 }

 

확인 결과 WiFi 장치에 대해 getName() 을 해 보니 "eth0" 을 얻을 수 있었음.

그러므로 "eth" 로 시작하는 장치가 있는 경우 해당 IP 를 LocalIP 라고 판단함.

 

갤럭시S, 디자이어 에서는 테스트가 잘 되었는데.. 글쎄 다른 단말에서도 잘 될런지는 ㅎㅎㅎ

 

여하튼, 이렇게 수정해서 사용하니

위와 같은 상황에서도 WiFi IP 를 가지고 통신이 잘 된다는 ㅋ

 




//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



Android Device의 IP 주소 가져오기


안드로이드에서 사용자의 단말이 WiFi에 고정 IP로 접속 했을 경우,

가끔 IP주소를 가져와서 작업해야할 경우가 생긴다.

이럴 경우 다음의 소스를 사용하면 된다.












물론 코드에서 필요로 하는 것들은 import해야 한다. 





01.public String getLocalIpAddress() {
02.try {
03.for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();)
04.{
05.NetworkInterface intf = (NetworkInterface) en.nextElement();
06.for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();)
07.{
08.InetAddress inetAddress = (InetAddress) enumIpAddr.nextElement();
09.if (!inetAddress.isLoopbackAddress())
10.{
11.return inetAddress.getHostAddress().toString();
12.}
13.}
14.}
15.} catch (SocketException exception)
16.{
17.Log.e("We got Exception here", exception.toString());
18.}
19.return null;
20.}




//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


출처: http://dark2pee.tistory.com/entry/Android-IP-Address-%EA%B0%80%EC%A0%B8%EC%98%A4%EB%8A%94-%EC%86%8C%EC%8A%A4-%EC%98%88%EC%A0%9C


[Android] IP Address 가져오는 소스 예제


package exercice1.identificateur.ex;
 
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
 
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import exercice1.identificateur.R;
 
public class wifi1 extends ListActivity {
private static final String LOG_TAG = null;
public String getLocalIpAddress() {
    try {
        for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
            NetworkInterface intf = en.nextElement();
            for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                InetAddress inetAddress = enumIpAddr.nextElement();
                if (!inetAddress.isLoopbackAddress()) {
                    return inetAddress.getHostAddress().toString();
                }
            }
        }
    } catch (SocketException ex) {
        Log.e(LOG_TAG, ex.toString());
    }
    return null;
}
 
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = new TextView(this);
      tv.setText(getLocalIpAddress());
      setContentView(tv);  
}
}

//조금 수정

public String getLocalIpAddress()
{
    try {
        for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
            NetworkInterface intf = (NetworkInterface)en.nextElement();
            for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                InetAddress inetAddress = (InetAddress)enumIpAddr.nextElement();
                if (!inetAddress.isLoopbackAddress()) {
                    return inetAddress.getHostAddress().toString();
                }
            }
        }
    } catch (SocketException ex) {
        Log.e(LOG_TAG, ex.toString());
    }
    return null;
}



출처 : http://202psj.tistory.com/588

반응형

'Programming' 카테고리의 다른 글

[링크] 예제로 배우는 GO 프로그래밍  (0) 2018.05.21
[펌] [iOS] info.plist Key 목록과 사용.  (0) 2018.03.26
Breakpad Client Libraries  (0) 2015.02.26
Posted by blueasa
, |

[링크]

https://docs.google.com/spreadsheets/d/1OHmrl44-e8rLgFvfOi8aadMMYZvA9VriciFgmRMRjKE/htmlview?sle=true#gid=0

반응형

'Etc' 카테고리의 다른 글

[게임?] 신뢰의 진화  (0) 2017.09.15
카카오뱅크 마이너스 통장 개설 중 만난 에러들  (7) 2017.08.14
크런치  (0) 2016.03.27
[링크] KB 국민 파인테크 (FINETECH) 카드란? [8가지 혜택]  (0) 2016.03.15
DL  (0) 2016.01.29
Posted by blueasa
, |

위 글을 기억하시나요? ㅎㅎ.. 이런 확장 기능이었는데요.




결국 능력자님들이 여러 에디터로 만들어주셨습니다. 짝짝짝 지금 잘 사용중입니다~



[현재 나의 셋팅]




[출처]

http://www.gamecodi.com/board/zboard.php?id=GAMECODI_Talk&page=1&page_num=35&select_arrange=headnum&desc=asc&sn=off&ss=on&sc=on&keyword=&no=33343&category=

반응형
Posted by blueasa
, |


링크 : http://m.blog.naver.com/progagmer/220690243691

반응형
Posted by blueasa
, |