.class public abstract Lcom/clj/fastble/scan/BleScanPresenter; .super Ljava/lang/Object; .source "BleScanPresenter.java" # interfaces .implements Landroid/bluetooth/BluetoothAdapter$LeScanCallback; # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/clj/fastble/scan/BleScanPresenter$ScanHandler; } .end annotation # instance fields .field private final mBleDeviceList:Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/List<", "Lcom/clj/fastble/data/BleDevice;", ">;" } .end annotation .end field .field private mBleScanPresenterImp:Lcom/clj/fastble/callback/BleScanPresenterImp; .field private mDeviceMac:Ljava/lang/String; .field private mDeviceNames:[Ljava/lang/String; .field private mFuzzy:Z .field private mHandler:Landroid/os/Handler; .field private mHandlerThread:Landroid/os/HandlerThread; .field private mHandling:Z .field private final mMainHandler:Landroid/os/Handler; .field private mNeedConnect:Z .field private mScanTimeout:J # direct methods .method public constructor ()V .registers 3 .line 26 invoke-direct {p0}, Ljava/lang/Object;->()V .line 35 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V iput-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mBleDeviceList:Ljava/util/List; .line 37 new-instance v0, Landroid/os/Handler; invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper; move-result-object v1 invoke-direct {v0, v1}, Landroid/os/Handler;->(Landroid/os/Looper;)V iput-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mMainHandler:Landroid/os/Handler; return-void .end method .method static synthetic access$000(Lcom/clj/fastble/scan/BleScanPresenter;Lcom/clj/fastble/data/BleDevice;)V .registers 2 .line 26 invoke-direct {p0, p1}, Lcom/clj/fastble/scan/BleScanPresenter;->handleResult(Lcom/clj/fastble/data/BleDevice;)V return-void .end method .method static synthetic access$100(Lcom/clj/fastble/scan/BleScanPresenter;)Ljava/util/List; .registers 1 .line 26 iget-object p0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mBleDeviceList:Ljava/util/List; return-object p0 .end method .method private checkDevice(Lcom/clj/fastble/data/BleDevice;)V .registers 10 .line 113 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mDeviceMac:Ljava/lang/String; invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z move-result v0 const/4 v1, 0x1 if-eqz v0, :cond_14 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mDeviceNames:[Ljava/lang/String; if-eqz v0, :cond_10 array-length v0, v0 if-ge v0, v1, :cond_14 .line 114 :cond_10 invoke-direct {p0, p1}, Lcom/clj/fastble/scan/BleScanPresenter;->correctDeviceAndNextStep(Lcom/clj/fastble/data/BleDevice;)V return-void .line 118 :cond_14 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mDeviceMac:Ljava/lang/String; invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z move-result v0 if-nez v0, :cond_29 .line 119 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mDeviceMac:Ljava/lang/String; invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getMac()Ljava/lang/String; move-result-object v2 invoke-virtual {v0, v2}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z move-result v0 if-nez v0, :cond_29 return-void .line 123 :cond_29 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mDeviceNames:[Ljava/lang/String; if-eqz v0, :cond_63 array-length v0, v0 if-lez v0, :cond_63 .line 124 new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean; const/4 v2, 0x0 invoke-direct {v0, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->(Z)V .line 125 iget-object v3, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mDeviceNames:[Ljava/lang/String; array-length v4, v3 :goto_39 if-ge v2, v4, :cond_5c aget-object v5, v3, v2 .line 126 invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getName()Ljava/lang/String; move-result-object v6 if-nez v6, :cond_45 .line 128 const-string v6, "" .line 129 :cond_45 iget-boolean v7, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mFuzzy:Z if-eqz v7, :cond_50 invoke-virtual {v6, v5}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z move-result v5 if-eqz v5, :cond_59 goto :goto_56 :cond_50 invoke-virtual {v6, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v5 if-eqz v5, :cond_59 .line 130 :goto_56 invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V :cond_59 add-int/lit8 v2, v2, 0x1 goto :goto_39 .line 133 :cond_5c invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z move-result v0 if-nez v0, :cond_63 return-void .line 138 :cond_63 invoke-direct {p0, p1}, Lcom/clj/fastble/scan/BleScanPresenter;->correctDeviceAndNextStep(Lcom/clj/fastble/data/BleDevice;)V return-void .end method .method private correctDeviceAndNextStep(Lcom/clj/fastble/data/BleDevice;)V .registers 7 .line 143 iget-boolean v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mNeedConnect:Z if-eqz v0, :cond_59 .line 144 new-instance v0, Ljava/lang/StringBuilder; const-string v1, "devices detected ------ name:" invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V .line 145 invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getName()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, " mac:" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 .line 146 invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getMac()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, " Rssi:" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 .line 147 invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getRssi()I move-result v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, " scanRecord:" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 .line 148 invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getScanRecord()[B move-result-object v1 invoke-static {v1}, Lcom/clj/fastble/utils/HexUtil;->formatHexString([B)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 .line 144 invoke-static {v0}, Lcom/clj/fastble/utils/BleLog;->i(Ljava/lang/String;)V .line 150 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mBleDeviceList:Ljava/util/List; invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 151 iget-object p1, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mMainHandler:Landroid/os/Handler; new-instance v0, Lcom/clj/fastble/scan/BleScanPresenter$2; invoke-direct {v0, p0}, Lcom/clj/fastble/scan/BleScanPresenter$2;->(Lcom/clj/fastble/scan/BleScanPresenter;)V invoke-virtual {p1, v0}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z goto/16 :goto_dd .line 159 :cond_59 new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean; const/4 v1, 0x0 invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->(Z)V .line 160 iget-object v1, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mBleDeviceList:Ljava/util/List; invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v1 :cond_65 :goto_65 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v2 const/4 v3, 0x1 if-eqz v2, :cond_84 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 check-cast v2, Lcom/clj/fastble/data/BleDevice; .line 161 invoke-virtual {v2}, Lcom/clj/fastble/data/BleDevice;->getDevice()Landroid/bluetooth/BluetoothDevice; move-result-object v2 invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getDevice()Landroid/bluetooth/BluetoothDevice; move-result-object v4 invoke-virtual {v2, v4}, Landroid/bluetooth/BluetoothDevice;->equals(Ljava/lang/Object;)Z move-result v2 if-eqz v2, :cond_65 .line 162 invoke-virtual {v0, v3}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V goto :goto_65 .line 165 :cond_84 invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z move-result v0 if-nez v0, :cond_dd .line 166 new-instance v0, Ljava/lang/StringBuilder; const-string v1, "device detected ------ name: " invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V .line 167 invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getName()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, " mac: " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 .line 168 invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getMac()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, " Rssi: " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 .line 169 invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getRssi()I move-result v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, " scanRecord: " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 .line 170 invoke-virtual {p1}, Lcom/clj/fastble/data/BleDevice;->getScanRecord()[B move-result-object v1 invoke-static {v1, v3}, Lcom/clj/fastble/utils/HexUtil;->formatHexString([BZ)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 .line 166 invoke-static {v0}, Lcom/clj/fastble/utils/BleLog;->i(Ljava/lang/String;)V .line 172 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mBleDeviceList:Ljava/util/List; invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 173 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mMainHandler:Landroid/os/Handler; new-instance v1, Lcom/clj/fastble/scan/BleScanPresenter$3; invoke-direct {v1, p0, p1}, Lcom/clj/fastble/scan/BleScanPresenter$3;->(Lcom/clj/fastble/scan/BleScanPresenter;Lcom/clj/fastble/data/BleDevice;)V invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z :cond_dd :goto_dd return-void .end method .method private handleResult(Lcom/clj/fastble/data/BleDevice;)V .registers 4 .line 66 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mMainHandler:Landroid/os/Handler; new-instance v1, Lcom/clj/fastble/scan/BleScanPresenter$1; invoke-direct {v1, p0, p1}, Lcom/clj/fastble/scan/BleScanPresenter$1;->(Lcom/clj/fastble/scan/BleScanPresenter;Lcom/clj/fastble/data/BleDevice;)V invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z .line 72 invoke-direct {p0, p1}, Lcom/clj/fastble/scan/BleScanPresenter;->checkDevice(Lcom/clj/fastble/data/BleDevice;)V return-void .end method # virtual methods .method public getBleScanPresenterImp()Lcom/clj/fastble/callback/BleScanPresenterImp; .registers 2 .line 95 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mBleScanPresenterImp:Lcom/clj/fastble/callback/BleScanPresenterImp; return-object v0 .end method .method public ismNeedConnect()Z .registers 2 .line 91 iget-boolean v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mNeedConnect:Z return v0 .end method .method public final notifyScanStarted(Z)V .registers 6 .line 184 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mBleDeviceList:Ljava/util/List; invoke-interface {v0}, Ljava/util/List;->clear()V .line 186 invoke-virtual {p0}, Lcom/clj/fastble/scan/BleScanPresenter;->removeHandlerMsg()V if-eqz p1, :cond_1e .line 188 iget-wide v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mScanTimeout:J const-wide/16 v2, 0x0 cmp-long v0, v0, v2 if-lez v0, :cond_1e .line 189 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mMainHandler:Landroid/os/Handler; new-instance v1, Lcom/clj/fastble/scan/BleScanPresenter$4; invoke-direct {v1, p0}, Lcom/clj/fastble/scan/BleScanPresenter$4;->(Lcom/clj/fastble/scan/BleScanPresenter;)V iget-wide v2, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mScanTimeout:J invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z .line 197 :cond_1e iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mMainHandler:Landroid/os/Handler; new-instance v1, Lcom/clj/fastble/scan/BleScanPresenter$5; invoke-direct {v1, p0, p1}, Lcom/clj/fastble/scan/BleScanPresenter$5;->(Lcom/clj/fastble/scan/BleScanPresenter;Z)V invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z return-void .end method .method public final notifyScanStopped()V .registers 3 const/4 v0, 0x0 .line 206 iput-boolean v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mHandling:Z .line 207 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mHandlerThread:Landroid/os/HandlerThread; if-eqz v0, :cond_a .line 208 invoke-virtual {v0}, Landroid/os/HandlerThread;->quit()Z .line 210 :cond_a invoke-virtual {p0}, Lcom/clj/fastble/scan/BleScanPresenter;->removeHandlerMsg()V .line 211 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mMainHandler:Landroid/os/Handler; new-instance v1, Lcom/clj/fastble/scan/BleScanPresenter$6; invoke-direct {v1, p0}, Lcom/clj/fastble/scan/BleScanPresenter$6;->(Lcom/clj/fastble/scan/BleScanPresenter;)V invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z return-void .end method .method public onLeScan(Landroid/bluetooth/BluetoothDevice;I[B)V .registers 12 if-nez p1, :cond_3 return-void .line 103 :cond_3 iget-boolean v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mHandling:Z if-nez v0, :cond_8 return-void .line 106 :cond_8 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mHandler:Landroid/os/Handler; invoke-virtual {v0}, Landroid/os/Handler;->obtainMessage()Landroid/os/Message; move-result-object v0 const/4 v1, 0x0 .line 107 iput v1, v0, Landroid/os/Message;->what:I .line 108 new-instance v1, Lcom/clj/fastble/data/BleDevice; invoke-static {}, Ljava/lang/System;->currentTimeMillis()J move-result-wide v6 move-object v2, v1 move-object v3, p1 move v4, p2 move-object v5, p3 invoke-direct/range {v2 .. v7}, Lcom/clj/fastble/data/BleDevice;->(Landroid/bluetooth/BluetoothDevice;I[BJ)V iput-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; .line 109 iget-object p1, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mHandler:Landroid/os/Handler; invoke-virtual {p1, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z return-void .end method .method public abstract onLeScan(Lcom/clj/fastble/data/BleDevice;)V .end method .method public abstract onScanFinished(Ljava/util/List;)V .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/List<", "Lcom/clj/fastble/data/BleDevice;", ">;)V" } .end annotation .end method .method public abstract onScanStarted(Z)V .end method .method public abstract onScanning(Lcom/clj/fastble/data/BleDevice;)V .end method .method public prepare([Ljava/lang/String;Ljava/lang/String;ZZJLcom/clj/fastble/callback/BleScanPresenterImp;)V .registers 8 .line 77 iput-object p1, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mDeviceNames:[Ljava/lang/String; .line 78 iput-object p2, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mDeviceMac:Ljava/lang/String; .line 79 iput-boolean p3, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mFuzzy:Z .line 80 iput-boolean p4, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mNeedConnect:Z .line 81 iput-wide p5, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mScanTimeout:J .line 82 iput-object p7, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mBleScanPresenterImp:Lcom/clj/fastble/callback/BleScanPresenterImp; .line 84 new-instance p1, Landroid/os/HandlerThread; const-string p2, "BleScanPresenter" invoke-direct {p1, p2}, Landroid/os/HandlerThread;->(Ljava/lang/String;)V iput-object p1, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mHandlerThread:Landroid/os/HandlerThread; .line 85 invoke-virtual {p1}, Landroid/os/HandlerThread;->start()V .line 86 new-instance p1, Lcom/clj/fastble/scan/BleScanPresenter$ScanHandler; iget-object p2, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mHandlerThread:Landroid/os/HandlerThread; invoke-virtual {p2}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper; move-result-object p2 invoke-direct {p1, p2, p0}, Lcom/clj/fastble/scan/BleScanPresenter$ScanHandler;->(Landroid/os/Looper;Lcom/clj/fastble/scan/BleScanPresenter;)V iput-object p1, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mHandler:Landroid/os/Handler; const/4 p1, 0x1 .line 87 iput-boolean p1, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mHandling:Z return-void .end method .method public final removeHandlerMsg()V .registers 3 .line 220 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mMainHandler:Landroid/os/Handler; const/4 v1, 0x0 invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacksAndMessages(Ljava/lang/Object;)V .line 221 iget-object v0, p0, Lcom/clj/fastble/scan/BleScanPresenter;->mHandler:Landroid/os/Handler; if-eqz v0, :cond_d .line 222 invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacksAndMessages(Ljava/lang/Object;)V :cond_d return-void .end method