向配对的蓝牙设备发送 int

Posted

技术标签:

【中文标题】向配对的蓝牙设备发送 int【英文标题】:Send an int to a paired Bluetooth device 【发布时间】:2015-08-04 22:50:14 【问题描述】:

我设法创建了一个 ListView,搜索设备并显示它们,点击连接到选定的设备,但现在我想知道如何从一部手机向另一部手机发送一个整数或布尔值或类似的东西这个。 这是一个小游戏,有赢家和输家 - 所以我想比较两个变量并检查谁赢了,然后显示出来。

到目前为止我的代码:

搜索

bluetooth.startDiscovery();
  textview.setText("Searching, Make sure other device is available");
  IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
  registerReceiver(mReceiver, filter);

在列表视图中显示

private final BroadcastReceiver mReceiver = new BroadcastReceiver() 
    public void onReceive(Context context, Intent intent) 
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_FOUND.equals(action)) 
            device = intent
                    .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            mDeviceList.add(device.getName() + "\n" + device.getAddress());
            Log.i("BT", device.getName() + "\n" + device.getAddress());
            listView.setAdapter(new ArrayAdapter<String>(context,
                    android.R.layout.simple_list_item_1, mDeviceList));
        
    
;
      @Override
protected void onDestroy() 
    unregisterReceiver(mReceiver);
    super.onDestroy();

配对设备

    private void pairDevice(BluetoothDevice device) 
    try 
        Log.d("pairDevice()", "Start Pairing...");
        Method m = device.getClass().getMethod("createBond", (Class[]) null);
        m.invoke(device, (Object[]) null);
        Log.d("pairDevice()", "Pairing finished.");
     catch (Exception e) 
        Log.e("pairDevice()", e.getMessage());
    

效果很好,两台设备都已配对。 我需要客户端和服务器来传输整数吗?

【问题讨论】:

【参考方案1】:

以下是来自 android SDK 的一些示例代码:BluetoothChat

关键是在连接的两端都使用Service,它既监听传入消息又发送传出消息。那么你所有的Activity 需要担心的是与用户交互,并告诉服务发送适当的消息。

//METHOD FROM ACTIVITY
private void sendMessage(String message) 
    // Check that we're actually connected before trying anything
    if (mChatService.getState() != BluetoothChatService.STATE_CONNECTED) 
        Toast.makeText(this, R.string.not_connected, Toast.LENGTH_SHORT).show();
        return;
    
    // Check that there's actually something to send
    if (message.length() > 0) 
        // Get the message bytes and tell the BluetoothChatService to write
        byte[] send = message.getBytes();
        mChatService.write(send);
        // Reset out string buffer to zero and clear the edit text field
        mOutStringBuffer.setLength(0);
        mOutEditText.setText(mOutStringBuffer);
    


//METHOD FROM SERVICE
public void write(byte[] out) 
    // Create temporary object
    ConnectedThread r;
    // Synchronize a copy of the ConnectedThread
    synchronized (this) 
        if (mState != STATE_CONNECTED) return;
        r = mConnectedThread;
    
    // Perform the write unsynchronized
    r.write(out);

【讨论】:

所以我可以使用 sendMessage(int XXX) 吗? @David,不,请查看链接并完整查看示例的来源。我还编辑了我的答案,您可能需要重新阅读。

以上是关于向配对的蓝牙设备发送 int的主要内容,如果未能解决你的问题,请参考以下文章

不能接收蓝牙传送的文件

对象推送到蓝牙而不配对

笔记本蓝牙无法接收文件,只可以发送。

蓝牙传输的原理是啥

手机蓝牙连接其他手机,传输文件时,怎么找到对方设备

如何让我的应用通过 NFC 发送蓝牙配对请求