본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


기타/Android

안드로이드 RTT, WIFI를 활용한 실내 GPS

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 4. 30.

 

 

안드로이드 9.0에서부터 RTT를 활용한 실내 GPS 좌표 기능을 제공하고 있다. 비콘처럼 삼각측량을 통한 자기 좌표 결정 방법이 더욱 간단 해 진 것이다. 사용자 입장에서도 따로 블루투스를 켜지 않아도 되며, 그냥 WIFI만 켜도 되니 매우 편리한 기능 인 것 같다.
먼저 권한에 대해서 매니페스트에 권한을 설정한다.

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

그리고 사용가능한 기기인지 확인한다.

IntentFilter filter =
    new IntentFilter(WifiRttManager.ACTION_WIFI_RTT_STATE_CHANGED);
BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context ctx, Intent inten) {
        if (wifiRttManager.isAvailable()) {
            … //사용가능하면...블라블라~
        } else {
            …
        }
    }
};
context.registerReceiver(receiver, filter);

그리고나서 wifi기기 범위를 지정하고 콜백함수를 통해서 데이터를 받으면 된다.

WifiRttManager mgr = (WifiRttManager) Context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE);
RangingRequest.Builder builder = new RangingRequest.Builder();
builder.addAccessPoint(wifi목록1);
builder.addAccessPoint(wifi목록2);
//접근하는 wifi위치...n개 등록 가능
//WifiManager 클래스를 활용하면 만들 수 있다.
//WifiManager wm =  (WifiManager) getSystemService(WIFI_SERVICE);
//List<ScanResult> apList = wm.getScanResults();
//이런느낌으로...

RangingRequest req = builder.build();

mgr.startRanging(request, executor, new RangingRequestCallback() {

  @Override
  public void onRangingFailure(int code) {
    //실패
  }
  @Override
  public void onRangingResults(List<RangingResult> result) {
    //성공
    //result에 데이터가 담긴 여러 메소드가 있다. 거리, 상태 측정 등등..
  }
});

나중에는 9.0말고도 다른기기들도 지원한다는데..

암튼 편리하게 바뀐건 너무 좋은 것 같다.

반응형

'기타 > Android' 카테고리의 다른 글

구글 마켓 정책 변경(2019)  (0) 2019.05.02
안드로이드 Doze모드 2  (0) 2019.04.30
안드로이드 9.0  (0) 2019.04.30
플레이 스토어 일시 정지  (0) 2019.04.30
안드로이드 앱 아이콘 변경  (0) 2019.04.30
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글