안드로이드에서 동적 컨트롤을 추가할 때는 'addView'를 이용합니다. View.addView([추가할 뷰]); View.addView([추가할 뷰], [위치 인덱스]); 버튼을 추가하려면 이런 식으로 하면 됩니다. Button btnTemp; ViewGroup.LayoutParams params; Button btnTemp = new Button(this); btnTemp.setText("Button 2"); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(600, 300); btnTemp.setLayoutParams(params); this.m_flContainer.addView(btnTemp, 1); 여기서 조심해야 할 것은 추가하려는 뷰에..
안드로이드의 웹뷰에서 Url이벤트를 사용하려면 웹뷰클라이언트(WebViewClient)를 상속받아 오버라이(Override)하여 사용해야 합니다. 웹뷰클라이언트(WebViewClient) 상속받기 일반적인 방법으로 상속받으면 됩니다. 'claWebClient'클래스를 생성하여 웹뷰클라이언트를 상속받아 봅시다. public class claWebClient extends WebViewClient { private Context m_context; //여기서는 토스트 메시지를 사용하기 위하여 컨텍스트를 매개변수로 받습니다. public claWebClient(Context context) { super(); this.m_context = context; } } 메서드 오버라이드(Override)하기 사용 가..
유니티에서 만든 프로젝트를 Html5로 빌드하면 'WebGL'로 빌드 결과물이 나옵니다. 이렇게 나온 파일을 웹서버에 올리고 접속해보면.... Uncaught could not load memory initializer Release/[파일명].html.mem 아 잰장할 ㅎㅎㅎ 1. 원인 얼핏 보면 메모리 에러 같지만 이건 메모리 에러는 아니고 메모리로 사용되는 파일을 받을 수 없어서 발생하는 에러입니다. (흠....엄밀이 따지면 메모리 에러 맞네요 ㅎㅎㅎ) 빌드 결과물을 보면 'Release'폴더에 '*.data'와 '*.mem'파일이 있습니다. 그런데 웹서버는 보안상 이유로 허용된 파일확장자가 아니면 다운로드가 되지 않습니다. 저 두개는 웹서버에서 허용된 확장자가 아니므로 이런 에러가 발생하는 것입니..
가끔 안드로이드 프로젝트를 하다 보면 타켓 API를 바꿔야 할 때가 있습니다. 사실 이럴 때는 프로젝트를 다시 생성하는 편이 좋습니다 ㅡ,.ㅡ;;; 하지만! 코드를 수정해서 타켓을 바꿀 수도 있긴 합니다. Grable Scripts > build.gradle (Module: app) 를 엽니다. 아래와 같은 코드가 나오는데 여기서 minSdkVersion : 최소 SDK 버전 targetSdkVersion : 타겟 SDK 버전 을 설정 할 수 있습니다.
1. 증상 'NAudio'를 빌드하고 프로젝트에 참조로 넣고 돌렸더니.... 빌드 중인 프로젝트의 프로세서 아키텍처 "MSIL"과(와) "[빌드정보]" 참조의 프로세서 아키텍처 "x86"이(가) 일치하지 않습니다. 이 불일치로 인해 런타임 오류가 발생할 수 있습니다. 프로젝트와 참조 간의 프로세서 아키텍처를 정렬하거나 프로젝트의 대상 프로세서 아키텍처와 일치하는 프로세서 아키텍처를 포함하는 참조에 대한 종속성을 사용하는 것처럼 구성 관리자를 통해 프로젝트의 대상 프로세서 아키텍처를 변경하십시오. 아.... 이건 참조한 'DLL'과 사용하려는 플랫폼간 '플랫폼 대상'이 달라서 발생합니다.(64비트 전용이라던가 하는 문제) 2. 해결 방법 소스가 있다면 해당 'DLL'의 프로젝트 속성 > 빌드 > 플랫폼 대..
1. 문제 발견 안드로이드에서 '.sleep'나 'wait'와 같은 스래드를 대기시키는 메소드를 사용하면 발생하는 에러입니다. Error:(116, 25) error: unreported exception InterruptedException; must be caught or declared to be thrown 2. 해결 방법 예외처리 해주라는 소리인 거 같네요. try { Thread.sleep(100L); } catch(InterruptedException ex) { //인터럽트 플래그 재설정 Thread.currentThread().interrupt(); } 이렇게 해도 되고 일반적인 예외처리 방식인 'Exception'을 사용해도 됩니다. try { Thread.sleep(100L); } ca..
1. 기본값 안드로이드 스튜디오는 기본값이 '현재 창에 프로젝트 열기(Open project in the same window)'입니다. 새 프로젝트를 만들거나 열었을 때 다른 창에서 열리게 옵션을 설정해 봅시다. 2. 설정 File > Settings 으로 들어가서 Appearance & Behavior > System Settings > Project Opening 에 들어가면 다음과 같은 옵션이 보입니다. Open project in new window : 프로젝트를 새 창에서 열기 Open project in the same window : 같은 창에서 프로젝트 열기 Confirm window to open project in : 프로젝트 열고 확인하기 여기서 'Open project in new..
3D에서 오브젝트를 움직일 때는 글로벌 축(Global Axis, 월드 축(Word Axis))이나 로컬 축(Local Axis)을 기준으로 움직이게 됩니다. 1. 글로벌 축(Global Axis, 월드 축(Word Axis)) 글로벌 축은 항상 고정된 축입니다. 유니티의 스크린에서 오른쪽 위에 표시되는 방향이 글로벌 축과 같은 방향입니다. 글로벌 축을 기준으로 움직이면 오브젝트의 축과 관계없이 글로벌 축의 방향으로만 움직이게 됩니다. 글로벌 축으로 움직이는건 쉽습니다. 그냥 트랜스폼(transform)의 포지션(Position, 혹은 로케이션(Rotation))만 병경하면 됩니다. //z축으로 이동 transform.position = transform.position + new Vector3(0, 0..
언젠가부터 제가 쓰고 있는 G2의 와이파이가 안테나는 잘 뜨는데 데이터를 주고받지 못하는 현상이 발생했습니다. 다른 G2로 테스트해보니 말짱하고 공유기가 3대나 있어서 교차테스트를 해봐도 제거만 그래서 망가졌나 보구나 하는 찰라 지인집에 제가 설치해둔 공유기에서는 잘되는 게 아니겠습니까? 헐헐 이게 뭔 현상이지 하고 있다가 해결방법을 찾았네요-_-;; '무선 보안'설정이 문제였습니다. 1. 문제가 일어난 상황 1) 시스템 업데이트 이후 멀쩡한 G2는 시스템 업데이트를 안 하고 있고 제 G2는 시스템 업데이트를 하고 있었습니다. 2) 공유기 교체 이후 쓰던 공유기가 오래돼서 이번에 교체하였습니다. (ipTIME A2004NS plus) 그리고 권장사항에 따라 무선 보안은 'WPA2PSK + AES'로 세팅..
1. 증상 가끔 실행하면 진행이 되지 않고 빌드나 디바이스에 파일 보내는 단계 같은 곳에서 무한으로 대기하는 경우가 있습니다. 2. 조치 사항 1) 이럴 때는 비주얼 스튜디오(혹은 자마린 스튜디오(Xamarin Studio))를 재시작해봅시다. 2) 그래도 안 되면 관리자 권한으로 IDE를 열어보고 테스트해봅니다. 3) 그래도 안 되면 다른 디바이스를 사용해 봅니다. 에뮬레이터 사용 시에는 에뮬을 새로 생성하거나 다른 에뮬레이터를 사용해 봅니다. 보통은 위에 3가지 중 하나만 하면 해결됩니다. 마무리 안드로이드는 에뮬레이터가 많아서 다른 걸 선택하는것도 방법입니다 ㅎㅎㅎ