Advertisement
renatoSouza

ListaDispositivosActivity

Oct 25th, 2018
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.39 KB | None | 0 0
  1. package br.com.sentinelacriativa.bluetooth_estudo;
  2.  
  3. import android.app.ProgressDialog;
  4. import android.bluetooth.BluetoothAdapter;
  5. import android.bluetooth.BluetoothDevice;
  6. import android.content.BroadcastReceiver;
  7. import android.content.Context;
  8. import android.content.Intent;
  9. import android.content.IntentFilter;
  10. import android.support.v7.app.AppCompatActivity;
  11. import android.os.Bundle;
  12. import android.view.View;
  13. import android.widget.AdapterView;
  14. import android.widget.ArrayAdapter;
  15. import android.widget.ListView;
  16. import android.widget.Toast;
  17.  
  18. import java.util.ArrayList;
  19. import java.util.List;
  20.  
  21. public class ListaDispositivosActivity extends BluetoothCheckActivity implements AdapterView.OnItemClickListener {
  22.  
  23.     protected List<BluetoothDevice> listaDispositivo;
  24.  
  25.     private ListView mListViewDispositivos;
  26.  
  27.     private ProgressDialog dialog;
  28.  
  29.     @Override
  30.     protected void onCreate(Bundle savedInstanceState) {
  31.         super.onCreate(savedInstanceState);
  32.         setContentView(R.layout.activity_lista_dispositivos);
  33.  
  34.         //mListViewDispositivos
  35.         mListViewDispositivos = (ListView) findViewById(R.id.listViewDispositivos);
  36.  
  37.         //Verifica se adaptador é nulo ou nao
  38.         if(mBtfAdaptador != null){
  39.             listaDispositivo = new ArrayList<>(mBtfAdaptador.getBondedDevices()); //Popula a lista com os já pareados - Os novos serão adicionados pela class BroadCastReceiver
  40.  
  41.             //Registra quais as ações o broadcast deve monitorar, no caso do Bluetooth, são essas abaixo
  42.             this.registerReceiver(receiverBluetooth, new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_STARTED));
  43.             this.registerReceiver(receiverBluetooth, new IntentFilter(BluetoothDevice.ACTION_FOUND));
  44.             this.registerReceiver(receiverBluetooth, new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED));
  45.         }
  46.     }
  47.  
  48.     @Override
  49.     protected void onResume() {
  50.         super.onResume();
  51.  
  52.         //Verifica se o adaptador de Bluetooth está disponivel
  53.         if(mBtfAdaptador != null){
  54.  
  55.             //Verifica se o bluetooth já está buscando dispositivo, antes de iniciar uma busca
  56.             if(mBtfAdaptador.isDiscovering()){
  57.                 mBtfAdaptador.cancelDiscovery(); //Cancela a busca antes de iniciar
  58.             }
  59.  
  60.             mBtfAdaptador.startDiscovery(); //Inicia a nova busca
  61.             dialog = ProgressDialog.show(this, "Buscando dispositivos", "Buscando dispositivos próximos a você...", false, true);
  62.  
  63.         }
  64.     }
  65.  
  66.     private final BroadcastReceiver receiverBluetooth = new BroadcastReceiver() {
  67.  
  68.         private int countDispositivos;
  69.  
  70.         @Override
  71.         public void onReceive(Context context, Intent intent) {
  72.             String acao = intent.getAction(); //Pega ação que chegou no broadcast
  73.  
  74.             //Detectando ação de Bluetooth para tratar
  75.             if(BluetoothDevice.ACTION_FOUND.equals(acao)){
  76.  
  77.                 BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
  78.  
  79.                 if(device.getBondState() != BluetoothDevice.BOND_BONDED){
  80.                     listaDispositivo.add(device);
  81.                     Toast.makeText(context, "Dispositivo adicionado - " + device.getName(), Toast.LENGTH_LONG).show();
  82.                     countDispositivos++;
  83.                 }
  84.  
  85.             } else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(acao)) {
  86.  
  87.                 countDispositivos = 0;
  88.                 Toast.makeText(context, "Busca iniciada...", Toast.LENGTH_LONG).show();
  89.  
  90.             } else if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(acao)){
  91.  
  92.                 Toast.makeText(context, "Busca finalizada - " + countDispositivos + " dispositivos encontrados.", Toast.LENGTH_LONG).show();
  93.                 dialog.dismiss();
  94.                 atualizarListaDispositivos(); // Atualiza lista de dispositivos
  95.  
  96.             }
  97.  
  98.         }
  99.     };
  100.  
  101.     //Vamos recuperar todos os dispositivos da lista para incluir no ListView
  102.     private void atualizarListaDispositivos(){
  103.         List<String> nomes = new ArrayList<>();
  104.  
  105.         //Percorre toda a lista e adiciona na lista nomes
  106.         for (BluetoothDevice device: listaDispositivo){
  107.             boolean pareado = device.getBondState() == BluetoothDevice.BOND_BONDED;
  108.             nomes.add(device.getName() + " - " + device.getAddress() + (pareado ? " - pareado ": " - novo"));
  109.         }
  110.  
  111.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListaDispositivosActivity.this, android.R.layout.simple_list_item_1, nomes);
  112.  
  113.         mListViewDispositivos.setAdapter(adapter);
  114.  
  115.         mListViewDispositivos.setOnItemClickListener(this);
  116.  
  117.     }
  118.  
  119.     //Click do List View
  120.     @Override
  121.     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
  122.         BluetoothDevice device = listaDispositivo.get(i);
  123.         String msg = device.getName() + " - " + device.getAddress();
  124.         Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
  125.     }
  126.  
  127.     //Se a activity for destruida e o adaptador diferente de null, quer dizer que está em operação, para não perder dados
  128.     //nós cancelados a descoberta e também o registro do receiver
  129.     @Override
  130.     protected void onDestroy() {
  131.         super.onDestroy();
  132.  
  133.         if(mBtfAdaptador != null){
  134.             mBtfAdaptador.cancelDiscovery();
  135.             this.unregisterReceiver(receiverBluetooth);
  136.         }
  137.     }
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement