首页 > 其他分享 >蓝牙实战(一)

蓝牙实战(一)

时间:2022-11-22 11:38:20浏览次数:37  
标签:实战 showToast void BluetoothAdapter 蓝牙 STATE public


一.概述

在前面的三篇文章讲解蓝牙开发,写的比较详细,篇幅比较长,后面这几篇来点简单实用的,先看效果图

蓝牙实战(一)_蓝牙开发

二.代码

代码如下:

BlueToothController 控制蓝牙操作

public class BlueToothController {

private BluetoothAdapter mAdapter;

public BlueToothController() {
mAdapter = BluetoothAdapter.getDefaultAdapter();
}

/**
* 是否支持蓝牙
* @return true 支持 false 不支持
*/
public boolean isSupportBlueTooth() {
if( mAdapter != null ){
return true;
}
else {
return false;
}
}

/**
* 获取蓝牙状态
* @return
*/
public boolean getBlueToothStatus() {
assert (mAdapter != null);
return mAdapter.isEnabled();
}

/**
* 打开蓝牙
* @param activity
* @param requestCode
*/
public void turnOnBlueTooth(Activity activity, int requestCode) {
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
activity.startActivityForResult(intent, requestCode);
// mAdapter.enable();
}

/**
* 关闭蓝牙
*/
public void turnOffBlueTooth() {
mAdapter.disable();
}
}
public class MainActivity extends ActionBarActivity {

public static final int REQUEST_CODE = 0;
private BlueToothController mController = new BlueToothController();
private Toast mToast;

/**
* 监听蓝牙开关的广播
*/
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,-1);
switch (state) {
case BluetoothAdapter.STATE_OFF:
showToast("STATE_OFF");
break;
case BluetoothAdapter.STATE_ON:
showToast("STATE_ON");
break;
case BluetoothAdapter.STATE_TURNING_ON:
showToast("STATE_TURNING_ON");
break;
case BluetoothAdapter.STATE_TURNING_OFF:
showToast("STATE_TURNING_OFF");
break;
default:
showToast("Unkown STATE");
break;
}
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(receiver, filter);
}

@Override
protected void onDestroy() {
unregisterReceiver(receiver);
super.onDestroy();
}

public void isSupportBlueTooth(View view) {
boolean ret = mController.isSupportBlueTooth();
showToast("support Bluetooth? " + ret);
}

public void isBlueToothEnable(View view) {
boolean ret = mController.getBlueToothStatus();
showToast("Bluetooth enable?" + ret);
}

public void requestTurnOnBlueTooth(View view) {
mController.turnOnBlueTooth(this, REQUEST_CODE);
}

public void turnOffBlueTooth(View view) {
mController.turnOffBlueTooth();
}

private void showToast(String text) {
if( mToast == null) {
mToast = Toast.makeText(this, text, Toast.LENGTH_SHORT);
}
else {
mToast.setText(text);
}
mToast.show();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//当发起请求蓝牙打开事件时,会告诉你用户选择的结果
if( resultCode == RESULT_OK) {
showToast("打开成功");
}
else {
showToast("打开失败");
}
}
}


标签:实战,showToast,void,BluetoothAdapter,蓝牙,STATE,public
From: https://blog.51cto.com/u_10847930/5877242

相关文章

  • Android webview实战
    今天来使用webview进行一个实例演练,可以基本用到任何地方,目的在于熟悉一下webview的使用,基本算是入门的吧。先看一下效果图,接下来我们看看如何实现第一步:首先加载网页......
  • Golang学习日志 ━━ 理解依赖包的管理(mod/非mod)和加载方式(项目路径、相对路径、绝对
    go有很多种方法调用依赖包,mod又加入了对包的版本管理。方式太多不免有令人迷惑和混乱的地方,希望本文能帮助大家了解目前使用规则一、mod/非mod管理方式go提供了两种项目......
  • python flask实战订餐系统微信小程序-59flask部署单进程启动服务
    欢迎关注原创Python微信订餐小程序课程视频Python实战量化交易理财系统​​python​​​​flask​​实战订餐系统微信小程序-60nginx+uwsgi实现多进程访问​​​B站配套......
  • Note.js框架中的cluster集群和断言测试的实战剖析
    Cluster节点。Js在单个线程中运行单个实例。为了使用当前的多核系统,用户(开发人员)有时会使用一个Node字符串。js进程来处理加载任务。集群模块允许轻松创建共享服务器端口......
  • MySQL进阶实战2,那些年学过的事务
    一、MySQL服务器逻辑架构MySQL核心部分包括查询解析、分析、优化、缓存以及内置函数,所有跨存储引擎的功能,存储过程、触发器、视图等。存储引擎负责MySQL中数据的存储和提取......
  • 【2022-11-21】luffy项目实战(十二)
    一、支付宝支付介绍1.1入门"""1)支付宝API:六大接口https://docs.open.alipay.com/270/105900/2)支付宝工作流程(见下图):https://docs.open.alipay.com/270/105898/......
  • 无线实战视频
    service-port带外网管接口manageport带内网管接口ap管理接口与manage带内管理接口是同一个vlan同一个接口虚拟接口virtual接口,一般都配一个全局不可路由的地址1.1......
  • 深度学习之tensorflow2实战:多输出模型
    欢迎来到CNN实战,尽管我们刚刚开始,但还是要往前看!让我们开始吧! 数据集链接:https://pan.baidu.com/s/1zztS32iuNynepLq7jiF6RA提取码:ilxh,请下载好数据,在开始 导入......
  • 【Spring Cloud实战】Eurake服务注册与发现
    gitee地址:https://gitee.com/javaxiaobear/spring-cloud_study.git什么是服务治理?SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理。在传统的rpc远程调......
  • Seata处理分布式事务(聚合 AT、TCC、SAGA 、 XA事务模式)实战
    Seata紧接上文,​​六种常用事务解决方案,你方唱罢,我登场(没有最好只有更好)​​咱么介绍了,6中常见的分布式解决方案,不管他们怎么你争我抢,最终都被Seata降维打击。接下来我们......