[Android] onTouchEvent 에서의 MotionEvent 터치 구분 @Overridepublic boolean onTouchEvent(MotionEvent event) {int action = event.getAction();int touch_id = ((action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> 8 );int actionEvent = action & MotionEvent.ACTION_MASK;// MotionEvent.ACTION_MASK = 0xffpointerCount = event.getPointerCount(); switch (actionEvent) {case MotionEvent.ACTION_DOWN: {...} 위와 같이 actio..
Android에서 'Android library projects cannot be launched' 에러가 발생 할 수 있다. 이 문제는 project를 application이 아닌 Library로 인식하기 때문에 발생할 수 있다. 다음을 체크해 보자 Project Properties > Android > Is Library 가 체크되어 있는지를 확인한다.만약 체크되어 있다면 체크해제 후 재 실행하면 해결 할 수 있다.
디바이스는 하드웨어를 말한다. 드라이버는 하드웨어를 다루는 소프트웨어를 말한다.예를 들어보자.UART 칩이 16개 달려있다고 했을 때 이를 제어하는 드라이버는 하나이다.하지만 UART 칩이 16개 이니 디바이스는 16개 이다. 이제 리눅스 커널로 확장해 보자arm 코아의 커널을 다루게 되면 항상 수정하거나 참고하는 파일이 있다.EM-S5PV210 기준으로arch/arm/mach-s5pv210/mach-ezs5pv210.c 파일이다. 이곳에서 보면 struct platform_device 구조체를 흔히 볼수 있다.이 구조체의 몇몇 멤버를 보자name 문자열 이름id 정수형 아이디resource 리소스 구조체 포인터 (리소스 구조체는 하드웨의 주소나 인터럽트 정보가 나열된다.) num_resources 리소..
함수포인터 (Function pointer) 포인터가 무엇인지는 다들 아실텐데요, 특정 변수에 대한 메모리 주소를 담을 수 있는 변수를 포인터 변수라고 합니다. 그렇다면 함수포인터란, 특정 함수에 대한 메모리 주소를 담을 수 있는 것 이라고 정의할 수 있겠습니다. 함수포인터를 쓰는 이유는 무엇일까요? 1. 프로그램 코드가 간결해집니다. 2. 함수포인터를 배열에 담아서도 사용할 수 있으므로 중복되는 코드를 줄일 수 있습니다. 3. 상황에 따라 해당되는 함수를 호출할 수 있으므로 굉장히 유용합니다. 그 외에도 함수 포인터를 이용하여 콜백함수를 구현할 수 있게 되는 등 편리하고 유용한 코드를 작성할 수 있게 됩니다. 우선 함수포인터의 모양에 대해 알아보도록 하겠습니다. int (*FuncPtr) (int, i..
쉘 스크립트를 만들때, 가장 첫 라인에 #!/bin/bash 를 왜 써야 하는지에 대하여 알아 보도록 하겠습니다. 쉘 스크립트의 가장 첫 라인에 !/bain/bash 를 쓰게 됨으로 해서, 내가 사용 하려는 명령어 해석기가 bash 쉘 임을 미리 알려주는 것입니다. 일반적으로 스크립트에서 #는 주석기호이지만, 첫라인의 #!/bin/bash 에서의 #은 주석기호가 아닙니다. 스크립트의 가장 첫라인에 있는 #! 은 스크립트의 제일 앞에서 이 파일이 어떤 명령어 해석기의 명령어 집합인지를 시스템에게 알려주는 역할을 합니다. #! 은 두 바이트의 "매직넘버"("magic number")로서, 실행 가능한 쉘 스크립트라는 것을 나타내는 특별한 표시자입니다. #! 바로 뒤에 나오는 것은 경로명으로, 스크립트에 들어..