сканирование bluetooth (java) на андроид студии - PullRequest
0 голосов
/ 03 декабря 2018

Я разрабатываю систему посещаемости с использованием Bluetooth, которая позволяет пользователю сканировать Bluetooth, чтобы получить адрес Bluetooth и сравнить его с зарегистрированным адресом Bluetooth.Проблема в том, что он только сканирует и отображает зарегистрированный список учеников, но не перечисляет доступные Bluetooth, а также не сравнивает их с зарегистрированным адресом Bluetooth.

вот код для BluetoothScanActivity

public class BluetoothScanActivity extends AppCompatActivity {


public static final String TAG = BluetoothScanActivity.class.getSimpleName();

BluetoothAdapter mBluetoothAdapter;
IntentFilter filter;
BroadcastReceiver mReceiver;
String name[];
ArrayList<String> macID;
Bundle scan_data;
int countScans=0;
int numCountScans;
int value;
RippleBackground rippleBackground;

String classID;
boolean selectDateCheck = false;
Date selectedDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_bluetooth_scan);


    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    {
        Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.setStatusBarColor(ContextCompat.getColor(getBaseContext(), R.color.main_blue));
    }
    classID = getIntent().getStringExtra("Class ID");
    numCountScans = getIntent().getIntExtra("Number Scans",3);
    value = getIntent().getIntExtra("Value",1);
    selectDateCheck = getIntent().getBooleanExtra("Manual Date",false);
    selectedDate = (Date)getIntent().getSerializableExtra("Selected Date");
    Toast.makeText(this, numCountScans + " " + value, Toast.LENGTH_LONG).show();

    rippleBackground = (RippleBackground)findViewById(R.id.content);

    int MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION = 1;
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);

    init();
    if(mBluetoothAdapter==null)
    {
        Toast.makeText(getApplicationContext(),"Your device doesn't support bluetooth!",Toast.LENGTH_SHORT).show();
        finish();
    }
    else
    {
        if (!mBluetoothAdapter.isEnabled()) {
            turnOnBT();
        }
    }

    scan_data=new Bundle();
    name=new String[100];
    macID = new ArrayList<String>();
    Log.d(TAG, "onCreate: ");
    searchDevices();
}
private void turnOnBT() {
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, 1);
}
public void init()
{

    mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();


    //Create a BroadCastReceiver for ACTION_FOUND
    mReceiver=new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action=intent.getAction();
            //When discovery finds a device
            if(BluetoothDevice.ACTION_FOUND.equals((action)))
            {
                //Get the BluetoothDevice object from the Intent
                BluetoothDevice device=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                //Add the name and address to an array adapter to show in a ListView
                if(!macID.contains(device.getAddress().toUpperCase()))
                    macID.add(device.getAddress().toUpperCase());
                Toast.makeText(context,device.getName(),Toast.LENGTH_SHORT).show();
            }

            else if(BluetoothAdapter.ACTION_STATE_CHANGED.equals((action)))
            {
                if(mBluetoothAdapter.getState()== BluetoothAdapter.STATE_OFF) {
                    turnOnBT();
                }
            }
            else if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals((action)))
            {
                if(countScans == numCountScans-1)
                {
                    rippleBackground.stopRippleAnimation();
                    Intent in = new Intent(BluetoothScanActivity.this, MarkStudentsActivity.class);
                    in.putExtra("Class ID", classID);
                    in.putExtra("Value",value);
                    in.putStringArrayListExtra("MAC ID's", macID);
                    intent.putExtra("Manual Date",selectDateCheck);
                    intent.putExtra("Selected Date",selectedDate);
                    startActivity(in);
                    finish();
                }
                else
                {
                    countScans++;
                    Log.d("Mark","" + countScans);
                    mBluetoothAdapter.startDiscovery();
                }
            }
        }
    };
    filter=new IntentFilter();
    filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
    filter.addAction(BluetoothDevice.ACTION_FOUND);
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
    registerReceiver(mReceiver, filter);
}



@Override
protected void onDestroy() {
    super.onDestroy();
    Log.d(TAG, "onDestroy: ");
    if(mBluetoothAdapter!=null)
        mBluetoothAdapter.cancelDiscovery();
    unregisterReceiver(mReceiver);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...