Paso 7: Código de la aplicación Android
package com.java.android.digiwallet;import android.os.Bundle; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.content.Context; import java.util.Set; import android.content.Intent; import android.content.IntentFilter; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import android.support.v4.app.NotificationCompat;public class MainActivity extends Activity { private static final int REQUEST_ENABLE_BT = 1; private Button onBtn; private Button offBtn; private Button listBtn; private Button findBtn; private TextView text; private BluetoothAdapter myBluetoothAdapter; private Set pairedDevices; private ListView myListView; private ArrayAdapter BTArrayAdapter; NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this); protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED); IntentFilter filter2 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED); IntentFilter filter3 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED); this.registerReceiver(bReceiver, filter1); this.registerReceiver(bReceiver, filter2); this.registerReceiver(bReceiver, filter3); // take an instance of BluetoothAdapter - Bluetooth radio myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if(myBluetoothAdapter == null) { onBtn.setEnabled(false); offBtn.setEnabled(false); listBtn.setEnabled(false); findBtn.setEnabled(false); text.setText("Status: not supported"); Toast.makeText(getApplicationContext(),"Your device does not support Bluetooth", Toast.LENGTH_LONG).show(); } else { text = (TextView) findViewById(R.id.text); onBtn = (Button)findViewById(R.id.turnOn); onBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub on(v); } }); offBtn = (Button)findViewById(R.id.turnOff); offBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub off(v); } }); listBtn = (Button)findViewById(R.id.paired); listBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub list(v); } }); findBtn = (Button)findViewById(R.id.search); findBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub find(v); } }); myListView = (ListView)findViewById(R.id.listView1); // create the arrayAdapter that contains the BTDevices, and set it to the ListView BTArrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1); myListView.setAdapter(BTArrayAdapter); } } public void on(View view){ if (!myBluetoothAdapter.isEnabled()) { Intent turnOnIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(turnOnIntent, REQUEST_ENABLE_BT); Toast.makeText(getApplicationContext(),"Bluetooth turned on" , Toast.LENGTH_LONG).show(); } else{ Toast.makeText(getApplicationContext(),"Bluetooth is already on", Toast.LENGTH_LONG).show(); } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub if(requestCode == REQUEST_ENABLE_BT){ if(myBluetoothAdapter.isEnabled()) { text.setText("Status: Enabled"); } else { text.setText("Status: Disabled"); } } } public void list(View view){ // get paired devices pairedDevices = myBluetoothAdapter.getBondedDevices(); // put it's one to the adapter for(BluetoothDevice device : pairedDevices) BTArrayAdapter.add(device.getName()+ "\n" + device.getAddress()); Toast.makeText(getApplicationContext(),"Show Paired Devices", Toast.LENGTH_SHORT).show(); } final BroadcastReceiver bReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); // When discovery finds a device if (BluetoothDevice.ACTION_FOUND.equals(action)) { // Get the BluetoothDevice object from the Intent BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); // add the name and the MAC address of the object to the arrayAdapter BTArrayAdapter.add(device.getName() + "\n" + device.getAddress()); BTArrayAdapter.notifyDataSetChanged(); } if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) { // Device is now connected // BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); Toast.makeText(getApplicationContext(),"Device is now connected", Toast.LENGTH_SHORT).show(); mBuilder.setSmallIcon(R.drawable.abc_ic_menu_cut_mtrl_alpha); mBuilder.setContentTitle("DigiWallet: Alert"); mBuilder.setContentText("Your wallet connected to your device!"); NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); } if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { // Done searching Toast.makeText(getApplicationContext(),"Done searching", Toast.LENGTH_SHORT).show(); } if (BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED.equals(action)) { // Device is about to disconnect Toast.makeText(getApplicationContext(),"Device is about to disconnect", Toast.LENGTH_SHORT).show(); } if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) { // Device has disconnected Toast.makeText(getApplicationContext(),"Device has disconnected", Toast.LENGTH_SHORT).show(); mBuilder.setSmallIcon(R.drawable.abc_ic_menu_cut_mtrl_alpha); mBuilder.setContentTitle("DigiWallet: Alert"); mBuilder.setContentText("Your wallet seems to be out of reach!! Please check your surroundings"); NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);// notificationID allows you to update the notification later on. mNotificationManager.notify(1, mBuilder.build()); } } }; public void find(View view) { if (myBluetoothAdapter.isDiscovering()) { // the button is pressed when it discovers, so cancel the discovery myBluetoothAdapter.cancelDiscovery(); } else { BTArrayAdapter.clear(); myBluetoothAdapter.startDiscovery(); registerReceiver(bReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND)); } } public void off(View view){ myBluetoothAdapter.disable(); text.setText("Status: Disconnected"); Toast.makeText(getApplicationContext(),"Bluetooth turned off", Toast.LENGTH_LONG).show(); } protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); unregisterReceiver(bReceiver); } }
Esta clase controla la conexión y enviar alerta de notificación si la cartera sale de rango o vuelve en gama.