【问题标题】:Bluetooth socket connection蓝牙插座连接
【发布时间】:2010-11-11 20:13:44
【问题描述】:

我正在创建一个使用 android 通过蓝牙发送和接收数据的应用程序。但是我在创建套接字时遇到了问题。他被困在那一行 mmSocket btserver.accept = ();而且我无法与任何设备配对。

我还有一个疑问,我可以与 android 和 symbian 进行通信吗?

【问题讨论】:

    标签: android bluetooth


    【解决方案1】:

    代码如下。他找到了设备,但没有打开通信套接字。

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        bluetooth = BluetoothAdapter.getDefaultAdapter();
        msg = (TextView) findViewById(R.id.msg);
    
        if (bluetooth.isEnabled()) {
           String address = bluetooth.getAddress();
           String name = bluetooth.getName();
           toastText = name + " : " + address;
        }
        else
           toastText = "Bluetooth is not enabled";
    
        Toast.makeText(this, toastText, Toast.LENGTH_LONG).show();
        msg.append("Bluetooth is not enabled");
    
        enableBT = BluetoothAdapter.ACTION_REQUEST_ENABLE;
        startActivityForResult(new Intent(enableBT), 0);
    
        String aDiscoverable = BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE;
        startActivityForResult(new Intent(aDiscoverable),DISCOVERY_REQUEST);
    
        registerReceiver(new BroadcastReceiver() {
            public void onReceive(Context context, Intent intent) {
                String prevScanMode = BluetoothAdapter.EXTRA_PREVIOUS_SCAN_MODE;
                String scanMode = BluetoothAdapter.EXTRA_SCAN_MODE;
                int scanMode1 = intent.getIntExtra(scanMode, -1);
                int prevMode1 = intent.getIntExtra(prevScanMode, -1);
            }
        },
        new IntentFilter(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED));
    
        BroadcastReceiver discoveryResult = new BroadcastReceiver() {
            public void onReceive(Context context, Intent intent) {
                remoteDeviceName = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
                remoteDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                Toast.makeText(getApplicationContext(),
                "Discovered: " + remoteDeviceName,
                Toast.LENGTH_SHORT).show();
                msg.append("\n"+remoteDeviceName);
                msg.append("\n"+remoteDevice);
         }
        };
    
        BroadcastReceiver discoveryMonitor = new BroadcastReceiver() {
            String dStarted = BluetoothAdapter.ACTION_DISCOVERY_STARTED;
            String dFinished = BluetoothAdapter.ACTION_DISCOVERY_FINISHED;
    
            public void onReceive(Context context, Intent intent) {
               if (dStarted.equals(intent.getAction())) {
    
                  Toast.makeText(getApplicationContext(),
                  "Discovery Started . . . ", Toast.LENGTH_SHORT).show();
              }
              else if (dFinished.equals(intent.getAction())) {
                 Toast.makeText(getApplicationContext(),
                "Discovery Completed . . . ", Toast.LENGTH_SHORT).show();
             }
           }
        };
        registerReceiver(discoveryMonitor,
            new IntentFilter(dStarted));
    
        registerReceiver(discoveryMonitor,
            new IntentFilter(dFinished));
    
        startActivityForResult(new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE),  DISCOVERY_REQUEST);
        try {
            btserver = bluetooth.listenUsingRfcommWithServiceRecord(name, uuid);
        } catch (IOException e1) {
          e1.printStackTrace();
        }
        Thread acceptThread = new Thread(new Runnable() 
        {
            public void run()
            {
                try {
                   btserver.accept();
                } catch (IOException e){
             Log.d("BLUETOOTH", e.getMessage());
             }
             }
        });
        acceptThread.start();
    }     
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 2021-08-07
      • 2013-03-01
      • 2011-03-03
      相关资源
      最近更新 更多