android蓝牙协议,Android蓝牙协议-蓝牙扫描 startDiscovery

蓝牙开启位于setting中,即 package:com.android.settings.bluetooth

BluetoothSettings.java 中。

菜单选项MENU_ID_SCAN:

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case MENU_ID_SCAN:

if (mLocalAdapter.getBluetoothState() == BluetoothAdapter.STATE_ON) {

MetricsLogger.action(getActivity(), MetricsLogger.ACTION_BLUETOOTH_SCAN);

startScanning();

}

return true;

case MENU_ID_RENAME_DEVICE:

MetricsLogger.action(getActivity(), MetricsLogger.ACTION_BLUETOOTH_RENAME);

new BluetoothNameDialogFragment().show(

getFragmentManager(), "rename device");

return true;

case MENU_ID_SHOW_RECEIVED:

MetricsLogger.action(getActivity(), MetricsLogger.ACTION_BLUETOOTH_FILES);

Intent intent = new Intent(BTOPP_ACTION_OPEN_RECEIVED_FILES);

getActivity().sendBroadcast(intent);

return true;

}

return super.onOptionsItemSelected(item);

}

调用startScanning,添加可用设备列表,并将缓存的设备中没有配对的设备清除。调用LocalBluetoothAdapter.startScanning方法开始扫描。

LocalBluetoothAdapter.startScanning

public void startScanning(boolean force) {

// Only start if we're not already scanning

if (!mAdapter.isDiscovering()) {

//如果不是强制扫描,在SCAN_EXPIRATION_MS间隔内,之扫描一次

if (!force) {

// Don't scan more than frequently than SCAN_EXPIRATION_MS,

// unless forced

if (mLastScan + SCAN_EXPIRATION_MS > System.currentTimeMillis()) {

return;

}

// If we are playing music, don't scan unless forced.

//播放音乐时,不扫描

A2dpProfile a2dp = mProfileManager.getA2dpProfile();

if (a2dp != null && a2dp.isA2dpPlaying()) {

return;

}

}

//开始扫描

if (mAdapter.startDiscovery()) {

mLastScan = System.currentTimeMillis();

}

}

}

真在扫描则跳过

如果不是强制开始扫描,在SCAN_EXPIRATION_MS间隔时间内,只扫描一

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值