Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package br.com.sentinelacriativa.bluetooth_estudo;
- import android.app.ProgressDialog;
- import android.bluetooth.BluetoothAdapter;
- import android.bluetooth.BluetoothDevice;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- import android.widget.Toast;
- import java.util.ArrayList;
- import java.util.List;
- public class ListaDispositivosActivity extends BluetoothCheckActivity implements AdapterView.OnItemClickListener {
- protected List<BluetoothDevice> listaDispositivo;
- private ListView mListViewDispositivos;
- private ProgressDialog dialog;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_lista_dispositivos);
- //mListViewDispositivos
- mListViewDispositivos = (ListView) findViewById(R.id.listViewDispositivos);
- //Verifica se adaptador é nulo ou nao
- if(mBtfAdaptador != null){
- listaDispositivo = new ArrayList<>(mBtfAdaptador.getBondedDevices()); //Popula a lista com os já pareados - Os novos serão adicionados pela class BroadCastReceiver
- //Registra quais as ações o broadcast deve monitorar, no caso do Bluetooth, são essas abaixo
- this.registerReceiver(receiverBluetooth, new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_STARTED));
- this.registerReceiver(receiverBluetooth, new IntentFilter(BluetoothDevice.ACTION_FOUND));
- this.registerReceiver(receiverBluetooth, new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED));
- }
- }
- @Override
- protected void onResume() {
- super.onResume();
- //Verifica se o adaptador de Bluetooth está disponivel
- if(mBtfAdaptador != null){
- //Verifica se o bluetooth já está buscando dispositivo, antes de iniciar uma busca
- if(mBtfAdaptador.isDiscovering()){
- mBtfAdaptador.cancelDiscovery(); //Cancela a busca antes de iniciar
- }
- mBtfAdaptador.startDiscovery(); //Inicia a nova busca
- dialog = ProgressDialog.show(this, "Buscando dispositivos", "Buscando dispositivos próximos a você...", false, true);
- }
- }
- private final BroadcastReceiver receiverBluetooth = new BroadcastReceiver() {
- private int countDispositivos;
- @Override
- public void onReceive(Context context, Intent intent) {
- String acao = intent.getAction(); //Pega ação que chegou no broadcast
- //Detectando ação de Bluetooth para tratar
- if(BluetoothDevice.ACTION_FOUND.equals(acao)){
- BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
- if(device.getBondState() != BluetoothDevice.BOND_BONDED){
- listaDispositivo.add(device);
- Toast.makeText(context, "Dispositivo adicionado - " + device.getName(), Toast.LENGTH_LONG).show();
- countDispositivos++;
- }
- } else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(acao)) {
- countDispositivos = 0;
- Toast.makeText(context, "Busca iniciada...", Toast.LENGTH_LONG).show();
- } else if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(acao)){
- Toast.makeText(context, "Busca finalizada - " + countDispositivos + " dispositivos encontrados.", Toast.LENGTH_LONG).show();
- dialog.dismiss();
- atualizarListaDispositivos(); // Atualiza lista de dispositivos
- }
- }
- };
- //Vamos recuperar todos os dispositivos da lista para incluir no ListView
- private void atualizarListaDispositivos(){
- List<String> nomes = new ArrayList<>();
- //Percorre toda a lista e adiciona na lista nomes
- for (BluetoothDevice device: listaDispositivo){
- boolean pareado = device.getBondState() == BluetoothDevice.BOND_BONDED;
- nomes.add(device.getName() + " - " + device.getAddress() + (pareado ? " - pareado ": " - novo"));
- }
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListaDispositivosActivity.this, android.R.layout.simple_list_item_1, nomes);
- mListViewDispositivos.setAdapter(adapter);
- mListViewDispositivos.setOnItemClickListener(this);
- }
- //Click do List View
- @Override
- public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
- BluetoothDevice device = listaDispositivo.get(i);
- String msg = device.getName() + " - " + device.getAddress();
- Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
- }
- //Se a activity for destruida e o adaptador diferente de null, quer dizer que está em operação, para não perder dados
- //nós cancelados a descoberta e também o registro do receiver
- @Override
- protected void onDestroy() {
- super.onDestroy();
- if(mBtfAdaptador != null){
- mBtfAdaptador.cancelDiscovery();
- this.unregisterReceiver(receiverBluetooth);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement