@Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); if (mReceiver != null) { unregisterReceiver(mReceiver); // mReceiver = null; } if (mReceiver2 != null) { unregisterReceiver(mReceiver2); // mReceiver2 = null; } BluetoothAdapter mBluetoothAdapter1 = BluetoothAdapter.getDefaultAdapter(); mBluetoothAdapter1.cancelDiscovery(); // mBluetoothAdapter1.disable(); // mBluetoothAdapter1.enable(); MainActivity.VAR_BLUETOOTH_DISCOVERY.open(); }
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.search_inof); Intent data = this.getIntent(); final String name = data.getStringExtra(SearchDevice.DEV_NAME); final String macInfo = data.getStringExtra(SearchDevice.DEV_MAC); photoPath = data.getStringExtra(SearchDevice.DEV_IMAGENAME); if (null != photoPath) { Uri path = Uri.parse(photoPath); devicePic = (ImageView) findViewById(R.id.imageview1); devicePic.setImageURI(path); } TextView tvName = (TextView) findViewById(R.id.tvSearchName); // distance_tv = (TextView)findViewById(R.id.tvSearchDistanceValue); // signalView = (ImageView)findViewById(R.id.imageView); // signal none-dot-part image view signal_ndot_iv = (ImageView) findViewById(R.id.imageView); // TextView mac_tv = (TextView)findViewById(R.id.mac_tv); // mac_tv.setText(macInfo); // dot image view dot_iv = (ImageView) findViewById(R.id.signal_dot); dot_iv.setImageResource(R.drawable.signal_dot_0); animate(dot_iv, imagesToShow, 0, true); tvName.setText(name); final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); // final TextView tvRSSI = (TextView)findViewById(R.id.tvSearchRSSIValue); // tvRSSI.setText("Acquiring RSSI value..."); MainActivity.VAR_BLUETOOTH_DISCOVERY.close(); mBluetoothAdapter.cancelDiscovery(); IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); /** Receiver #1 handles RSSI and Signal View */ mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub 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); if (device.getAddress() != null && device.getAddress().equals(macInfo)) { if (device.getBondState() != BluetoothDevice.BOND_BONDED) { // 信号强度。 short rssi = intent.getExtras().getShort(BluetoothDevice.EXTRA_RSSI); float newRssi = calculateFinalRssi(rssi); float dis = calculateDistance(newRssi); // tvRSSI.setText(String.valueOf(rssi)); /** Graphic Part */ if (newRssi < -80) { imagesToShow[0] = R.drawable.signal_dot_1; signal_ndot_iv.setImageResource(R.drawable.signal_1); // distance_tv.setText(dis+" cm"); } else if (newRssi < -60) { imagesToShow[0] = R.drawable.signal_dot_2; signal_ndot_iv.setImageResource(R.drawable.signal_2); // distance_tv.setText(dis+" cm"); } else if (newRssi < -40) { imagesToShow[0] = R.drawable.signal_dot_3; signal_ndot_iv.setImageResource(R.drawable.signal_3); // distance_tv.setText(dis+" cm"); } else if (newRssi < 0) { imagesToShow[0] = R.drawable.signal_dot_4; signal_ndot_iv.setImageResource(R.drawable.signal_4); // distance_tv.setText(dis+" cm"); } mBluetoothAdapter.cancelDiscovery(); } } } } }; registerReceiver(mReceiver, filter); IntentFilter filter2 = new IntentFilter(); filter2.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); /** Receiver #2 Handles end of receiving */ mReceiver2 = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) { mBluetoothAdapter.startDiscovery(); } } }; registerReceiver(mReceiver2, filter2); if (!mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.enable(); } mBluetoothAdapter.startDiscovery(); }