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
还没有评论,来说两句吧...