2017-03-05 91 views
1

我正在掃描BLE設備。 這是我的代碼;Ble掃描設備Android

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); 
    } 
} 

}

我已經列表視圖,但沒有出現呢?這是android監視器打印;

d/TAG:〜開始掃描d/TAG:〜停止掃描(超時) d/BluetoothAdapter:stopLeScan()d/BluetoothAdapter:掃描沒有開始 尚未

如果我錯了去做 ?

+0

歡迎來到Stack Overflow!它看起來像你需要學習使用調試器。請幫助一些[互補調試技術](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之後仍然有問題,請隨時返回更多詳情。 –

+0

我正在調試我的代碼沒有錯誤,沒有不工作的功能。我無法解決我的問題。 – NurullahCelik

+0

你的調試課程教會了你什麼? –

回答

0

刪除線

mBluetoothAdapter.startDiscovery(); 

藍牙LE和 「老」 藍牙是不同的東西。你不能混合兩者。

+0

我刪除它,但仍然繼續 – NurullahCelik