motion


motion은 3.0.0 버전 이상 부터 제공되며 해당 라이브러리를 추가하여 사용해야 된다.

motion 은 HSP 에서 확장 라이브러리로 제공하는 API 로 aar 라이브러리 파일과 build.gradle 파일을 수정하여 사용할 수 있다. 

라이브러리 추가 방법은 Android 개발 가이드의 내용을 참조하면 된다.

런타임 퍼미션이 필요한 API 는 아래와 같이 사용 가능 하다. 

PermissionUtils.checkPermissions(PermissionParams.builder()
    .permission(Manifest.permission.YOU_WANT_PERMISSION)
    .activity(activity)
    .listener((reqCode, result) -> {
        if (!result) {
            TODO

            return ;
        }

        TODO
    })
    .build());

motion 은 단말의 센서를 이용하여 단말의 X, Y, Z 값을 얻을 수 있다. motion 기능은 Optional 한 기능이므로 사용자가 별도로 개발하여 사용해도 무방하다. 

motion 을 통해 전달되는 좌표 값은 MotionData 에 담아 전달되며 MotionData 클래스 정보와 각각의 변수 정보는 하단에 표를 참조 한다.

MotionData Class

public class MotionData implements Serializable {
   private float x,y,z;
   private long timestamp;
}

MotionData

필드설명
x단말의 x 값 
y단말의 y 값
z단말의 z 값
timestamp이벤트 발생 시간
  

getCurrent

getCurrent 는 단말의 현재 X, Y, Z 값을 반환 한다. 

Example

val manager = MotionManager(this@MainActivity)
manager.register()

DAPMotion.getCurrent(this@MainActivity, {
   // TODO
   manager.unregister()
}) {
   // TODO
   manager.unregister()
}
MotionManager manager = new MotionManager(MainActivity.this);
manager.register();

DAPMotion.getCurrent(MainActivity.this, manager, result -> {
       // TODO
       manager.unregister();
   }, e -> {
       // TODO
       manager.unregister();
   });

watch

watch 는 단말의 현재 X, Y, Z 값을 주기적으로 반환 한다. 

options

필드설명비고M/O
manager동작센서 관라자 
watchId임의의 문자열 M
    

Example

val manager = MotionManager(this@MainActivity)
manager.register(SensorManager.SENSOR_DELAY_NORMAL)

val watchId = "100"

DAPMotion.watch(this@MainActivity, manager, watchId, {
   // TODO
}) {
   // TODO
}
MotionManager manager = new MotionManager(MainActivity.this);
manager.register(SensorManager.SENSOR_DELAY_NORMAL);

String watchId = "100";

DAPMotion.watch(MainActivity.this, manager, watchId, result -> {
       // TODO
   }, e -> {
       // TODO
   });

clearWatch

clearWatch 는 주기적으로 위치 정보를 받기 위해 설정한 watch 를 멈춘다. 이때 사용되는 기준값으 watch 에 사용된 manager 와 watchId 값을 전달하면 된다. 

options

필드설명비고M/O
manager동작센서 관라자watch 에서 생성한 manager 사용
watchIdwatch 아이디임의의 문자열
watch 에서 생성한 watchId 사용
M
     

Example

val manager = MotionManager(this@MainActivity)

val watchId = "100"

DAPMotion.clearWatch(this@MainActivity, manager, watchId, {
   // TODO
   manager.unregister()
}) {
   // TODO
   manager.unregister()
}
MotionManager manager = new MotionManager(MainActivity.this);

String watchId = "100";

DAPMotion.clearWatch(MainActivity.this, manager, watchId, result -> {
       // TODO
       manager.unregister();
   }, e -> {
       // TODO
       manager.unregister();
   });

Error Code

CodeCauseComment
E12300파라메터 값이 잘못되어 있을 경우 
E12301전달된 액션 값이 알 수 없는 액션일 경우 
E12302watch 아이디 값이 null 이거나 빈 값인 경우 
E12303화면 갱신 시간 정보가 0 ~ 3 정수값이 아닌 경우 
E12350실행 중 오류가 발생 되었을 경우 
E12351watch 요청 시 watch 아이디 값이 존재하는 경우 
E12352clearWatch 요청 시 watch 아이디 값을 찾을 수 없는 경우 
E12353Motion 정보를 얻기위한 서비스가 지원하지 않는 경우 
E12399알 수없는 오류가 발생 되었을 경우