从头开始敲代码之《从BaseApplication/Activity开始(二)》

转载请注明出处:王亟亟的大牛之路

愿意花时间写东西不容易,人啊,都是有血有肉有思想的,借鉴是学习,纯Copy就不好了,谢谢 部分资料参考于网上。

《赠梁任父同年》黄遵宪

寸寸河山寸寸金,侉离分裂力谁任? 杜鹃再拜忧天泪,精卫无穷填海心。

上一篇我们讲到了简易的封装 对我们提高效率的好处,这一篇继续写下去,如果第一篇没看过的希望能看下,,方便理解。链接:亟亟在安卓的进阶实例

这一次我们利用最基本的Activity生命周期中的方法,来对用户蓝牙进行识别操作,并在过程中考虑用户层面的操作理解,顺便补充下安卓手机的蓝牙知识。

什么是蓝牙? 一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。 白话:安卓对各个版本的蓝牙其实都有一定的支持,从1.5的Cupcake就支持了蓝牙耳机,但是自从安卓4.3版本之后Google对蓝牙4.0的支持,又进一步的提升,所以对4.3前后的适配又成了我们的工作(现在已经普遍以5.0为开发环境低版本的手机已经不多,工作量其实已经不大了)

OK,简单介绍完了,开始今天的代码

写一个工具类BluetoothMgr,把蓝牙一些相关的操作,放在里面

/** * Created by Ezreal on 2015/9/14. */{private static BluetoothMgr oneInstance = null;public static BluetoothAdapter mBluetoothAdapter = null;public boolean available = false;private static List<BluetoothDevice> devList = new ArrayList<BluetoothDevice>();private BluetoothMgr() { }@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)private BluetoothMgr(Context context) {int sdkInt = Build.VERSION.SDK_INT;if (sdkInt <= Build.VERSION_CODES.JELLY_BEAN_MR1) {mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();} else {BluetoothManager manager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);mBluetoothAdapter = manager.getAdapter();}available = (null != mBluetoothAdapter);}() {return available;}BluetoothMgr getInstance(Context context) {if (null == oneInstance) {oneInstance = new BluetoothMgr(context);}return oneInstance;}(){if (null == mBluetoothAdapter) {return false;}if (!mBluetoothAdapter.isEnabled()) {mBluetoothAdapter.enable();while (!mBluetoothAdapter.isEnabled()) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}if (mBluetoothAdapter.isDiscovering()) {return true;}return mBluetoothAdapter.startDiscovery();}() {if (mBluetoothAdapter == null) {return false;}if (mBluetoothAdapter.isDiscovering()){return mBluetoothAdapter.cancelDiscovery();}return false;}(BluetoothDevice device) {if (null == device) {return;}if (devList.contains(device)) {return;}devList.add(device);}(String mac) {if (null == mac || mac.length()==0) {return;}for (int i = 0; i < devList.size(); ++i) {BluetoothDevice device = devList.get(i);if (device.getAddress().equalsIgnoreCase(mac)) {devList.remove(i);break;}}}() {devList.clear();}public static BluetoothDevice findOne(int pos) {if (pos < 0 || pos >= devList.size()) {return null;}return devList.get(pos);}public static List<BluetoothDevice> getDevList() {return devList;}() {return (null == devList || devList.isEmpty());}(){if(mBluetoothAdapter!=null){LogUtils.d(“BluetoothMgr”,”mBluetoothAdapter.getState()”+mBluetoothAdapter.getState());return mBluetoothAdapter.getState();}else{return -1;}}}

分析:对蓝牙的一些基本方法进行了封装,以及版本的判断,这边在例举下蓝牙相关的一些具体代码的内容 (这部分网上资料还算有,也可以找找)

在安卓要使用蓝牙,先要授权

=”android.permission.BLUETOOTH_ADMIN” />

不然你项目一运行就是异常。

要使用蓝牙必须声明一个BluetoothAdapter

在4.3之前 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();获取系统默认蓝牙。

4.3之后 BluetoothManager manager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE); mBluetoothAdapter = manager.getAdapter();

列举一些常用的方法

disable()关闭蓝牙

enable()打开蓝牙(用户将不会收到提示)

下面是另一种打开蓝牙的方式,但是会提醒用户手动去打开

Intent enabler=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enabler,reCode);//同startActivity(enabler);

cancelDiscovery() 取消搜索设备

startDiscovery() 开始搜索设备

getAddress()获取本地蓝牙地址

getName()获取本地蓝牙名称

getRemoteDevice(Stringaddress)根据蓝牙地址获取远程蓝牙设备

getState()获取本地蓝牙适配器当前状态

isDiscovering()判断当前是否正在查找设备,是返回true

isEnabled()判断蓝牙是否打开,已打开返回true,否则,返回false

只要你扬帆,便会有八面来风。启程了,人的生命才真正开始。

从头开始敲代码之《从BaseApplication/Activity开始(二)》

相关文章:

你感兴趣的文章:

标签云: