Android - 使用已知设备启动蓝牙连接

时间:2012-08-26 16:39:26

标签: java android bluetooth

我在Android开发者网站上阅读了很多有关蓝牙的内容,但我无法理解一件事,我如何使用我在ListView中获得的mac地址与配对(或绑定)设备建立连接。 只是为了查看我的代码是否有效(OnItemClickListner部分),我使用一个按钮来显示mac地址。 但我想要做的是使用OnItemClickListener启动与所选设备的连接。 (我希望我的解释清楚)

这是我的代码至少有一部分。 http://pastie.org/4591835

事情是我不知道如何使用rfcomm thingy来做我想做的事。

有人可以向我解释一下吗?

我的代码的目的是将我的Android手机连接到我的Arduino并通过一些按钮发送信件 例如:按钮Led 1会向我的arduino发送“A”,依此类推。

提前致谢!

    package com.jon.arduino.remote;

import java.util.Set;
import android.os.Bundle;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;


public class NextActivity extends Activity {

    // Variables & constantes
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    private ArrayAdapter<String> deviceslist;
    public static String EXTRA_DEVICE_ADDRESS = "device_address";





    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_device_list);
        setupUI();
        searchbtdevices();
    }


    /////////////////////////////////////////////////////////////////// 
    private void searchbtdevices() {


        Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
        // If there are paired devices
        if (pairedDevices.size() > 0) {
            // Loop through paired devices
            for (BluetoothDevice device : pairedDevices) {
                // Add the name and address to an array adapter to show in a ListView
                deviceslist.add(device.getName() + "\n" + device.getAddress());
                                                         }
                                        } 


                           }


    /////////////////////////////////////////////////////////////////// 
    /*private void connecttobt() 
    {


    }*/


    /////////////////////////////////////////////////////////////////// 
    private void setupUI() {


        final Button btnmacaddress = (Button) findViewById(R.id.btnmacaddress);
        final ListView bt_deviceslist = (ListView) findViewById(R.id.bt_deviceslist);
        deviceslist = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
        bt_deviceslist.setAdapter(deviceslist);


        bt_deviceslist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
               public void onItemClick(AdapterView<?> list, View v, int pos, long id) {

                   mBluetoothAdapter.cancelDiscovery();
                   String info = ((TextView) v).getText().toString();

                        // Attempt to extract a MAC address
                        String macaddress = info.substring(info.length() - 17);

                        // Create the result Intent and include the MAC address
                        Intent intent = new Intent();
                        intent.putExtra(EXTRA_DEVICE_ADDRESS, macaddress);

                        mBluetoothAdapter.cancelDiscovery();
                    //  connecttobt();



                        btnmacaddress.setText(macaddress);
                                                                                    }});                
                            }
    ///////////////////////////////////////////////////////////////////                                                                                 
}

1 个答案:

答案 0 :(得分:2)

我做了类似于你想做的事情,并有两个例子可以在:

找到

http://digitalhacksblog.blogspot.com/2012/05/arduino-to-android-basic-bluetooth.html

http://digitalhacksblog.blogspot.com/2012/05/arduino-to-android-turning-led-on-and.html

第一个示例显示了如何使用名为BlueTerm的程序将文本从Android发送到Arduino。这显示了Android和Arduino的基本设置,以使他们进行通信。

第二个例子是Android上的一个程序,用于打开和关闭Arduino上的LED。这显示了如何从程序中在两个设备之间进行通信。

示例包含Android和Arduino所需的所有代码。

希望这有帮助。