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

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

<!-- 蓝牙权限 -->
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH" />

    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
    <uses-permission android:name="BLUETOOTH_CONNECT" />

    <!-- Required if your app derives physical location from Bluetooth
        scan results. -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

xml页面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".bluetooth.BluetoothFragment"
    android:orientation="horizontal">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_weight="1"
        android:id="@+id/tv_open"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="30sp"
        android:text="开启蓝牙" />

    <TextView
        android:layout_weight="1"
        android:id="@+id/tv_close"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="关闭蓝牙"
        android:textSize="30sp"/>

</LinearLayout>

java代码里:

public class BluetoothFragment extends Fragment {
    //声明绑定对象
    FragmentBluetoothBinding binding;
    //1.全局静态常量定义
    public static final int REQUEST_ENABLE_BT = 1;
    //2.全局变量中定义蓝牙,拿到适配器
    BluetoothAdapter mBluetoothAdapter;
    private List<String> mPermissionList = new ArrayList<>();

    public BluetoothFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BluetoothFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BluetoothFragment newInstance(String param1, String param2) {
        BluetoothFragment fragment = new BluetoothFragment();
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        /**
         * 使用binding视图绑定功能
         * 通过视图绑定功能,可以更轻松地编写可与视图交互的代码。在模块中启动视图绑定之后,
         * 系统会为该模块中的每个xml布局文件生成一个绑定类。
         * 绑定类的实例包含在相应布局中具有ID的所有视图的直接引用
         */
        binding = FragmentBluetoothBinding.inflate(inflater, container, false);
        View view = binding.getRoot();
        //todo 3.初始化蓝牙
        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        initPermission();

        openBluetooth();
        closeBluetooth();
        return view;
    }

    //打开蓝牙
    void openBluetooth() {
        binding.tvOpen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(),"打开蓝牙了,小7",Toast.LENGTH_LONG).show();
                mBluetoothAdapter.enable();
            }
        });
    }

    //关闭蓝牙
    void closeBluetooth() {
        binding.tvClose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(),"小飞新关闭蓝牙了",Toast.LENGTH_LONG).show();
                mBluetoothAdapter.disable();
            }
        });
    }

    // todo 蓝牙动态申请权限
    private void initPermission(){
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){
            // Android 版本大于等于 Android12 时
            // 只包括蓝牙这部分的权限,其余的需要什么权限自己添加
            mPermissionList.add(Manifest.permission.BLUETOOTH_SCAN);
            mPermissionList.add(Manifest.permission.BLUETOOTH_ADVERTISE);
            mPermissionList.add(Manifest.permission.BLUETOOTH_CONNECT);
        } else {
            // Android 版本小于 Android12 及以下版本
            mPermissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION);
            mPermissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
        }

        if(mPermissionList.size() > 0){
            ActivityCompat.requestPermissions(getActivity(),mPermissionList.toArray(new String[0]),1001);
        }
    }


}

有遇到问题加我微信:yaxin_com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Android Studio开发一个蓝牙BLE传输的App相对简单,以下是一个基本的步骤: 1. 首先,在Android Studio中创建一个新的项目。选择Empty Activity模板,并在后续配置中选择使用Kotlin或Java作为开发语言。 2. 在AndroidManifest.xml文件中添加蓝牙相关的权限和特性声明,例如: <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 3. 在build.gradle(Module:app)文件中添加Bluetooth API的依赖项,例如: implementation 'com.android.support:design:28.0.0' implementation 'com.android.support:cardview-v7:28.0.0' implementation 'com.android.support:recyclerview-v7:28.0.0' 4. 创建一个新的Activity用于扫描和连接蓝牙设备,例如BluetoothActivity。 5. 在BluetoothActivity的布局文件中添加一个RecyclerView用于显示扫描到的蓝牙设备列表,并在代码中初始化RecyclerView的适配器。 6. 在BluetoothActivity的代码中,使用BluetoothAdapter类扫描周围的蓝牙设备,并将它们添加到RecyclerView的适配器中。 7. 在RecyclerView的适配器中,为每个蓝牙设备创建一个点击事件监听器,以便用户可以选择一个设备来建立BLE连接。 8. 创建一个新的Activity用于处理已连接的蓝牙设备,并在该Activity的布局文件中添加一个读写蓝牙数据的按钮。 9. 在该Activity的代码中,使用BluetoothGatt类来连接已选中的设备,并实现相应的监听器来处理BLE连接状态和数据传输。 10. 使用BluetoothGatt类的方法来读取、写入和监听蓝牙数据的变化。 11. 最后,在Manifest文件中为每个Activity添加相应的声明,以便在运行时访问蓝牙权限。 通过以上步骤,你就可以使用Android Studio开发一个简单的蓝牙BLE传输的App。当然,具体的代码实现细节还需要根据你的需求和具体的蓝牙设备进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值