안드로이드

안드로이드 블루투스 권한 설정 및 블루투스 기기 검색 android bluetooth permission and search device

알통몬_ 2017. 7. 24. 14:30
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


오랜만에 안드로이드 포스팅을 하는데요.

이번 포스팅에서는 안드로이드 블루투스 권한 설정과 블루투스 장치 검색방법에 대해 알아보겠습니다.


1. 프로젝트를 생성하고, manifest.xml 파일에서 권한을 설정해줍니다..

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


2. 스마트 폰이 블루투스 기능을 지원하는지 확인 후,

블루투스 기능을 사용할 것인지에 대해 권한 요청 다이얼로그를 띄웁니다.



이제 블루투스 사용 권한을 얻는 것은 끝났습니다.


다음은 기존에 페어링되었던 블루투스 장치를 검색하는 방법입니다.


위 코드를 사용해 아래처럼 기존에 페어링되었던 장치를 검색할 수 있습니다.


그리고 기존에 연결된 적이 없던 연결 가능한 블루투스 장치를 찾을 때는

BluetoothManager 에 있는 startDiscovery() 메소드를 사용해야 하고,

장치가 검색되었을 때를 대비한 BroadcastReceiver 도 등록해줘야 합니다.

그리고 API 23 마쉬멜로우 버전 이상부터는 GPS 권한까지 있어야 

검색이 정상적으로 동작합니다.

저는 아래처럼 만들어 봤습니다.

아래 3줄의 코드는 API 23 이상에서 사용자에서 GPS 권한 승인을 요청하는 코드입니다.

가장 뒤 매개 변수 값인 PERMISSIONS 는 0이 아닌 양의 정수 값을 아무거나 넣어주시면 됩니다.

ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSIONS);
package blue.tooth.scanner.bluetoothscanner;

import android.Manifest;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

BluetoothAdapter mBluetoothAdapter;
private static final int PERMISSIONS = 1;
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
Log.d("ghcn", "ghcnf3");
//bluetooth device found
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.d("device was searched", device.getName());
Toast.makeText(MainActivity.this,"Found device " + device.getName(), Toast.LENGTH_SHORT).show();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSIONS);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothAdapter.startDiscovery();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, intentFilter);
}

@Override
protected void onStart() {
super.onStart();
}

@Override
protected void onStop() {
super.onStop();
Log.d("ghcn", "ghcnf");
unregisterReceiver(mReceiver);
}
}


이상입니다.

다음 포스팅에서는 블루투스 장치에 연결하는 방법에 대해 포스팅합니다.


반응형