다음주 중으로 삼성 SDK 2 의 정식 버전이 릴리즈 된다고 합니다.
그에 앞서 Samsung Mobile
Innovator Star 에게 테스트 SDK가 제공 되어 어떻게 활용할 수 있게 될지 간략하게 프리뷰를 하는 시간을 가져볼려고 합니다.
먼저 SDK를 설치하면 아래와 같은 폴더 구조의 SDK가 설치됩니다.
EULA.rtf
samsung_banner.bmp
|
+---doc
| API-spec.pdf
| API_Spec.chm
| Installation Guide.pdf
| Programming Guide.pdf
|
+---inc
| smi3DOrientation.h
| smiAccelerometer.h
| smiCamera.h
| smiCameraFlash.h
| smiFMRadio.h
| smiHaptics.h
| smiLed.h
| smiLightSensor.h
| smiOpticalMouse.h
| smiOrientation.h
| smiProximitySensor.h
| smiR2VS.h
| smiSDK.h
| smiSlider.h
| smiTVOut.h
| smiTypes.h
| smiVibrate.h
| smiWheelKey.h
|
+---lib
| SamsungMobilesdk_2.lib
|
+---redist
| smi_wm_pro_sdk_redist_2_2_0.cab
| smi_wm_std_sdk_redist_2_2_0.cab
|
\---samples
\---managed
\---BounceDemo
| BounceDemo.csproj
| BounceDemo.sln
| BounceForm.cs
| BounceForm.Designer.cs
| BounceForm.resx
| Program.cs
| SmiPhysics.dll
|
+---Properties
| AssemblyInfo.cs
| Resources.Designer.cs
| Resources.resx
|
\---Wrappers
Accelerometer.cs
Haptics.cs
Shared.cs
doc 디렉토리에는 친절한 문서 파일이 3가지가 존재합니다. 개발자가 어렵지 않게 SDK를 적용할 수 있도록 한 배려인 것 같더군요. sample 에는 managed 예제 1개가 있습니다. SDK 1 최초에도 managed 코드 밖에 없어서 실제로 사용한 적이 없었는데.. 다음 SDK에는 Platform SDK 정도는 아니여도 native 코드가 좀 들어있었으면 하는 바램을 가져봅니다.
삼성폰 중에 위의 SDK로 개발할 수 있는 폰의 종류부터 보자면 아래의 표와 같습니다.
제가 가진 폰은 하나도 없는게 아쉽지만.. 옴니아1으로 테스트 할 수 있는 부분도 몇몇 있기 때문에 그 부분에 대해서는 실제로 테스트 프로그램을 간단하게 제작하는 방법과 그 결과물을 공유하고자 합니다.
위의 SDK를 사용하려면 개발툴에 설치한 SDK가 실제로 적용될 수 있도록 몇가지 설정이 필요합니다.
저는 WM5 버전으로 옴니아1에서 테스트할 예정이기 때문에 WM5를 기준으로 설명하겠습니다.
기본 설치 경로를 기준으로 비쥬얼 스튜디오 "도구" "옵션" "프로젝트 및 솔류션" "VC++디렉터리" 에서 아래와 같이 inc 폴더를 추가합니다.
이렇게 설정되었으면 SDK 사용하는데는 아무런 문제가 없습니다.
다만 단말기에서 실제로 바이너리를 실행시키기 위해서는 폰에 재배포 라이브러리가 설치되어야 합니다.
위의 폴더 구성중에서 redist(ribute) 폴더에 있는 cab 파일을 설치하면 됩니다.
실제로 동적로딩하는 파일은 설치된 파일 중에 SAMSUNGMOBILESDK_2.DLL 이 사용됩니다.
그럼 간단하게 먼저 Accelerometer API 를 사용하여 샘플을 만들어 보겠습니다.
위의 환경이 갖추어져 있다는 가정하에 진행됩니다.
SDK를 가져와야 하므로 헤더와 라이브러리를 포함합니다. 아래와 비슷하겠죠.
#include "stdafx.h"
#include "SDK_Sample.h"
#include "SDK_SampleDlg.h"
#include <smiTypes.h>
#include <smiAccelerometer.h>
#pragma comment(lib, "SamsungMobilesdk_2.lib")
저는 실시간으로
Accelerometer 정보를 가져오는 쓰레드를 아래와 같이 만들었습니다.
DWORD WINAPI ACCEL_THREAD(LPVOID lpParam)
{
SmiAccelerometerVector* pAccel = new SmiAccelerometerVector;
for(;;)
{
if ( SmiAccelerometerGetVector(pAccel) == SMI_SUCCESS )
{
::SendMessage(g_hDlg, GET_DATA, 0, (LPARAM)pAccel);
}
else
{
}
}
delete pAccel;
delete pAccel;
return 0;
}
그리고 슬라이더바에 값을 적용시키기 위해 유저메세지 함수를 만들어 아래와 같이 작성하였습니다.
LRESULT CSDK_SampleDlg::OnData(WPARAM wp, LPARAM lp)
{
SmiAccelerometerVector* p = reinterpret_cast<SmiAccelerometerVector*>(lp);
m_sld_x.SetPos(int(p->x*1000000));
m_sld_y.SetPos(int(p->y*1000000));
m_sld_z.SetPos(int(p->z*1000000));
return 0;
}
위의 코드를 보시면 아시겠지만
Accelerometer 센서에서 보내주는 값은 실수값 -1.000000 ~ 1.000000 입니다.
이렇게 해서 간단하게
Accelerometer 값을 사용하는 테스트 프로그램이 완성되었습니다.
동작하는 모습을 동영상 촬영을 하고 싶지만.. 사실 별것도 아닌것 같고 동영상촬영할 만한 기기가 없어서 간단한 사진과 바이너리 파일을 남기고 #1은 마치도록 하겠습니다.
테스트 해보실 분은 아래의 재배포설치파일과 테스트 실행파일을 받으시면 됩니다.
P.S. 위의 예제는 삼성폰 WM5 이상의 플랫폼이라면 모두 실행됩니다.
최근 댓글