Android 블 루 투 스 통신 / 블 루 투 스 채 팅 의 실현 (一)데모 다운로드 포함

8744 단어 블 루 투 스
Android 블 루 투 스 통신 / 블 루 투 스 채 팅 의 기본 조작 실현
 
     본 시리즈 의 글 은 주로 안 드 로 이 드 기기 가 블 루 투 스 통신 을 바탕 으로 실시 간 채 팅 을 실현 하 는 것 을 소개 한다. 글 시 리 즈 는 주로 두 가지 부분 을 포함한다. 안 드 로 이 드 블 루 투 스 의 기본 조작, 안 드 로 이 드 블 루 투 스 의 채 팅 실현 이다.
 
     본 블 로그 자원 무료 다운로드:
블 루 투 스 도구:http://download.csdn.net/detail/laozhuxinlu/11752108
블 루 투 스 대화:http://download.csdn.net/detail/laozhuxinlu/11752117
 
    여러분 은 먼저 이 응용 에서 의 블 루 투 스 기본 작업 의 실현 을 직관 적 이 고 효과적으로 느 낄 수 있 습 니 다.
Android蓝牙通讯/蓝牙聊天的实现(一)_含demo下载_第1张图片 Android蓝牙通讯/蓝牙聊天的实现(一)_含demo下载_第2张图片
 
    위의 그림 에서 볼 수 있 듯 이 이쪽 은 블 루 투 스 에 대한 기본 적 인 조작 이 이 루어 집 니 다. 블 루 투 스 를 열 고 블 루 투 스 를 닫 으 며 장치 가 연 결 된 블 루 투 스 장 치 를 보 여 줍 니 다. 장치 주변 에 연결 할 수 있 는 블 루 투 스 장 치 를 스 캔 하고 현재 장 치 를 설정 하면 검 측 될 수 있 는 상 태 를 설정 합 니 다.
    그러면 다음은 이 다섯 가지 기본 조작 에 대해 설명 한다.
 
1. 권한 설정:
    장치 블 루 투 스 작업 은 기본 적 인 권한 을 추가 해 야 합 니 다.
 
    
    

    이 설명 이 필요 한 것 은 android 6.0 이후 두 가지 변경 사항 이 있 습 니 다.
 
        1. 주변 블 루 투 스 를 검색 할 수 있 는 권한 은 장치 의 모호 한 지리 적 위 치 를 가 져 올 수 있 는 권한 을 추가 해 야 합 니 다.
 

         2. 일부 권한 에 대해 사용자 가 수 동 으로 추 가 를 확인 해 야 합 니 다. 예 를 들 어 위 에서 말 한 장치 의 모호 한 지리 적 위 치 를 가 져 올 수 있 는 권한:
 
 
    private void checkBluetoothPermission() {
        if (Build.VERSION.SDK_INT >= 23) {
            //             
            if (ContextCompat.checkSelfPermission(MainActivity.this,
                    Manifest.permission.ACCESS_COARSE_LOCATION)
                    != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(MainActivity.this,
                        new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
                        1);
            } else {
                //    
            }
        } else {
            //     6.0    
        }
    }

 
 
 
2. 블 루 투 스 열기:
 
    public void openBT(View view){

        if (!BA.isEnabled()) {
            Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(turnOn, 1);
            Toast.makeText(getApplicationContext(),"Turned on"
                    ,Toast.LENGTH_LONG).show();
        }
        else{
            Toast.makeText(getApplicationContext(),"Already on",
                    Toast.LENGTH_LONG).show();
        }
    }

 
    그 중:
 
private BluetoothAdapter BA;
BA = BluetoothAdapter.getDefaultAdapter();

   
이상 은 장치 블 루 투 스 상태 에 대한 획득 과 열기 작업 입 니 다.
 
3. 블 루 투 스 닫 기:
 
    public void closeBT(View view){
        BA.disable();
        Toast.makeText(getApplicationContext(),"Turned off" ,
                Toast.LENGTH_LONG).show();
    }

 
 
 
4. 장치 가 연 결 된 모든 장 치 를 열거 합 니 다.
 
 
    public void showcennected(View view){
        discover_list.clear();
        connected_list.clear();
        pairedDevices = BA.getBondedDevices();
        for(BluetoothDevice bt : pairedDevices)
            connected_list.add(bt.getName() + "
" + bt.getAddress()); Toast.makeText(getApplicationContext(),"Showing Paired Devices", Toast.LENGTH_SHORT).show(); final ArrayAdapter adapter1 = new ArrayAdapter (this,android.R.layout.simple_list_item_1, connected_list); LV1.setAdapter(adapter1); ifconnected = true; }

 
    코드 를 통 해 알 수 있 듯 이 우선 우리 가 얻 은 모든 연 결 된 장치 가 connected 에 추가 되 어 있 습 니 다.목록 아래:
 
connected_list.add(bt.getName() + "
" + bt.getAddress());

 
그리고 ListView 컨트롤 을 통 해 모두 보 여 줍 니 다.
 
 
private ListView LV1;
...

LV1.setAdapter(adapter1);

 
 
 
5. 주변 장치 스 캔:
 
BA.startDiscovery();

private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("find","    ");
            String action = intent.getAction();
            if(BluetoothDevice.ACTION_FOUND.equals(action)){
                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                //         
                Log.i("find","    ");
                if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
                    Log.i("find","    ");
                    discover_list.add(device.getName() + "
" + device.getAddress()); } } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { // if (discover_list == null) { Log.i("find"," "); } Log.i("find"," "); for(int i=0; i < discover_list.size();i++){ Log.i("BTlist","111"); } // Log.i("list",discover_list); final ArrayAdapter adapter1 = new ArrayAdapter (MasterChat1.this,android.R.layout.simple_list_item_1, discover_list); LV1.setAdapter(adapter1); // } pd.dismiss(); // ProgressDialog } } };

    위의 재 구성 함 수 는 스 캔 을 통 해 얻 은 장 치 를 가 져 오고 ListView 에 추가 하 는 것 입 니 다.6. 블 루 투 스 연결 의 실현:
 
 
private void connectBT(){

        if(BA.isDiscovering()){
            BA.cancelDiscovery();
        }
        BluetoothDevice btDev = BA.getRemoteDevice(connectBTaddress);
        connectState = btDev.getBondState();

        switch (connectState){
            //      
            case BluetoothDevice.BOND_BONDING:
                Toast.makeText(getApplicationContext(),"Be Bonding",
                        Toast.LENGTH_LONG).show();
                //      
            case BluetoothDevice.BOND_NONE:
                //   
                try {
                    Method createBondMethod = BluetoothDevice.class.getMethod("createBond");
                    createBondMethod.invoke(btDev);
                    PsText.setText("         :"+ ConnectBTname);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            //       
            case BluetoothDevice.BOND_BONDED:
                try {
                    //   
                    PsText.setText("         :"+ ConnectBTname);
                    final String SPP_UUID = "00001101-0000-1000-8000-00805F9B34FB";
                    UUID uuid = UUID.fromString(SPP_UUID);
                    BluetoothSocket socket = btDev.createRfcommSocketToServiceRecord(uuid);
                    socket.connect();
                    PsText.setText("         :"+ ConnectBTname);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
        }
    }

    이 를 통 해 알 수 있 듯 이 블 루 투 스 의 연결 은 두 가지 상황 이 있 는데 하 나 는 이전에 연결 되 었 으 나 forget 작업 을 하지 않 은 장치 이 고 다른 하 나 는 직접 연결 을 하 는 것 이다.
 
 
7. 마지막 으로 장 치 를 설정 하 는 것 은 스 캔 할 수 있 는 상태의 설정 입 니 다.
public void BeVisable(View view){

        Intent getVisible = new Intent(BluetoothAdapter.
                ACTION_REQUEST_DISCOVERABLE);
        startActivityForResult(getVisible, 0);

 
    대부분의 장 치 는 기본적으로 블 루 투 스 가 스 캔 되 지 않 기 때문에 장치 블 루 투 스 를 다른 장치 에서 스 캔 할 수 있 도록 설정 하 는 방법 을 제공 합 니 다.하지만 기본 값 은 120 초.    여 기 는 블 루 투 스 의 기본 적 인 조작 에 대한 지도 일 뿐 입 니 다. 더 깊이 공부 하고 싶 으 면 다음 편 을 참조 할 수 있 습 니 다. 블 루 투 스 통신 / 블 루 투 스 채 팅 의 실현 (2): 블 루 투 스 통신 의 실시 간 채 팅 실현

좋은 웹페이지 즐겨찾기