【转】蓝牙通信-打开和关闭蓝牙设备
原文网址:http://www.2cto.com/kf/201303/199175.html
蓝牙(BlueTooth)要求的最低版本是android2.0,由于Android模拟器不支持蓝牙,运行蓝牙的有关应用必须在真机上测试运行。
蓝牙是一种重要的短距离无线通信协议,广泛应用于各种设备(手机,医疗,汽车等)。蓝牙是比较常用的无线通信设备,早研究成为手机的标配。
在Android中,与蓝牙有关的类和接口在android.bluetooth包中。其中BluetoothAdapter是蓝牙中的核心类,
代表本地的蓝牙适配器设备。BluetoothAdapter类让用户能执行基本的蓝牙任务。例如: 初始化设备的搜索,查询可匹配的设备集,使用一个已知的MAC地址来初始化一个BluetoothDevice类,创建一个 BluetoothServerSocket类以监听其它设备对本机的连接请求等。
当我们使用蓝牙时会先判断当前手机是否打开了蓝牙,然后在进行相应的处理。
下面我们看看怎样打开蓝牙设备。
1.我们调用时除了需要考虑API Level至少为5外,还需注意添加相应的权限,比如使用通讯需要在androidmanifest.xml加入,而开关蓝牙需要android.permission.BLUETOOTH_ADMIN权限。
只要是有关蓝牙的应用程序这两个不可少。
2JAVA主要代码:
[java]
package com.example.open_local_bluetooth;
import android.os.Bundle;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter
.getDefaultAdapter();
if (mBluetoothAdapter == null) {
Toast.makeText(this, "本机没有找到蓝牙硬件或驱动!", Toast.LENGTH_SHORT).show();
finish();
}
// 如果本地蓝牙没有开启,则开启
if (!mBluetoothAdapter.isEnabled()) {
// 我们通过startActivityForResult()方法发起的Intent将会在onActivityResult()回调方法中获取用户的选择,比如用户单击了Yes开启,
// 那么将会收到RESULT_OK的结果,
// 如果RESULT_CANCELED则代表用户不愿意开启蓝牙
Intent mIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(mIntent, 1);
// 用enable()方法来开启,无需询问用户(实惠无声息的开启蓝牙设备),这时就需要用到android.permission.BLUETOOTH_ADMIN权限。
// mBluetoothAdapter.enable();
// mBluetoothAdapter.disable();//关闭蓝牙
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
Toast.makeText(this, "蓝牙已经开启", Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "不允许蓝牙开启", Toast.LENGTH_SHORT).show();
finish();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
package com.example.open_local_bluetooth;
import android.os.Bundle;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter
.getDefaultAdapter();
if (mBluetoothAdapter == null) {
Toast.makeText(this, "本机没有找到蓝牙硬件或驱动!", Toast.LENGTH_SHORT).show();
finish();
}
// 如果本地蓝牙没有开启,则开启
if (!mBluetoothAdapter.isEnabled()) {
// 我们通过startActivityForResult()方法发起的Intent将会在onActivityResult()回调方法中获取用户的选择,比如用户单击了Yes开启,
// 那么将会收到RESULT_OK的结果,
// 如果RESULT_CANCELED则代表用户不愿意开启蓝牙
Intent mIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(mIntent, 1);
// 用enable()方法来开启,无需询问用户(实惠无声息的开启蓝牙设备),这时就需要用到android.permission.BLUETOOTH_ADMIN权限。
// mBluetoothAdapter.enable();
// mBluetoothAdapter.disable();//关闭蓝牙
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
Toast.makeText(this, "蓝牙已经开启", Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "不允许蓝牙开启", Toast.LENGTH_SHORT).show();
finish();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
3配置文件:AndrodManifest.xml
[html]
http://schemas.android.com/apk/res/android"
package="com.example.open_local_bluetooth"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.open_local_bluetooth.MainActivity"
android:label="@string/app_name" >
http://schemas.android.com/apk/res/android"
package="com.example.open_local_bluetooth"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.open_local_bluetooth.MainActivity"
android:label="@string/app_name" >
【转】蓝牙通信-打开和关闭蓝牙设备相关推荐
- 蓝牙通信-打开和关闭蓝牙设备
蓝牙(BlueTooth)要求的最低版本是android2.0,由于Android模拟器不支持蓝牙,运行蓝牙的有关应用必须在真机上测试运行. 蓝牙是一种重要的短距离无线通信协议,广泛应用于各种设备(手 ...
- Android 蓝牙 单独打开和关闭BLE - 详解
同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. 1.常规操作 ...
- 蓝牙通信-搜索附近的蓝牙设备
与其他设备通信通信之前需要搜索周围的蓝牙设备. 怎么搜索呢?? 1.如果数据中已经和某些蓝牙设备绑定,可以使用BluetoothAdapter.getBondedDevices();方法获得已经绑定的 ...
- Qt on Android 蓝牙通信开发
版权声明:本文为MULTIBEANS ORG研发跟随文章,未经MLT ORG允许不得转载. 最近做项目,需要开发安卓应用,实现串口的收发,目测CH340G在安卓手机上非常麻烦,而且驱动都是Java版本 ...
- Android中的蓝牙通信
一.蓝牙简介 现有的蓝牙主要分为两类: 经典蓝牙:3.0版本以下的蓝牙,都称为"经典蓝牙",功耗高.传输数据量大.传输距离只有10米. 低功耗蓝牙:4.0及以上版本的蓝牙就是低功耗 ...
- Android蓝牙开发之一:打开、关闭蓝牙
转载地址:http://victorzhong.github.io/2015/07/26/Android%E8%93%9D%E7%89%99%E5%BC%80%E5%8F%91%E4%B9%8B%E4 ...
- win10计算机管理没有蓝牙,win10系统中缺少打开或关闭蓝牙选项的解决方法
在win10系统中,自带有蓝牙功能,但是有时候在使用蓝牙的时候,发现设置应用程序或操作中心中缺少打开蓝牙的选项,遇到这样的问题该怎么办呢,本文就给大家讲解一下win10系统中缺少打开或关闭蓝牙选项的解 ...
- 安卓手机连接AirPods2,手机音量调节到顶,AirPods音量小。打开或关闭蓝牙绝对音量功能
前期买了一个AirPods,连iPhone7 Plus不存在声音问题. 新换了P30 Pro,连接过几次其他品牌蓝牙耳机,连接AirPods2之后音量不正常,AirPods2返修检测正常. 下面说一下 ...
- macos关闭ipv6命令_在macOS上从命令行打开和关闭蓝牙
macos关闭ipv6命令 Bluetooth has been a revelation in wireless technology: wireless mice, headphones, str ...
最新文章
- invoke 数组_如何对一个亿的数组进行快速排序
- ScrollView 内嵌 ListView 只能看到第一个Item
- python用什么软件编程1001python用什么软件编程-Python中免验证跳转到内容页的实例代码...
- 常用的 css 样式 记录
- java在cmd下编译运行
- mysql pdo 查询一条数据,使用 PDO 关联查询 MySQL 数据
- jinja Evnironment
- 第6课 - 开发中的辅助工具
- Java base64转inputStream
- 【鸿蒙应用开发】-入门
- FPGA:实现快速傅里叶变换(FFT)算法
- inception-v3模型神经网络图片识别系统搭建详细流程(1)
- CSGO 绑定一键跳投
- 51单片机仿真例程-开关控制
- 免费的webservice接口 天气预报/IP查询/股票查询/手机归属地等
- 王亟亟的Python学习之路(10)-函数对象的作用域,函数作为返回值,闭包
- 计算机基础作业 工资表
- 销售清单怎么打印有什么软件
- 安装CentOS7虚拟机(超详细)
- Amazon S3下载图片