android做一个打开和关闭蓝牙的动作

淡淡的烟草味﹌ 2024-03-31 08:37 116阅读 0赞

直接示例ba,安卓SDK内置有蓝牙适配器,可以直接调用的,我是用三星s10,Android12手机安装的,完全可以,做了个打开和关闭的点击事件。
1.清单文件里要注册一些蓝牙权限

  1. <!-- 蓝牙权限 -->
  2. <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
  3. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  4. <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
  5. <uses-permission android:name="android.permission.BLUETOOTH" />
  6. <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
  7. <uses-permission android:name="BLUETOOTH_CONNECT" />
  8. <!-- Required if your app derives physical location from Bluetooth
  9. scan results. -->
  10. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  11. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  12. <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

xml页面:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. tools:context=".bluetooth.BluetoothFragment"
  7. android:orientation="horizontal">
  8. <!-- TODO: Update blank fragment layout -->
  9. <TextView
  10. android:layout_weight="1"
  11. android:id="@+id/tv_open"
  12. android:layout_width="match_parent"
  13. android:layout_height="match_parent"
  14. android:textSize="30sp"
  15. android:text="开启蓝牙" />
  16. <TextView
  17. android:layout_weight="1"
  18. android:id="@+id/tv_close"
  19. android:layout_width="match_parent"
  20. android:layout_height="match_parent"
  21. android:text="关闭蓝牙"
  22. android:textSize="30sp"/>
  23. </LinearLayout>

java代码里:

  1. public class BluetoothFragment extends Fragment {
  2. //声明绑定对象
  3. FragmentBluetoothBinding binding;
  4. //1.全局静态常量定义
  5. public static final int REQUEST_ENABLE_BT = 1;
  6. //2.全局变量中定义蓝牙,拿到适配器
  7. BluetoothAdapter mBluetoothAdapter;
  8. private List<String> mPermissionList = new ArrayList<>();
  9. public BluetoothFragment() {
  10. // Required empty public constructor
  11. }
  12. /**
  13. * Use this factory method to create a new instance of
  14. * this fragment using the provided parameters.
  15. *
  16. * @param param1 Parameter 1.
  17. * @param param2 Parameter 2.
  18. * @return A new instance of fragment BluetoothFragment.
  19. */
  20. // TODO: Rename and change types and number of parameters
  21. public static BluetoothFragment newInstance(String param1, String param2) {
  22. BluetoothFragment fragment = new BluetoothFragment();
  23. return fragment;
  24. }
  25. @Override
  26. public void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. if (getArguments() != null) {
  29. }
  30. }
  31. @Override
  32. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  33. Bundle savedInstanceState) {
  34. /**
  35. * 使用binding视图绑定功能
  36. * 通过视图绑定功能,可以更轻松地编写可与视图交互的代码。在模块中启动视图绑定之后,
  37. * 系统会为该模块中的每个xml布局文件生成一个绑定类。
  38. * 绑定类的实例包含在相应布局中具有ID的所有视图的直接引用
  39. */
  40. binding = FragmentBluetoothBinding.inflate(inflater, container, false);
  41. View view = binding.getRoot();
  42. //todo 3.初始化蓝牙
  43. mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
  44. initPermission();
  45. openBluetooth();
  46. closeBluetooth();
  47. return view;
  48. }
  49. //打开蓝牙
  50. void openBluetooth() {
  51. binding.tvOpen.setOnClickListener(new View.OnClickListener() {
  52. @Override
  53. public void onClick(View view) {
  54. Toast.makeText(getActivity(),"打开蓝牙了,小7",Toast.LENGTH_LONG).show();
  55. mBluetoothAdapter.enable();
  56. }
  57. });
  58. }
  59. //关闭蓝牙
  60. void closeBluetooth() {
  61. binding.tvClose.setOnClickListener(new View.OnClickListener() {
  62. @Override
  63. public void onClick(View view) {
  64. Toast.makeText(getActivity(),"小飞新关闭蓝牙了",Toast.LENGTH_LONG).show();
  65. mBluetoothAdapter.disable();
  66. }
  67. });
  68. }
  69. // todo 蓝牙动态申请权限
  70. private void initPermission(){
  71. if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){
  72. // Android 版本大于等于 Android12 时
  73. // 只包括蓝牙这部分的权限,其余的需要什么权限自己添加
  74. mPermissionList.add(Manifest.permission.BLUETOOTH_SCAN);
  75. mPermissionList.add(Manifest.permission.BLUETOOTH_ADVERTISE);
  76. mPermissionList.add(Manifest.permission.BLUETOOTH_CONNECT);
  77. } else {
  78. // Android 版本小于 Android12 及以下版本
  79. mPermissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION);
  80. mPermissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
  81. }
  82. if(mPermissionList.size() > 0){
  83. ActivityCompat.requestPermissions(getActivity(),mPermissionList.toArray(new String[0]),1001);
  84. }
  85. }
  86. }

有遇到问题加我微信:yaxin_com

发表评论

表情:
评论列表 (有 0 条评论,116人围观)

还没有评论,来说两句吧...

相关阅读

    相关 android BLE

    直接上代码吧,完整的程序代码如下: 首先是MainActivity,本段代码完成了子模转换和保存数据的功能,并将要发送的数据整理成了和作者的小伙伴说好的格式。需要注意的是,

    相关 android 文件

    利用android 传送文件需要解决一下几个问题。 1,发送方选中文件时如何获取文件地址?  以下这段代码作用是返回你选择文件的uri,因此你要重写 onActivityR