위 사진은 굉장히 흥미로운 사진이다. 숫자로 구성된 String 텍스트를 무작위 위치에 배열 한 후, 각 텍스트에 대하여 Paint의 getTextBounds를 통해 차지하는 영역의 크기를 Rect로 받은 후, 해당 Rect를 이용하여 텍스트의 좌상단, 우하단에 붉은 점을 찍게 한 프로그램의 캡쳐본이다. 굉장한 사실은, 6, 8, 2, 11, 18, 13 등의 숫자를 잘 보면.. 빨간 점의 위치가 이상하다. "제대로 안찍혀 있다." 좌상단, 우하단에 찍힌 것이 아니라 이상한 위치에 찍혀있다. 이것이 버그인지 무엇인지 아직은 잘 모르겠다. 확실한 것은, getTextBounds 를 통해서 정확한 크기가 구해지지 않았다는 것이다. 헐~~~ measureText를 이용해야 하나??? 어찌해야할꼬~ --> 맙소..
Android의 SurfaceView를 이용하여 간단한 게임을 구현하고자 한다. 보통 다들 worker thread를 만들어서 holder에 lock을 걸었다가 풀어주면서 화면을 갱신해주는 방법을 쓰더라. 문제는, thread 내부의 무한 루프에서 발생한다. 무한 루프는, 계~~~~~~~~속 해서 돌며, CPU의 속도에 따라 도는 속도라 다르다. 따라서 빠른 CPU를 쓴다면 루프 속도가 빠를 것이고, 느린 CPU를 쓴다면 느릴 것이다. 그리고.. 무한 루프를 도는 동안에는 엄청나게 점유율이 높을 것이다.. 사람의 눈은 30fps면 웬만한 동작을 인지하는데 무리가 없기 때문에, 나는 surfaceview로 만든 게임을 30fps로 맞추고자 했다. 그렇게 해서 나온 소스는 다음과 같다. public clas..
평소 환경 변수를 통하여 윈도우->실행 을 통해 단축 명령을 자주 사용하는 나같은 사람들을 위한 팁 1. 네트워크 어댑터 창 Prompt로 열기 - network.bat ncpa.cpl 2. 유선 네트워크 어댑터는 켜고 무선 네트워크 어댑터는 끄기 - wired.bat wmic path win32_networkadapter where Name="Wireless Adapter Name" call disable wmic path win32_networkadapter where Name="Wired Adapter Name" call enable 여기서 Name안에 써주는 값은, 각자의 Network Adapter 이름을 써주면 된다. 그냥 GUI환경에서 이름을 확인해도 되고, 아래의 명령어를 통하여 얻어도 된..
안드로이드 스마트폰에서 화면이 켜지는 경우는 크게 두가지로 나뉜다. 1. HW Key에 의해 화면이 켜짐2. Software에 의해 화면이 켜짐 여기서 1. 하드웨어 키에 의해 화면이 켜지는 경우는 홈 버튼(Home button) / 파워 버튼(Power Button)으로 화면을 켜는 경우이며, 2. Software에 의해 켜지는 경우는 알람, 푸쉬메세지, 전화 등 여러 'Notification'이 들어 왔을 경우에 해당한다. 나는 이 중에 1번의 경우를 캐치하고 싶었다. 2번은 철저하게 배제하고.사용한 방법은 아래와 같다. 1) NotificationListenerService를 생성 후, Notifacation을 받을 경우 현재 시간을 SharedPreference에 저장한다.2) BroadcastR..
http://www.learn2crack.com/2014/11/reading-notification-using-notificationlistenerservice.html 완벽하다 정말 NotificationListnerService 외에도 LocalBroadcastManager 사용법 까지 알게 되어 좋다. 참고로 Notification Access는 폰마다 위치가 다르다.아래와 같이 열어주면 편하다. Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"); startActivity(intent); 추가적으로 NotificationListenerService를 통해 핸드폰 화면이 꺼져있을 때 메세지가 와서 해..
안드로이드 서비스 동작 중인지 파악하기 아래의 코드를 사용하면 된다. 나는 보통 static으로 선언하여 service 안에 넣는다. 예를 들어 service 이름이 'JHService' 라면JHService.isServiceRunning(); 하면 여부가 나온다. public static boolean isServiceRunning(Context context) { ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); for (RunningServiceInfo rsi : am.getRunningServices(Integer.MAX_VALUE)) { if ([서비스이름].class.getName()..
루팅된 폰에서만 가능 확실한 정보는 아니고, 대충 느끼기에.. 안드로이드 부팅 중 /system/app 또는 /system/priv-app 에 있는 apk들의 압축을 /data/data에 푸는듯 보인다. 즉, /system 안에 있는 애들을 지워주면 될 것 같은데.. 이 안에 있는 것을 지우려고 하면 mount가 read-only 로 돼있어서 지워지질 않는다. 따라서, 마운트를 바꿔준 후, 앱을 지우도록 하자 #su #mount -o rw,remount /system #cd /system/priv-app #rm -rf [App Name] 이후 재부팅 해서 /data/data 안을 보면 [AppName] 이 없는 것을 확인 할 수 있다. /system 안에서 찾을 수 없으니 부팅 중에 가져오지 않은 것이다..
CPU (Central Processing Unit) CPU가 무엇인가... 하면.. 컴퓨터의 두뇌같은 녀석이다. CPU가 들어가면 그놈은 컴퓨터라고 할 수 있으며, 컴퓨터라고 하면 거기엔 CPU가 있다고 볼 수 있다. 두뇌이기 때문에 CPU라고 하면 한 컴퓨터 시스템에 1개가 있다.(Central Unit 입니다~!) 보통 검정색 Chip 으로 돼있다. 예전에는 단순히 제어 장치, 연산 장치, 레지스터.. 정도가 다였지만, 요즘은 공정 기술이 좋아지면서 이것저것 마구마구 들어간다. PC용 CPU를 보면 내장 그래픽 카드도 들어가고 장난 아니다. SoC (System On Chip)이라 그래서 요즘은 엄지손톱 만한 자그만 칩에 이것저것 다 들어간다. Processor + System Bus + Perip..
- Total
- Today
- Yesterday
- source
- AWS
- java
- android
- MFC
- 음악
- Visual C++
- it
- jni강좌
- db
- 리눅스
- 드라이버
- C++
- Python
- winapi
- jni
- API
- Troubleshooting
- driver
- linux
- NDK
- algorithm
- database
- kering
- Quiz
- Cloud
- gcc
- C
- 안드로이드
- 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |