我正在扫描 BLE 设备。 这是我的代码;
public class MainActivity extends AppCompatActivity {
private boolean mScanning;Button ara ;
ListView lw;
private BluetoothAdapter mBluetoothAdapter;
private int REQUEST_ENABLE_BT = 1;
private Handler mHandler;
private static final long SCAN_PERIOD = 10000;
private BluetoothLeScanner mLEScanner;
private ScanSettings settings;
private List<ScanFilter> filters;
private BluetoothGatt mGatt;
private ArrayList<String> deviceListesi = new ArrayList<String>();
private ArrayList<String> mDeviceStore = new ArrayList<String>();
private ArrayAdapter<String> deviceAdapter ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHandler = new Handler();
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
Toast.makeText(this, "BLE Not Supported",
Toast.LENGTH_SHORT).show();
finish();
}
final BluetoothManager bluetoothManager =
(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
lw = (ListView) findViewById(R.id.listview);
ara = (Button) findViewById(R.id.button2);
deviceAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, deviceListesi);
mBluetoothAdapter.startDiscovery();
ara.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scanLeDevice(true);
}
});
}
private final BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {
System.out.println("Buradayım mmmmmmmmmmmm");
final String deviceIsim = device.getName()+" "+device.getAddress();
Toast.makeText(getApplicationContext(),deviceIsim,Toast.LENGTH_SHORT).show();
mDeviceStore.add(deviceIsim);
for (final String leDevice : mDeviceStore) {
deviceListesi.add(leDevice);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
lw.setAdapter(deviceAdapter);
}
});
}
};
public void scanLeDevice( final boolean enable) {
if (enable) {
if (mScanning) {
return;
}
Log.d("TAG", "~ Starting Scan");
// Stops scanning after a pre-defined scan period.
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
Log.d("TAG", "~ Stopping Scan (timeout)");
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}, SCAN_PERIOD);
mScanning = true;
mBluetoothAdapter.startLeScan(mLeScanCallback);
} else {
Log.d("TAG", "~ Stopping Scan");
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}
}
我有 ListView ,但没有发生任何事情?这是 Android 监视器打印;
D/TAG: ~ Starting Scan D/TAG: ~ Stopping Scan (timeout) D/BluetoothAdapter: stopLeScan() D/BluetoothAdapter: scan not started yet
我哪里做错了?
最佳答案
删除行
mBluetoothAdapter.startDiscovery();
蓝牙 LE 和“旧”蓝牙是不同的东西。你不能把两者混为一谈。
关于java - Ble 扫描设备 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42613279/