自己的test代码

这个博客主要展示了如何在Android中实现蓝牙连接功能,并详细解释了如何处理蓝牙和相关权限的请求。通过创建一个Fragment,博客作者演示了如何在用户同意权限后获取蓝牙设备并进行操作。同时,代码中使用了EasyPermissions库来简化权限管理流程。

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

package com.example.myapplication.ui.home;

import android.Manifest;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProvider;

import com.example.myapplication.R;
import com.example.myapplication.databinding.FragmentHomeBinding;

import java.util.List;
import java.util.Set;

import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;

@RequiresApi(api = Build.VERSION_CODES.S)
public class HomeFragment extends Fragment implements EasyPermissions.PermissionCallbacks {

private FragmentHomeBinding binding;

private static final String TAG = "MainFragment";
private static final int RC_SMS_PERM = 122;
private BluetoothAdapter mBluetoothAdapter;
String[] perms = {Manifest.permission.BLUETOOTH, Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH_CONNECT}; //一些权限用逗号隔开

public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {

HomeViewModel homeViewModel =
new ViewModelProvider(this).get(HomeViewModel.class);

binding = FragmentHomeBinding.inflate(inflater, container, false);
View root = binding.getRoot();

final TextView textView = binding.textHome;
Button myButton = binding.myButton;
myButton.setOnClickListener(view -> {
Log.d(TAG, "onClick: ");
String validBluetoothAddress = "01:23:45:67:89:AB"; // 这是一个有效的 Bluetooth 地址
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Log.d(TAG, "smsTask: validBluetoothAddress"+ validBluetoothAddress);
if (mBluetoothAdapter == null) {
CharSequence text = "没有蓝牙适配器!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(getActivity(), text, duration);
toast.show();
}
// BluetoothAddress address = new BluetoothAddress(validBluetoothAddress);
smsTask(textView, getActivity());
});
// homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
return root;
}

@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

// EasyPermissions handles the request result.
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}

@AfterPermissionGranted(RC_SMS_PERM)
private void smsTask(TextView textView, FragmentActivity getActivity) {
Log.d(TAG, "smsTask: 权限外部");
if (EasyPermissions.hasPermissions(requireContext(), perms)) {
// Have permission, do the thing!
try {
if (ActivityCompat.checkSelfPermission(getActivity, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.

}

Set<BluetoothDevice> bluetoothDevice = mBluetoothAdapter.getBondedDevices();
Log.d(TAG, bluetoothDevice.toString());
// textView.setText();
// Toast.makeText(getActivity(), "TODO: SMS things", Toast.LENGTH_LONG).show();
return;
}catch (Exception e) {
e.printStackTrace();
}

} else {
// Request one permission
EasyPermissions.requestPermissions(this, getString(R.string.rationale_sms),
RC_SMS_PERM, perms);
}
}

@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
Log.d(TAG, "onPermissionsGranted:" + requestCode + ":" + perms.size());
}

@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Log.d(TAG, "onPermissionsDenied:" + requestCode + ":" + perms.size());
}

@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值