달력

5

« 2024/5 »

  • 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

'Smart Phone Story/Windows Phone'에 해당되는 글 9

  1. 2009.12.14 [.Net CF] 옴니아에서 하드웨어 키 감지
  2. 2009.11.19 PDA에서 스마트 폰 까지
  3. 2009.05.06 WorldMate Live 리뷰
  4. 2009.04.17 Google Sync로 PDA 일정을 관리하자 1

이번에 옴니아2에서 프로그램 실행 도중 하드웨어 키 입력 시 변경되는 문제 때문에

고민고민하다가 찾아둔 내용이라 백업 겸 작성합니다

 우선 출처는 데브피아 입니다 (http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=7083&MAEULNo=911&no=41648&ref=41520)

하드웨어 키를 입력 받기 위해서 .Net CF에서는 Hardware 컨트롤이 존제합니다만...
옴니아2에서 사용자가 변경할 수 있는 키는 단 한개로
(물론 직접 레지스트리를 수정하거나 해서 하드웨어 키를 지정할 수 는 있지만요)

HardwareButton bt;
bt.HardwareKey = HardwareKeys.ApplicationKey1;

이런식으로 선언하여 KeyDown에서 감지하기에는 통화버튼, 종료버튼, 볼륨조절, 잠금버튼, 카메라 버튼 과 같은 키 입력은 감지를 하지 못합니다

또한 키 입력을 막기 위해서

AllKeys(TRUE);

라는 것을 사용하지만, 이렇게 하면 모든 하드웨어 키 이벤트가 막히는 상황인지라...
찾다보니 API를 이용한 키보드 후킹으로 조건을 분리하여 처리하는 것을 찾았습니다

 

이예찬 (blackmagic2) 

네이티브 메소드를 이용했습니다^^

Sunscape 라는 프로그램에서 발췌(?) 했는데요,,


        public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam);

        [DllImport("coredll.dll")]
        public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);

        [DllImport("coredll.dll")]
        public static extern int CallNextHookEx(int idHook, int nCode, IntPtr wParam, IntPtr lParam);

        public struct KBDLLHOOKSTRUCT
        {
            public int vkCode;
            public int scanCode;
            public int flags;
            public int time;
            public IntPtr dwExtraInfo;
        }

 

이 소스를 추가해 주시교요,,


        private readonly NativeMethods.HookProc HookProcedure;
        private readonly int hHook;

이 소스를 선언부에 선언 해 주시구,,

 

Form 클래스의 생성자 메소드에


            HookProcedure = KeyboardHookProc;
            hHook = NativeMethods.SetWindowsHookEx(20, HookProcedure, IntPtr.Zero, 0);

를 추가해 주세요

 


        private static int KeyboardHookProc(int code, IntPtr wParam, IntPtr lParam)
        {
            NativeMethods.KBDLLHOOKSTRUCT hookStruct = (NativeMethods.KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(NativeMethods.KBDLLHOOKSTRUCT));
            if (code >= 0)
            {
            }
            return 1;
        }

그다음 이 함수를 추가해 주시면 됩니다^^
if문 사이에 특정한 키가 눌리면 이벤트를 발생시키는 구문을 넣으면 될 것 같군요^^;

 

잠기기는 하다만,,, 확실히 완벽한지는 잘 모르겠군요^^

완벽한지는 모르겠다고 하셨지만..  정말 잘 됩니다
KeyboardHookProc에 모든 코드를 처리하지 않고 return 1;로 하였기 때문에 전부 키가 막히는데요
이걸 약간 고치면 하드웨어 키 마다 각각 다른 작업을 처리할 수 있게 변경이 가능합니다

/// 0x72 : call button
/// 0x73 : end button
if (hookStruct.vkCode == 0x72 || hookStruct.vkCode == 0x73)
{
     SystemSettings.ScreenOrientation = ScreenOrientation.Angle0;
}
/// 0x5b : Home Button
else if (hookStruct.vkCode == 0x5b)
{
     SystemSettings.ScreenOrientation = ScreenOrientation.Angle0;
     main_VisibleForm();
}

return 0;

저는 이런식으로 고쳤는데요, 분기점이 많은 것 도 아니라서 그냥 if문으로 분리 했습니다
hookStruct에 있는 vkCode를 참조하시면 입력받는 하드웨어 버튼의 키가 나오네요
일단 옴니아1, 옴니아2에서 정상 동작 합니다
마지막에 return 0를 해준 것은 1로 해주면 통화버튼을 눌렀을 때, 키패드창이 안나타나서 return 0로 변경한 것 입니다

:
Posted by Lunaness
2009. 11. 19. 11:03

PDA에서 스마트 폰 까지 Smart Phone Story/Windows Phone2009. 11. 19. 11:03

스마트 폰은 참 매력적인 기계 입니다

지금은 경계가 애매모호하게 되어 스마트폰과 PDA를 동일하게 인식하고 있는 상황입니다만

엄밀히 따지면 PDA –> PDA+Phone –> 스마트 폰  으로 진화를 한 것이라 생각 됩니다

 

90년대 중반 PDA가 활성화 되기 시작하면서 처음 접해본 단말기가

국내제품인 Cellvic이었습니다

bunnylub_3

 

물론 그 전에도 제품들이 많이 나왔었지만

금전적으로 여유도 없었고, 아직은 고가의 제품들이라 쉽게 접하기 어려웠기에

정보만 수집하면서 나름 상상을 가지며 설래였던 기억들이 많이 있네요

 

Cellvic을 사용하면서 개조도 많이 하고, 한번 도둑 맞기도 했고,

다시 구입해서 개조하다 부셔먹고, 단종 이후에 Cellvic i를 구입해서 쓰다가 결국은 책상속에서 잘 자고 있습니다

KCUG에서 SDK를 받아서 개발도 해보려고 했었으나 그 당시 실력이 안되어 좌절했던 적이 있었네요

당시 플랙시스 키보드 제조사에서 okada라는 닉네임을 사용하시는 분께 초대받아서 간 적도 있었던

추억이 많은 제품입니다

 

그 이후로 Symbian 플랫폼을 탑재한 Diamond사의 mako를 구입해서 사용했습니다

Diamond Mako는 Psion revo의 동일한 모델로 미국 Diamond사에서 출시한 제품이었습니다

이 제품이 치명적인 조루 베터리의 단점과 Diamond사의 PDA사업 철수로 싸게 나온 제품을 업어와서

베터리 팩도 만들고, 백라이트도 교체하고 잘 사용했었습니다

최고의 장점은 아마 풀쿼티 키보드가 아녔을까 생각이 듭니다

이걸로 레포트도 쓰고, DOS 에뮬레이터로 TouboC++을 돌려서 간단한 프로그램도 만들었던 기억이 나는군요

1093702402_p_12772-7 1093702402_p_12767-1

 

그 다음에 접했던 제품은 컴팩의 ipaq 3850

IPAQ_3800

지금은 HP ipaq으로 이름이 붙어서 나오지만 우연찮게 쓰시던 분이

한번 써보라고 해서 얻어서 반년정도 사용하다 다시 돌려드린 제품 입니다

그래서 그닥 추억은 없지만 흑백 모델만 사용하던 제가 처음으로 접했던 컬러 제품을 보고 열광했던 기억은 있네요

 

그리고 한동안 PDA에 대해서 쉬고 있다가

미국에 갔을 때 Dell Axim x51v를 구해서 사용했습니다

x51v_thejuri x51v_1_thejuri

중고로 구입해서 액정에 스크레치가 있었지만 하이엔드급 PDA로 매우 잘 썼던 좋은 제품 입니다

WM5를 처음 접하게 되었지요

3850에서 베터리가 나가면 완전 리셋 되는 악몽을 WM5를 통해 처음으로 해소했던 기억이 있습니다

그래픽 가속칩셋이 있어 OpenGL이나 Direct3D도 원할하게 돌아가고

640x480 VGA 해상도를 통해서 고화질의 동영상도 봤고

WI-FI와 블루투스 내장으로 외장형 블루투스 GPS수신기를 구입해서 지오테깅과 네비로도 잘 사용했던

최고의 제품이었습니다

이때부터 스마트 폰용 프로그램을 개발하고자 맘 먹었던 것 같네요

지금 이녀석은 WM6로 롬 업데이트 후 회사에서 개발에 유용하게 쓰고 있습니다

 

그리고 PDA와 전화기를 동시에 들고 다니기 귀찮아 하던 찰나

WM6가 발표되면서 스마트폰이 쏟아져 나오기 시작했지요

그 전에는 솔직히 PDA+전화기라 분리하고 싶습니다

전화기 모듈도 따로 분리되어서 메인보드 + 전화기 모듈 이런식이어서 전화기 모듈만 빼고도 사용 가능했었거든요

 

그래서 눈을 돌린 것인 SCH-M490 T*옴니아 였습니다

통신사 이동을 통해서 구입했었어도 꽤 비싸게 주고 샀었습니다

2008-12-23_17;51;59_r00tin

옴니아 화이트가 뿜어내는 매력에 그냥 빠져버렸고

지금 쁘띠 다이어리가 완성 될 동안 큰 도움을 준 녀석 입니다

WVGA의 놀라운 화면과 광학 조이스틱 내장으로 심플하면서 스마트한 버튼 구성

7색 LED를 통해서 상태 표시와 조도센서, 근접센서(효과는 못봤지만요)

가속도 센서, WI-FI, 블루투스, 5M 카메라 등등 최고의 스팩을 보여주는 멋진 제품 입니다

무엇보다 스피커와 통화용 스피커가 동일하여 Skype를 설치하고 사용해도 전화기처럼 동일하게 쓸 수 있어

무척 매력적 입니다

 

하지만 현실적이지 않은 RAM으로 인하여 사용하기는 조금 까다로웠습니다

 

그러나…

고질적인 삼성의 기계 불량으로 인해

배를 새번갈라 대수술 끝에 결국 환불을 결정…

정말 참하고 튼튼하고 좋은 제품을 떠나보내는 마음이 꽤나 쓰리더군요

 

지금은 SCH-M715 T*옴니아2 아몰레드 로 정착했습니다

sch_m715_dabinnetwork

솔직히 AMOLED빼고는 별로 마음에 드는 녀석은 아닙니다

옴니아1과 동일한 고질적인 터치 불량은 있지만 참고 쓰다 개선된 터치 패널이 나오면 눈물을 머금고 배를 갈라 교채해 줘야 겠지만요

광학 조이스틱도 없고, LED도 없어서 무선 인터넷이 접속이 되었는지 안되었는지도 모르는 그런 제품….

삼성에서 사용하기 쉽게 만든 UI때문에 엄청나게 RAM을 점유하는 문제는 개선되지 않았더군요

아직 공개되지 않은 SDK, 해외용 제품과는 달리 지자기 센서가 빠져 전자 나침반으로도 못쓰는 상황

(지자기 센서를 막은겁니까, 뺀겁니까.. 개발담당자 말로는 통신사 요청이라고 하는데…)

결국 외부 스피커를 하단에 배치하여 VOIP의 사용이 불편함을 제공하기도 합니다

 

옴니아1보다 20% 부족한 기분이 드는 건 왜일까요

가장 신제품이었지만 저한테는 별로 사랑을 받지 못하는 비운의 제품이기도 합니다

 

 

쭉 살펴보니 많이 사용한 것은 아니네요

전 세계적으로 열풍이 불었던 Palm 씨리즈도 사용 못해봤고

애플사의 아이폰도 못 만져봤고

다른 회사 제품들도 많이 접해보지는 못했는지만

어느센가 제 생활에서 한 부분을 차지하고 있는 PDA를 보면서

새삼 디지털 노예가 되는 것을 느낄 수 있네요

 

그냥 정리하는 기분으로 쓴 글 입니다

너무 깊게 파고들면 지는겁니다!

:
Posted by Lunaness
2009. 5. 6. 17:02

WorldMate Live 리뷰 Smart Phone Story/Windows Phone2009. 5. 6. 17:02

오늘 긴 연휴를 끝내고 출근 하였을 때

MS의 [Your Mobile World for May 2009] 메일에 WorldMate Live 서비스에 대한 정보가 들어와 있었다

뭔가 하고 궁금하던 차 다운로드 받아 설치를 해보니

 

여행을 자주 하는 사람들에게 필요한 기능들을 모아 모아 만들어 둔 제품 이었다

마치 Spb Traveler와 같은 어플리케이션 이었던 것이다

MS의 Live 서비스 일환으로 만들어진 WorldMate Live는 인터넷이 연결되어 있다면

실시간으로 정보를 얻어오는 어플리케이션으로 여행자에게 많은 도움을 주기 위한 목적으로 만들어져 있다

 

설치방법이 조금 까다로운데

wml_installer_microsoft.cab 파일을 PDA에 복사한 후 직접 설치를 하는 방식이다

그 다음 설치된 WorldMate Live Install을 실행하여 인터넷에서 직접 다운로드 받는 방식이기 때문에

무선네트워크를 사용해서 다운받기 보다

엑티브 싱크를 통하여 설치하는 것이 좋을 듯 하다

 



 

마치며...

WorldMate Live는 기존의 여행 정보의 관리에 실시간 온라인 업데이트를 추가한 새로운 기능이다

물론 기존에 비해 전문적인 기능(비행일정 및 비행기 상태 조회)이 추가 된 것이 장점이긴 하지만..

그것은 유료 정보이기에 쉽게 접근하기는 어려운 정보들이다

 

설치 시 인터넷을 이용한 다운로드를 통하여 설치되는 모바일 어플리케이션은 처음이었다

설치되는 것도 왜 이리 많은지...

이것을 만약 무선통신을 이용하여 설치하였다면 CDMA였을 경우 엄청난 비용이 나왔을 법 하다

 

로딩시간도 길고 중복된 것 과 같은 기능, 그리고 다른 상용 어플리케이션을 많이 밴치마킹해서

만들어진 느낌도 많이 있지만,

MS에서 지향하는 Live에 한 갈래로 모바일 기기에서 접근하기 쉬운 여행정보 제공과 E-mail로 주고 받을 수 있는

정보는 앞으로 발전 가능성이 높다고 생각된다

:
Posted by Lunaness

저는 PDA를 사용하면서 Outlook 일정관리를 자주 사용하고 있습니다

하지만 언제부턴가 컴퓨터를 포맷을 하게 되면

Outlook 일정과 연락처를 백업하지 않을 경우 일정과 연락처를 날려버리는 경우가 생깁니다

다행이 PDA에 남아있다면야 가능하겠지만

설상가상으로 PDA도 리셋이 되어 버린다면….

 

 

이러한 단점을 없애고자 웹에서 Sync를 제공하는 서비스가 많이 있습니다

그런데….

돈이 문제지요 –ㅅ-

 


:
Posted by Lunaness