package com.clj.fastble.scan;
|
|
import android.bluetooth.BluetoothAdapter;
|
import android.os.Handler;
|
import android.os.Looper;
|
|
import com.clj.fastble.bluetooth.BleBluetooth;
|
|
public abstract class PeriodScanCallback implements BluetoothAdapter.LeScanCallback {
|
|
private Handler handler = new Handler(Looper.getMainLooper());
|
private long timeoutMillis = 10000;
|
BleBluetooth bleBluetooth;
|
|
PeriodScanCallback(long timeoutMillis) {
|
this.timeoutMillis = timeoutMillis;
|
}
|
|
public abstract void onScanTimeout();
|
|
public abstract void onScanCancel();
|
|
public void notifyScanStarted() {
|
if (timeoutMillis > 0) {
|
removeHandlerMsg();
|
handler.postDelayed(new Runnable() {
|
@Override
|
public void run() {
|
bleBluetooth.stopScan(PeriodScanCallback.this);
|
onScanTimeout();
|
}
|
}, timeoutMillis);
|
}
|
}
|
|
public void notifyScanCancel() {
|
bleBluetooth.stopScan(PeriodScanCallback.this);
|
onScanCancel();
|
}
|
|
public void removeHandlerMsg() {
|
handler.removeCallbacksAndMessages(null);
|
}
|
|
public long getTimeoutMillis() {
|
return timeoutMillis;
|
}
|
|
public PeriodScanCallback setTimeoutMillis(long timeoutMillis) {
|
this.timeoutMillis = timeoutMillis;
|
return this;
|
}
|
|
public BleBluetooth getBleBluetooth() {
|
return bleBluetooth;
|
}
|
|
public PeriodScanCallback setBleBluetooth(BleBluetooth bluetooth) {
|
this.bleBluetooth = bluetooth;
|
return this;
|
}
|
}
|