Bluetooth電球

4506 ワード

今日はスマートホームについて勉強しましたが、私は初心者としてAndroidプログラマーとしてスマートホームのソフトウェア開発について、私たちが環信のプラットフォームを使っているSDKと同じように、SDK内の方法を呼び出しているような気がします.
Bluetooth電球の動作原理:
携帯電話->Bluetooth->電球のBluetoothモジュール->電球は命令を受けて配置ファイルを運行します:Bluetoothを開けて、Bluetoothを閉じて、周囲のBluetoothをスキャンして、スキャンを停止して、明かりをつけて、明かりを消して、ボタンを点灯します.アクセス権の問題:Bluetoothの操作機能は必ず2つ必要です.



ローカルBluetoothアダプタを入手するには:
BluetoothAdapter mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();

Bluetoothのオン/オフ
    //       
               mBluetoothAdapter .enable(); 
    //       
               mBluetoothAdapter.disable();

もちろん、私たちは実際の操作の中で、私たちはやはり対象に対してまず空かどうかの問題を判断すべきだと思います.
  //      
        if(!mBluetoothAdapter.isEnabled()){
            mBluetoothAdapter.enable();
        }
  //    
        if(mBluetoothAdapter.isEnabled()){
            mBluetoothAdapter.disable();
        }

Bluetoothデバイスのスキャン
   //        
          mBluetoothAdapter.startDiscovery();
              ,       
          mBluetoothAdapter.cancelDiscovery();

そこで、スキャンしたBluetoothデバイスがどのようにデータを提示するかという問題が発生し、タイムリーに情報を得ることができるようになった.ブロードキャスト受信者を通じて、Bluetoothスキャンが完了すると、ブロードキャストが送信され、何をスキャンしたかを教えてくれます.
ブロードキャスト受信者の登録
Bluetoothブロードキャスト受信者の追加
    IntentFilter filter = new IntentFilter();
    //        
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);    
    //        
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);   
    //             
    filter.addAction(BluetoothDevice.ACTION_FOUND);
    mBluetoothReceiver = new BluetoothReceiver();
    //    
    registerReceiver(mBluetoothReceiver, filter);

Bluetooth受信者を取得するデバイス
`//       BluetoothDevice device= intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);`

Bluetoothデバイスの接続
ここでは、socket接続を介して接続するため、時間がかかるため、サブスレッドで実行する必要があります.
public void connectServer(final BluetoothDevice device) {
    new Thread(new Runnable(){
        @Override
        public void run() {
        try {
                    System.out.println(randomUUID.toString());
                    BluetoothSocket clientSocket = device.
            createRfcommSocketToServiceRecord(
        UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"));
                    clientSocket.connect();
                    out = clientSocket.getOutputStream();
                    System.out.println("    ");
                    Looper.prepare();
                   Toast.makeText(BluetoothDemoActivity.this, "    ", 0).show();
                   Looper.loop();
        } catch (IOException e) {
                   e.printStackTrace();
        }
        }}).start();
    }

そうさでんきゅう
お客様からのリレー制御指令表に基づいて、どのデータを出力するかを決定し、異なる操作を決定し、ストリームの形式で出力し、16進法を決定します.
 try {  // TODO Auto-generated method stub
    byte[] bs=new byte[5];
     bs[0] = (byte)0x01;
     bs[1] = (byte)0x99;
     if(i== 0) {
         bs[2] = (byte)0x10;
         bs[3] = (byte)0x10;
     }else if(i==1) {
         bs[2] = (byte)0x11;
         bs[3] = (byte)0x11;
     }else if(i==2) {
         bs[2] = (byte)0x17;
         bs[3] = (byte)0x17;
     }
     bs[4] = (byte)0x99;

        mOutputStream.write(bs);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }