본문 바로가기

Android Studio

(12)
[Android][Java]BLE 통신 분석 및 예제(3) BluetoothLeService.java BluetoothLeService 클래스는 서비스 연결과 BLE 기기로부터 받은 GATT 서버와의 데이터 통신을 관리한다. 먼저 AndroidManifest.xml에 service를 등록해야 한다. MainActivity 클래스의 onCreate에서 bindService()를 호출하게 되면 service를 상속받은 BluetoothLeSerivce에서 onBind()를 호출해 IBinder를 생성하여 반환해준다. Binder 구현을 통해서 서비스 내의 메서드에 접근할 수 있는 권한을 얻는다. public class BluetoothLeService extends Service @Nullable @Override public IBinder onBind(Intent..
[Android][Java]BLE 통신 분석 및 예제(2) MainActivity.java DeviceScanActivity에서 스캔된 기기를 선택하면 넘어온다. onCreate에서 DeviceScanActivity에서 보낸 EXTRA_DEVICE_NAME, EXTRA_DEVICE_ADDRESS를 받는다. final Intent intent = getIntent(); deviceName = intent.getStringExtra(EXTRA_DEVICE_NAME); deviceAddress = intent.getStringExtra(EXTRA_DEVICE_ADDRESS); 서비스를 바인딩하도록 bindService()를 호출한다. 첫 번째 인자에는 연결할 서비스, 두 번째 인자에는 서비스와의 연결을 모니터링 하는 ServiceConnection, 세 번째 인자에는..
[Android][Java]BLE 통신 분석 및 예제(1) * 예제 1,2,3 전체 수정(20220702) 나에게 더 친숙한 코드를 사용하고 싶어서 예전에 연습한 적이 있는 SDK 30이하 버전으로 맞추고 다시 실습을 진행해 보았다. 추후 SDK 31이상(Android 12)을 타겟팅하는 코드도 추가할 것이다. 내가 사용한 SDK 버전 몰라서 분석하고 까먹고 분석하고 또 까먹고 다시 또 분석하고.. 정리해 놓기로 결심했다. 안드로이드 공식 문서와 github 예시를 참고했다. 참고로 targetSdkVersion이 31로 올려지면서 Android12 블루투스 권한이 추가되었다. https://developer.android.com/guide/topics/connectivity/bluetooth-le?hl=ko 저전력 블루투스 개요 | Android 개발자 | A..
[Android][해결]적용 안되던 Hide NavigationBar 태블릿으로 테스트를 진행하던 중 발견한 이슈. 분명 휴대폰에서는 잘 숨겨졌던 navigation bar가 태블릿에서는 어째서인지 적용이 풀렸다(?) 앱을 실행하면 처음엔 잘 숨겨져있지만 다이얼로그를 열었다 닫으면 뿅하고 다시 나왔다. 각 다이얼로그 코드에도 hideNavigationbar code를 넣어봤지만 결과는 같았다. 또한 메인 클래스에 onWindowFocusChanged()를 override하여 사용도 해봤지만 해결하지 못했다. 그러던 중 발견한 코드 ! 기존에 작성해둔 hideNavigationbar code 아래에 추가로 해당 코드를 넣어서 해결했다. decorView = getWindow().getDecorView(); decorView.setOnSystemUiVisibilityChang..