Android源碼下載:Bluetooth_4.3 BLE藍牙通信
功能分類:工具
支持平臺:Android
運行環(huán)境:Eclipse
開發(fā)語言:Java
開發(fā)工具:Eclipse
源碼大?。?.37MB
源碼下載地址:http://down.51cto.com/data/1984795
源碼簡介
該Demo主要是兼容了支持BLE的Android4.3終端設(shè)備之間的藍牙通信。
主要功能包含:
1、藍牙的開啟、關(guān)閉;
2、周圍藍牙開啟設(shè)備的搜索、建連
3、成功建連后,通過藍牙向?qū)Ψ桨l(fā)送消息。
注:要想觀察發(fā)送/接收消息,必須雙方都安裝了此APP。
源碼運行截圖
APP打開藍牙時,對藍牙的請求
藍牙通信
搜索周圍安裝該APP的藍牙設(shè)備
設(shè)置藍牙的某些屬性值
源碼片段
- private void scanLeDevice(final boolean enable) {
if (enable) {
- // Stops scanning after a pre-defined scan period.
mHandler.postDelayed(new Runnable() {
- @Override
public void run() {
- mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
- invalidateOptionsMenu();
}
- }, SCAN_PERIOD);
- mScanning = true;
mBluetoothAdapter.startLeScan(mLeScanCallback);
- } else {
mScanning = false;
- mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
- invalidateOptionsMenu();
}
// Adapter for holding devices found through scanning.
- private class LeDeviceListAdapter extends BaseAdapter {
private ArrayList<bluetoothdevice> mLeDevices;
- private LayoutInflater mInflator;
- public LeDeviceListAdapter() {
super();
- mLeDevices = new ArrayList<bluetoothdevice>();
mInflator = DeviceScanActivity.this.getLayoutInflater();
- }
- public void addDevice(BluetoothDevice device) {
if(!mLeDevices.contains(device)) {
- mLeDevices.add(device);
}
- }
- public BluetoothDevice getDevice(int position) {
return mLeDevices.get(position);
- }
- public void clear() {
mLeDevices.clear();
- }
- @Override
public int getCount() {
- return mLeDevices.size();
}
@Override
- public Object getItem(int i) {
return mLeDevices.get(i);
- }
- @Override
public long getItemId(int i) {
- return i;
}
@Override
- public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
- // General ListView optimization code.
if (view == null) {
- view = mInflator.inflate(R.layout.listitem_device, null);
viewHolder = new ViewHolder();
- viewHolder.deviceAddress = (TextView) view.findViewById(R.id.device_address);
viewHolder.deviceName = (TextView) view.findViewById(R.id.device_name);
- view.setTag(viewHolder);
} else {
- viewHolder = (ViewHolder) view.getTag();
}
BluetoothDevice device = mLeDevices.get(i);
- final String deviceName = device.getName();
if (deviceName != null && deviceName.length() > 0)
- viewHolder.deviceName.setText(deviceName);
else
- viewHolder.deviceName.setText(R.string.unknown_device);
viewHolder.deviceAddress.setText(device.getAddress());
return view;
- }
}
// Device scan callback.
- private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
- @Override
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
- runOnUiThread(new Runnable() {
@Override
- public void run() {
mLeDeviceListAdapter.addDevice(device);
- mLeDeviceListAdapter.notifyDataSetChanged();
}
- });
}
- };
</bluetoothdevice></bluetoothdevice>