編輯:關於Android編程
現在物聯網搞的轟轟烈烈的,小米的手環等一系列產品,下面我們就來研究一下小米手環的記步功能
工具類
package com.zsl.bluetoothdemo.ble;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCallback;
import android.bluetooth.BluetoothManager;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import java.util.ArrayList;
import java.util.List;
/**
* 藍牙的工具類
* Created by zsl on 15/5/25.
*/
public class UniversalBluetoothLE {
//UniversalBluetoothLE
public static UniversalBluetoothLE universalBluetoothLE;
private Context context;
//BluetoothAdapter
private BluetoothAdapter mBluetoothAdapter;
//BluetoothManager
private BluetoothManager bluetoothManager;
//打開藍牙的請求碼
public static final int REQUEST_ENABLE_BLUETOOTH = 10010;
//是否正在掃描藍牙設備
private boolean mScanning;
//設置掃描時長
private static final long SCAN_PERIOD = 10000;
//藍牙掃描的返回
BluetoothAdapter.LeScanCallback leScanCallback;
//藍牙設別的list
List bluetoothDeviceList = new ArrayList();
Handler mHandler = new Handler();
LeScanListenter leScanListenter;
private UniversalBluetoothLE(Context context) {
this.context = context;
//得到BluetoothManager
this.bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
//得到BluetoothAdapter
this.mBluetoothAdapter = bluetoothManager.getAdapter();
//藍牙搜索的回調
leScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
bluetoothDeviceList.add(device);
//返回所有列表
leScanListenter.leScanCallBack(bluetoothDeviceList);
}
};
}
/**
* 獲得到UniversalBluetoothLE對象
*
* @param context
* @return
*/
public static UniversalBluetoothLE inistance(Context context) {
if (universalBluetoothLE == null) {
universalBluetoothLE = new UniversalBluetoothLE(context);
}
return universalBluetoothLE;
}
/**
* 檢查藍牙是否打開並且啟動打開藍牙的方法
*/
public void openBbletooth() {
//判斷藍牙是否開啟
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
//打開藍牙
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
context.startActivity(enableIntent);
}
}
/**
* 開始(true)或結束(false)藍牙掃描
*
* @param enable
*/
private void scanLeDevice(final boolean enable) {
if (enable && mScanning == false) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mScanning = false;
mBluetoothAdapter.stopLeScan(leScanCallback);
}
}, SCAN_PERIOD);
mScanning = true;
mBluetoothAdapter.startLeScan(leScanCallback);
} else {
mScanning = false;
mBluetoothAdapter.stopLeScan(leScanCallback);
}
}
/**
* 開始搜索藍牙設備
*
* @param leScanListenter 搜索藍牙設備的回調(返回設備列表)
*/
public void startScanLeDevice(final LeScanListenter leScanListenter) {
bluetoothDeviceList.clear();
this.leScanListenter=leScanListenter;
scanLeDevice(true);
}
/**
* 停止搜索設備
*/
public void stopScanLeDevice() {
if (leScanCallback == null)
return;
scanLeDevice(false);
}
/**
* 搜索藍牙的回調
*/
public interface LeScanListenter {
void leScanCallBack(List bluetoothDeviceList);
}
/**
* 得到BluetoothGatt
* @param device 設備
* @param autoConnect 是否自動鏈接
* @param bluetoothGattCallback 回調
*/
public BluetoothGatt getConnectGatt(BluetoothDevice device,boolean autoConnect,BluetoothGattCallback bluetoothGattCallback){
return device.connectGatt(context, autoConnect, bluetoothGattCallback);
}
}
初始化
//在onCreate中
//初始化UniversalBluetoothLE
universalBluetoothLE = UniversalBluetoothLE.inistance(MainActivity.this);
檢測是否打開藍牙並且請求系統打開藍牙
//檢測是否打開藍牙並且請求系統打開藍牙
universalBluetoothLE.openBbletooth();
鏈接設備
mBluetoothGatt=universalBluetoothLE.getConnectGatt(device,true,mGattCallback);
mBluetoothGatt.connect();
最後再實現一個GattCallback回調,搞定
看看小米的記步功能吧,完美獲取哦,有小米手環的可以測試哦,第三個是我的小米手環。
1.圖片處理1.圓角圖片復制代碼 代碼如下:/** * 轉換成圓角 * &
介紹Action Bar是一種新増的導航欄功能,在Android 3.0之後加入到系統的API當中,它標識了用戶當前操作界面的位置,並提供了額外的用戶動作、界面導航等功能
在項目開發中,我們經常需要進行動態添加組件,其中可添加的部分有兩項:布局和組件 其中,添加的布局主要有RelativeLayout型(相對布局)的和Linear
一、Service的種類1.按運行地點分類: 類別 區別 優點 缺點 應用 本地服務 (Local) 該服務依附在主進程上 服務依附在主進程上而不是獨立
本文站在巨人的肩膀上 自我感覺又進了一步而成。基於翔神的大作基礎之上寫的