📄 utility.java
字号:
*/
public static String minorToName(int d, int m) {
if (d == 0x0000)
return "Miscellaneous";
else if (d == 0x0100 && m == 0x00)
return "Uncategorized";
else if (d == 0x0100 && m == 0x04)
return "Workstation";
else if (d == 0x0100 && m == 0x08)
return "Server";
else if (d == 0x0100 && m == 0x0C)
return "Laptop";
else if (d == 0x0100 && m == 0x10)
return "HandheldPcPda";
else if (d == 0x0100 && m == 0x14)
return "PalmPcPda";
else if (d == 0x0100 && m == 0x18)
return "Wearable";
else if (d == 0x0200 && m == 0x00)
return "Uncategorized";
else if (d == 0x0200 && m == 0x04)
return "Cellular";
else if (d == 0x0200 && m == 0x08)
return "Cordless";
else if (d == 0x0200 && m == 0x0C)
return "SmartPhone";
else if (d == 0x0200 && m == 0x10)
return "Modem";
else if (d == 0x0200 && m == 0x14)
return "ISDN";
else if (d == 0x0300 && m == 0x00)
return "FullyAvailable";
else if (d == 0x0300 && m == 0x20)
return "1to17%Utilized";
else if (d == 0x0300 && m == 0x40)
return "17to33%Utilized";
else if (d == 0x0300 && m == 0x60)
return "33to50%Utilized";
else if (d == 0x0300 && m == 0x80)
return "50to67%Utilized";
else if (d == 0x0300 && m == 0xA0)
return "67to83%Utilized";
else if (d == 0x0300 && m == 0xC0)
return "83to100%Utilized";
else if (d == 0x0300 && m == 0xE0)
return "NoServiceAvailable";
else if (d == 0x0400 && m == 0x00)
return "Uncategorized";
else if (d == 0x0400 && m == 0x04)
return "Headset";
else if (d == 0x0400 && m == 0x08)
return "HandsFree";
else if (d == 0x0400 && m == 0x0C)
return "(Reserved)";
else if (d == 0x0400 && m == 0x10)
return "Microphone";
else if (d == 0x0400 && m == 0x14)
return "Loudspeaker";
else if (d == 0x0400 && m == 0x18)
return "Headphones";
else if (d == 0x0400 && m == 0x1C)
return "PortableAudio";
else if (d == 0x0400 && m == 0x20)
return "CarAudio";
else if (d == 0x0400 && m == 0x24)
return "SetTopBox";
else if (d == 0x0400 && m == 0x28)
return "HiFiAudioDevice";
else if (d == 0x0400 && m == 0x2C)
return "VCR";
else if (d == 0x0400 && m == 0x30)
return "VideoCamera";
else if (d == 0x0400 && m == 0x34)
return "Camcorder";
else if (d == 0x0400 && m == 0x38)
return "VideoMonitor";
else if (d == 0x0400 && m == 0x3C)
return "VideoDisplayAndLoudspeaker";
else if (d == 0x0400 && m == 0x40)
return "VideoConferencing";
else if (d == 0x0400 && m == 0x44)
return "(Reserved)";
else if (d == 0x0400 && m == 0x48)
return "GamingToy";
else if (d == 0x0500 && m == 0x00)
return "Uncategoried";
else if (d == 0x0500 && m == 0x04)
return "Joystick";
else if (d == 0x0500 && m == 0x08)
return "Gamepad";
else if (d == 0x0500 && m == 0x0C)
return "RemoteControl";
else if (d == 0x0500 && m == 0x10)
return "SensingDevice";
else if (d == 0x0500 && m == 0x14)
return "DigitizerTablet";
else if (d == 0x0500 && m == 0x18)
return "CardReader";
else if (d == 0x0500 && m == 0x40)
return "Keyboard";
else if (d == 0x0500 && m == 0x80)
return "PointingDevice";
else if (d == 0x0500 && m == 0xC0)
return "KeyboardPointingDevice";
else if (d == 0x0600 && m == 0x10)
return "Display";
else if (d == 0x0600 && m == 0x20)
return "Camera";
else if (d == 0x0600 && m == 0x40)
return "Scanner";
else if (d == 0x0600 && m == 0x80)
return "Printer";
else if (d == 0x1F00)
return "Uncategorized(" + m + ")";
else
return "UnknownMinorDevice(" + m + ")";
}
public static String[] majorServiceToName(int d) {
Vector v = new Vector();
if ((d & 0x2000) > 0)
v.addElement("LimitedDiscoverableMode");
if ((d & 0x10000) > 0)
v.addElement("Positioning");
if ((d & 0x20000) > 0)
v.addElement("Networking");
if ((d & 0x40000) > 0)
v.addElement("Rendering");
if ((d & 0x80000) > 0)
v.addElement("Capturing");
if ((d & 0x100000) > 0)
v.addElement("ObjectTransfer");
if ((d & 0x200000) > 0)
v.addElement("Audio");
if ((d & 0x400000) > 0)
v.addElement("Telephony");
if ((d & 0x800000) > 0)
v.addElement("Information");
String[] str = new String[v.size()];
v.copyInto(str);
return str;
}
public static String attrTypeToName(int type) {
if (type == DataElement.DATALT) {
return "DATATL";
} else if (type == DataElement.DATSEQ) {
return "DATSEQ";
} else if (type == DataElement.U_INT_4) {
return "U_INT_4";
} else if (type == DataElement.U_INT_1) {
return "U_INT_1";
} else if (type == DataElement.U_INT_2) {
return "U_INT_2";
} else if (type == DataElement.INT_1) {
return "INT_1";
} else if (type == DataElement.INT_2) {
return "INT_2";
} else if (type == DataElement.INT_4) {
return "INT_4";
} else if (type == DataElement.INT_8) {
return "INT_8";
} else if (type == DataElement.UUID) {
return "UUID";
} else if (type == DataElement.U_INT_8) {
return "U_INT_8";
} else if (type == DataElement.U_INT_16) {
return "U_INT_16";
} else if (type == DataElement.INT_16) {
return "INT_16";
} else if (type == DataElement.STRING) {
return "STRING";
} else if (type == DataElement.URL) {
return "URL";
} else if (type == DataElement.BOOL) {
return "BOOL";
} else if (type == DataElement.NULL) {
return "NULL";
} else {
return "UNKNOWN_TYPE";
}
}
public static String toHexString(int i) {
String s = Integer.toHexString(i); // convert base-10 to base-16 (HEX)
if (s.length() == 1)
return "0x000" + s;
else if (s.length() == 2)
return "0x00" + s;
else if (s.length() == 3)
return "0x0" + s;
else if (s.length() == 4)
return "0x" + s;
else
return s;
}
public static String toHexString(byte[] b) {
String v = "";
for (int i = 0; i < b.length; i++) {
String s = Integer.toHexString(b[i]);
// special case, since Integer.toHexString( 0xFF ) = 0xFFFFFFFF (32 bits)
// and we don't want that many FF, so we handle this case manually
if (b[i] == 0xFF)
s = "FF";
if (s.length() == 1)
s = "0" + s; // make '4' -> '04'
v += s;
}
return "0x" + v;
}
public static String toHexString(long l) {
byte[] b = new byte[8]; // long = 64 bits = 8 bytes
b[0] = (byte) (l >> 56);
b[1] = (byte) (l >> 48);
b[2] = (byte) (l >> 40);
b[3] = (byte) (l >> 32);
b[4] = (byte) (l >> 24);
b[5] = (byte) (l >> 16);
b[6] = (byte) (l >> 8);
b[7] = (byte) (l);
// reduce the number of leading '0'
// we reduce at most 6 byte, so we got at lesat 2 byte left
// 0x000000000000ABCD -> 0xABCD
// 0x00000000000000AB -> 0x00AB (at lesat 2 byte left, it look better with 2 bytes)
// 0x00000CD0000000AB -> 0xCD0000000AB
int len = 8;
for (int i = 0; i < 6; i++) {
if (b[i] == 0)
len--;
else
break; // we break at the first non-zero
}
byte[] b2 = new byte[len];
System.arraycopy(b, 8 - len, b2, 0, len);
return toHexString(b2);
}
/*
public static void printObexHeaderSet( HeaderSet h )
{
try {
System.out.println("Print OBEX Header");
int[] ids = h.getHeaderList();
for (int i = 0; i < ids.length; i++) {
System.out.println("ID[" + ids[i] + "]: " + h.getHeader(ids[i]));
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
*/
public static String getSearchServicesResultMessage(int returnCode) {
String message = null;
if (returnCode == DiscoveryListener.SERVICE_SEARCH_DEVICE_NOT_REACHABLE) {
message = "Device not reachable";
}
else if (returnCode == DiscoveryListener.SERVICE_SEARCH_NO_RECORDS) {
message = "Service not available";
}
else if (returnCode == DiscoveryListener.SERVICE_SEARCH_COMPLETED) {
message = "Service search completed";
}
else if (returnCode == DiscoveryListener.SERVICE_SEARCH_TERMINATED) {
message = "Service search terminated";
}
else if (returnCode == DiscoveryListener.SERVICE_SEARCH_ERROR) {
message = "Service search error";
}
return message;
}
public static String getInquiryCompletedResultMessage(int returnCode) {
String message = null;
if (returnCode == DiscoveryListener.INQUIRY_COMPLETED) {
message = "Inquiry completed";
} else if (returnCode == DiscoveryListener.INQUIRY_TERMINATED) {
message = "Inquiry terminated";
} else if (returnCode == DiscoveryListener.INQUIRY_ERROR) {
message = "Inquiry error";
}
return message;
}
public static void waitBeforeReceiveData(int waitBeforeReceiveData) {
if (waitBeforeReceiveData > 0) {
try {
Thread.sleep(waitBeforeReceiveData);
} catch (InterruptedException e) {
log.warn("waitBeforeReceiveData: InterruptedException: " + e.getMessage());
}
}
}
/** Sends a message over L2CAP */
public static void sendMessage(L2CAPConnection conn, String message) {
//log.debug("sendMessage: sending " + message);
try {
byte[] data = message.getBytes();
int transmitMTU = conn.getTransmitMTU();
if(data.length <= transmitMTU){
((L2CAPConnection) conn).send(data);
log.debug("sendMessage: sent " + message + ", length = " + data.length + ", data = " + data + ", MTU = " + transmitMTU);
}else {
log.error("sendMessage: message too long (" + data.length + " bytes): " + message);
}
} catch(IOException ioe) {
log.error("sendMessage: IOException: " + ioe.getMessage());
}
}
/** Reads a message over L2CAP */
public static String readMessage(L2CAPConnection conn, int waitBeforeReceiveData){
String message = null;
try{
waitBeforeReceiveData(waitBeforeReceiveData);
int receiveMTU = ((L2CAPConnection) conn).getReceiveMTU();
byte[] data = new byte[receiveMTU];
int length = ((L2CAPConnection) conn).receive(data);
message = new String(data, 0, length);
log.debug("readMessage: received " + message + ", length = " + length + ", data = " + data + ", MTU = " + receiveMTU);
}catch(IOException e){
log.error("readMessage: IOException: " + e.getMessage());
}
return message;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -