Я создаю занятие, чтобы найти устройство BLE и показать их в списке моей деятельности. Поэтому я строю свой класс активности, и я могу найти устройство BLE возле моего смартфона. Теперь мне нужно соединить устройство BLE, когда пользователь нажимает на один элемент моего ListView.
Это класс Actitity: < /p>
Я создаю занятие, чтобы найти устройство BLE и показать их в списке моей деятельности. Поэтому я строю свой класс активности, и я могу найти устройство BLE возле моего смартфона. Теперь мне нужно соединить устройство BLE, когда пользователь нажимает на один элемент моего ListView. Это класс Actitity: < /p> [code]import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.location.LocationManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.View; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import android.Manifest; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast;
if (permissionCheck != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( this, new String [] { android.Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.BLUETOOTH_CONNECT, Manifest.permission.BLUETOOTH_SCAN },1 ); }
if(areLocationServicesEnabled(this)) { mHandler = new Handler();
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { Toast.makeText(this, "BLE Non supportato", Toast.LENGTH_SHORT).show(); finish(); }
final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); mBluetoothAdapter = bluetoothManager.getAdapter();
private void scanLeDevice(final boolean enable) { if (enable) { mScanning = true; if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } mBluetoothAdapter.startLeScan(mLeScanCallback); } else { mScanning = false; if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } mBluetoothAdapter.stopLeScan(mLeScanCallback); } }
// 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() { if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) { return; } if(device.getName()!=null && device.getName().startsWith(deviceToFind.getAbbreviazione())){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { Log.i("NUOVO DEVICE SCOPERTO",device.getName() + " " +device.getAddress()+" "+device.getAlias()+" "+device.getType()); } //devo mostrare in pagina il nuovo device. addDeviceDiscovered(new Device(device.getName(), device.getAddress())); binding.listViewDeviceDiscovered.setAdapter(new DeviceDiscoveredViewAdapter(getApplicationContext(), listDeviceDiscovered)); } } }); } };
private void addDeviceDiscovered(Device newDevice){ try{ if(listDeviceDiscovered==null) listDeviceDiscovered = new ArrayList(); boolean find = false; for (Device d: listDeviceDiscovered) { if(d.getMacAddress().equalsIgnoreCase(newDevice.getMacAddress())){ find=true; break; } } if(!find) listDeviceDiscovered.add(newDevice); }catch(Exception e){ Log.e("",e.getMessage()); } } } < /code> Теперь в методе ClickListener < /p> binding.listViewDeviceDiscovered.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1, int position, long arg3) { Device deviceSelected = listDeviceDiscovered.get(position); Log.v("", deviceSelected.getNome()+" device selezionato per il pairing");
} }); [/code] Я выбираю устройство, и мне нужно написать код для запуска устройства сопряжения.
Я пишу следующий код для сочетания моего смартфона с некоторым программным устройством. Итак, это код, который я использую сейчас:
С следующим кодом я выберите устройство, чтобы соединиться из просмотра списка....
Я пытаюсь создать функцию, которая определяет, подключен ли ваш телефон к другому устройству через Bluetooth, будь то наушники, автомобиль, другой телефон и т. д. И если устройство обнаружено, должен быть ответ. >
Я создал отдельный класс приемника...
Это касается безопасного сочетания с кэшированием Nik и BuitStrap. Android имеет поддержку в API ( но я еще не столкнулся с устройством с поддержкой.
Я проверил через
WifiAwareManager.characteristics.isAwarePairingSupported
Я разрабатываю приложение для Android, которое общается с пользовательским устройством BLE, которое требует отполосного (OOB) спаривания. The requirement is:
Exchange confirmation and randomizer values with the device before
pairing.
Set the...