Android调用蓝牙功能

  • 相关权限
  • 具体使用
    • 相关方法

相关权限

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />        <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;            }        }    }}

效果:

更多相关文章

  1. Android联系人相关内容
  2. 如何查看Android设备的CPU架构信息
  3. 如何在Android设备中用NDK编译SQLite并且对SQLite进行操作(增删)-H
  4. Android开发环境搭建及入门相关
  5. delphi xe5 android 控制蓝牙
  6. 查看Android设备属性的命令: adb shell getprop
  7. android的jni相关环境配置
  8. Android中Broadcast的Intent大全
  9. android获取屏幕相关信息

随机推荐

  1. 喵喵的华为DevCloud使用指南(3)-项目构建
  2. 网络编程基础2
  3. BlueStore源码分析之事物状态机
  4. 分组密码与模式
  5. 微信小程序生成分享图片踩坑大计划
  6. BlueStore源码分析之对象IO
  7. dom的增删改查
  8. BlueStore源码分析之Cache
  9. js 轮播图功能:上下翻页,自动播放----0409
  10. Ceph Octopus版本Dashboard新增硬盘闪灯