Bluetooth 설명

7300 단어 블루투스 통신

사용 권한

    "android.permission.BLUETOOTH" />
    "android.permission.BLUETOOTH_ADMIN" />

초기화

//  
        defaultAdapter = BluetoothAdapter.getDefaultAdapter();
        //  
        defaultAdapter.enable();

면맞춤된 장치 검색

        Set bondedDevices = defaultAdapter.getBondedDevices();
        for (BluetoothDevice bluetoothDevice : bondedDevices) {
            if (!deviceList.contains(bluetoothDevice))
                // 
                deviceList.add(bluetoothDevice);
        }

면맞춤되지 않은 장치 검색

  • 처음에 블루투스 발견 방송을 등록합니다.
  • 등록 방송, 두 개의 액션이 있는데 하나는 블루투스 발견, 하나는 블루투스 상태 변화 방송
  •  //  
            receiver = new MyBluetoothReceiver();
            //  
            IntentFilter filter = new IntentFilter();
            //  action
            filter.addAction(BluetoothDevice.ACTION_FOUND);
            //  action  
            filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
            registerReceiver(receiver, filter);
  • 브로드캐스트 수신기 코드
  • //  action 
        class MyBluetoothReceiver extends BroadcastReceiver {
            @Override
            public void onReceive(Context context, Intent intent) {
                //  
                String action = intent.getAction();
                //  
                BluetoothDevice bluetoothDevice = intent
                        .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                if (action.equals(BluetoothDevice.ACTION_FOUND)) {
                    //  
                    if (!deviceList.contains(bluetoothDevice)) {
                        deviceList.add(bluetoothDevice);
                    }
                    //  
                    setAdapter();
                } else if (action.equals(BluetoothDevice.ACTION_BOND_STATE_CHANGED)) {
                    int bondState = bluetoothDevice.getBondState();
                    switch (bondState) {
                    case BluetoothDevice.BOND_NONE:
                        Toast.makeText(MainActivity.this, " ", 0).show();
                        break;
                    case BluetoothDevice.BOND_BONDING:
                        Toast.makeText(MainActivity.this, " ", 0).show();
                        break;
                    case BluetoothDevice.BOND_BONDED:
                        Toast.makeText(MainActivity.this, " ", 0).show();
                        //  
                        deviceList.remove(bluetoothDevice);
                        //  
                        deviceList.add(0, bluetoothDevice);
                        //  
                        setAdapter();
                        break;
                    default:
                        break;
                    }
                }
            }
        }
  • 검색 시작
  •     new Thread() {
                public void run() {
                    //  , , 
                    if (defaultAdapter.isDiscovering()) {
                        defaultAdapter.cancelDiscovery();
                    }
                    //  , 
                    defaultAdapter.startDiscovery();
                };
            }.start();

    데이터 어댑터 설정

    //  , , 
            if (myBluetoothAdapter == null) {
                myBluetoothAdapter = new MyBluetoothAdapter(this, deviceList);
                listView.setAdapter(myBluetoothAdapter);
            } else {
                //  
                myBluetoothAdapter.notifyDataSetChanged();
            }

    짝이 지정되지 않은 장치 쌍 지정

    try {
                        //  
                        BluetoothDevice bluetoothDevice = deviceList.get(position);
                        //  , 
                        if (bluetoothDevice.getBondState() == BluetoothDevice.BOND_NONE) {
                            String address = bluetoothDevice.getAddress();
                            //  
                            BluetoothDevice remoteDevice = defaultAdapter
                                    .getRemoteDevice(address);
                            //  
                            //  
                            Class clz = BluetoothDevice.class;
                            //  , , , 
                            Method method = clz.getMethod("createBond", null);
                            //  
                            method.invoke(remoteDevice, null);
                            //  , , 
                        } 

    배합 장치에 대한 채팅 준비

     else if (bluetoothDevice.getBondState() == BluetoothDevice.BOND_BONDED) {
                            //  , 
            Intent intent = new Intent(MainActivity.this,MyChatActivity.class);
            intent.putExtra("address", bluetoothDevice.getAddress());
            startActivity(intent);
                        }

    코드 참조


    http://download.csdn.net/detail/zhiyuan0932/9498223

    좋은 웹페이지 즐겨찾기