蓝牙自动输入配对码

 package com.xys.mets.common.bluetooth; /*********************************** * 蓝牙配对函数 * **************/ import java.lang.reflect.Field; import java.lang.reflect.Method; import android.bluetooth.BluetoothDevice; import android.util.Log; public class ClsUtils { /** * 涓庤澶囬厤瀵�鍙傝�婧愮爜锛歱latform/packages/apps/Settings.git * /Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java */ static public boolean createBond(Class btClass, BluetoothDevice btDevice) throws Exception { Method createBondMethod = btClass.getMethod("createBond"); Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice); return returnValue.booleanValue(); } /** * 涓庤澶囪В闄ら厤瀵�鍙傝�婧愮爜锛歱latform/packages/apps/Settings.git * /Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java */ static public boolean removeBond(Class btClass, BluetoothDevice btDevice) throws Exception { Method removeBondMethod = btClass.getMethod("removeBond"); Boolean returnValue = (Boolean) removeBondMethod.invoke(btDevice); return returnValue.booleanValue(); } static public boolean setPin(Class btClass, BluetoothDevice btDevice, String str) throws Exception { try { Method removeBondMethod = btClass.getDeclaredMethod("setPin", new Class[] { byte[].class }); Boolean returnValue = (Boolean) removeBondMethod.invoke(btDevice, new Object[] { str.getBytes() }); Log.e("returnValue", "" + returnValue); } catch (SecurityException e) { // throw new RuntimeException(e.getMessage()); e.printStackTrace(); } catch (IllegalArgumentException e) { // throw new RuntimeException(e.getMessage()); e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return true; } /** * * @param clsShow */ static public void printAllInform(Class clsShow) { try { // 鍙栧緱鎵�湁鏂规硶 Method[] hideMethod = clsShow.getMethods(); int i = 0; for (; i < hideMethod.length; i++) { Log.e("method name", hideMethod[i].getName() + ";and the i is:" + i); } // 鍙栧緱鎵�湁甯搁噺 Field[] allFields = clsShow.getFields(); for (i = 0; i < allFields.length; i++) { Log.e("Field name", allFields[i].getName()); } } catch (SecurityException e) { // throw new RuntimeException(e.getMessage()); e.printStackTrace(); } catch (IllegalArgumentException e) { // throw new RuntimeException(e.getMessage()); e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

 

使用方法:

 

 
 public static boolean pair(String strAddr, String strPsw){
   boolean result=false;
   BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
   
   
   bluetoothAdapter.cancelDiscovery();
   
   
   if(!bluetoothAdapter.isEnabled()){
    bluetoothAdapter.enable(); 
   }
  
   if(!BluetoothAdapter.checkBluetoothAddress(strAddr)){     //检查蓝牙地址是否有效
    
    Log.d("mylog","devAdd un effient!");
   }
   
   BluetoothDevice device = bluetoothAdapter.getRemoteDevice(strAddr);  
  
   if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
     try {
     ClsUtils.setPin(device.getClass(), device, strPsw);    //手机和蓝牙采集器配对
     ClsUtils.createBond(device.getClass(), device);
     remoteDevice = device;           //配对完毕就把这个设备对象传给全局的remoteDevice
     result=true;
    } catch (Exception e) {
     // TODO Auto-generated catch block
     Log.d("mylog","setPiN failed!");
     e.printStackTrace();
    } //
    
   }
   else 
   {
    remoteDevice = device; //如果绑定成功,就直接把这个设备对象传给全局的remoteDevice
    result=true;
   }
  return result;
 }

 

你可能感兴趣的:(蓝牙自动输入配对码)