Lined Notebook

[Android] Bluetooth Low Energy 삽질일기 - 1

by JungWook_

BLE 기본예제 Download
구글에서 제공하는 예제를 수정해서 개발하려고합니다. 약 4~5년전 예제라서 수정해야 할 부분들이 있습니다.

우선 프로젝트를 실행 가능하게 만들고 난 후에 각 코드별로 공부하고 정리하겠습니다.

실행하자마자 에러가 났습니다. 에러를 보니 compile대신에 impletation이나 api로 바꾸라고 합니다.

build.gradle안에 dependencies를 확인합니다.

dependencies {
    compile "com.android.support:support-v4:27.0.2"
    compile "com.android.support:support-v13:27.0.2"
    compile "com.android.support:cardview-v7:27.0.2"
    compile "com.android.support:appcompat-v7:27.0.2"
}

compile을 impletation으로 수정하겠습니다.

수정 후 상단에 sync now를 눌렀더니 에러가 줄어들었습니다.

buildToolsVersion '27.0.2'부분을 지우라는거 같습니다. 지워보겠습니다. 위의 코드와 같은 파일에 있습니다.

android {
    compileSdkVersion 27

    buildToolsVersion "27.0.2" <-- 이부분을 지웁니다.

    defaultConfig {
        minSdkVersion 18
        targetSdkVersion 27
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    sourceSets {
        main {
            dirs.each { dir ->
                java.srcDirs "src/${dir}/java"
                res.srcDirs "src/${dir}/res"
            }
        }
        androidTest.setRoot('tests')
        androidTest.java.srcDirs = ['tests/src']

    }

}

지운후에 sync now를 누르니 에러가 사라졌습니다. 에러는 없지만 실행해도 블루투스신호는 못잡습니다.

AndroidManifest파일을 열어서

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

밑에

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

코드를 추가해줘야 합니다. 블루투스 신호잡는데 위치권한은 왜 필요한지는 잘 모르겠습니다.

그리고 DeviceScanActivity -> onCreate() 함수안에 다음과 같은 코드를 추가합니다.

 

int MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION = 1;
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);

이제 앱을 실행하면 블루투스 신호를 잡을 수 있습니다.

 

다음 글에서는 각 코드를 설명하겠습니다.

블로그의 정보

hongmono

JungWook_

활동하기