본문 바로가기

Javascript

cordova 에서 BLE 통신하기

반응형

1. plugin 설치 (https://github.com/don/cordova-plugin-ble-central)

cordova plugin add cordova-plugin-ble-central

2. bluetooth connect

let infoLE;
function BtConnect(){
	ble.connect(
    	블루투스ID,
        function(res){
        	//연결처리
            //쓰기, 읽기를 위해서 4번째 배열의 값(service, charcteristic)을 저장해야함.
            infoLE = res.charcteristics[4];
        },
        function(){
        	//연결 실패 처리
        }
     );
}

3. bluetooth write

ble.write(
	블루투스ID, 
    infoLE.service, 
    infoLE.characteristic, 
    전송할데이터, 
    function () {//성공시 처리 }, 
    function () {//실패 처리}
);

4. bluetooth read

function BTRead() {
    ble.startNotification(
        블루투스ID,
        infoLE.service,
        infoLE.characteristic,
        function (data) {
            //읽은 data 처리
        },
        function () { console.log("read error"); }
    );
}

5. plugin 사용시 나올수 있는 에러

 

1. androidx error

error: cannot find symbol
import androidx.annotation.RequiresPermission;

2. class RequiresApi error

error: cannot find symbol
@RequiresApi(api = Build.VERSION_OODES.M)

6. 에러 수정을 위한 plugin 추가 설치

1. cordova plugin add cordova-plugin-androidx
2. cordova plugin add cordova-plugin-androidx-adapter

7. 퍼미션 ACCESS_FINE_LOCATION 이 삭제되는문제

1. after_prepare.js 파일
2. androidManifest = stripPermission(androidManifest, 'ACCESS_FINE_LOCATION'); 주석처리