Android调用蓝牙功能

本文介绍了在Android平台上如何调用蓝牙功能,包括所需的权限设置和具体使用方法,帮助开发者实现蓝牙相关应用的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android调用蓝牙功能

相关权限

<!-- 用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 用于访问GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
	<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
	<uses-permission android:name="android.permission.BLUETOOTH"/>

具体使用

相关方法

 adapter.startDiscovery(); //开始搜索周围蓝牙设备
 adapter.disable();  //关闭本机蓝牙设备
 adapter.enable(); //是否可用
 
 开启蓝牙: 
 Intent intent = new Intent();
 intent.setAction(BluetoothAdapter.ACTION_REQUEST_ENABLE);
 intent.setAction(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
 intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,200);
 startActivityForResult(intent,100);
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private BluetoothManager manager;
    private BluetoothAdapter adapter;

    private MyBroadcastReceiver myBroadcastReceiver;
    ArrayList<BluetoothDevice> list;
    ListView listView;
    MyAdapter myAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initData();
        initView();
    }

    public void initView(){

        findViewById(R.id.btn_start).setOnClickListener(this);
        findViewById(R.id.btn_close).setOnClickListener(this);
        findViewById(R.id.btn_search).setOnClickListener(this);


        list=new ArrayList<>();
        myAdapter=new MyAdapter(list,this);
        listView=findViewById(R.id.listview);
        listView.setAdapter(myAdapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                try {
                    Method createBond = BluetoothDevice.class.getMethod("createBond");
                    createBond.invoke(list.get(position));

                } catch (NoSuchMethodException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
            }
        });

    }

    public void initData(){

        manager= (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
        adapter=manager.getAdapter();
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.addAction(BluetoothDevice.ACTION_FOUND);
        intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
        intentFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
        myBroadcastReceiver = new MyBroadcastReceiver();
        registerReceiver(myBroadcastReceiver,intentFilter);

    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_start:
                boolean enable = adapter.enable();
                if(enable==false){
                    Intent intent = new Intent();
                    intent.setAction(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                    intent.setAction(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
                    intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,200);
                    startActivityForResult(intent,100);

                }

                break;
            case R.id.btn_search:
                adapter.startDiscovery();
                break;
            case R.id.btn_close:
                adapter.disable();
                list.clear();
                myAdapter.notifyDataSetChanged();

                break;

        }

    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==100&&resultCode==RESULT_OK){
            Toast.makeText(this, "开启成功", Toast.LENGTH_SHORT).show();

        }

    }

    class MyBroadcastReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {

            String action = intent.getAction();
            switch (action){
                case BluetoothDevice.ACTION_FOUND:
                    BluetoothDevice device=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    list.add(device);
                    myAdapter.notifyDataSetChanged();
                    break;
                case BluetoothAdapter.ACTION_DISCOVERY_FINISHED:

                    break;

                case BluetoothDevice.ACTION_BOND_STATE_CHANGED:
                    BluetoothDevice device1=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    int bondState = device1.getBondState();

                    if(bondState==BluetoothDevice.BOND_NONE){
                        Toast.makeText(context, "未找到设备", Toast.LENGTH_SHORT).show();
                    }else if(bondState==BluetoothDevice.BOND_BONDING){
                        Toast.makeText(context, "匹配中", Toast.LENGTH_SHORT).show();
                    }else if(bondState==BluetoothDevice.BOND_BONDED){
                        Toast.makeText(context, "配对成功", Toast.LENGTH_SHORT).show();
                    }

                    break;
            }

        }
    }

}

效果:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值