рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!
рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореЗрд░реЗ рдкрд╛рд╕ рдмреЗрд▓реНрдЬрд┐рдпрдо рдХреА рдПрдХ рдЕрджреНрднреБрдд рд╡реЛрд▓реНрд╡реЛ рд╡реА 50 рдХрд╛рд░ рдереАред рдСрди-рдмреЛрд░реНрдб рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рд░реЗрдбрд┐рдпреЛ рдХреЛ рдЕрдзрд┐рдХреГрдд рдбреАрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд░реВрд╕реА рдореЗрдВ рдлреНрд▓реИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдорд╛рдирдХ рд╕реНрдкреАрдХрд░рдлреЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдлреЛрди рдХреА рдиреЛрдЯрдмреБрдХ рд╕реЗ рд░реВрд╕реА рдирд╛рдореЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде, рдкрд░реЗрд╢рд╛рдиреА рд╕рд╛рдордиреЗ рдЖрдИ: рд╕рднреА рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгреЛрдВ рдХреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ CyanogenMod 11 рдХреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рд╕реИрдорд╕рдВрдЧ рдЧреИрд▓реЗрдХреНрд╕реА S3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ Bluetooth.apk рдХреЛ рдЯреНрд╡рд┐рд╕реНрдЯ рдХрд░рдирд╛ рдерд╛ рдХрд┐ рдореИрдВ рдХреЙрд▓рд░ рдХрд╛ рдирд╛рдо рджреЗрдЦ рд╕рдХреВрдВред
рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЕрдзреНрдпрдпрди рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХрд╛рд░реЗрдВ рдлреЛрди рдмреБрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ:
- PBAP - рдлреЛрди рдмреБрдХ рдПрдХреНрд╕реЗрд╕ рдкреНрд░реЛрдлрд╛рдЗрд▓
- рдПрдЪрдПрдлрдкреА - рд╣реИрдВрдбреНрд╕рдлреНрд░реА рдкреНрд░реЛрдлрд╛рдЗрд▓
рдкрд╣рд▓рд╛ рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рд╣реИ рдФрд░ vCard рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рд╕рдВрдкрд░реНрдХ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ: рдирд╛рдо, рдЙрдкрдирд╛рдо, рд╕рдВрдЧрдарди, рдИрдореЗрд▓ рдкрддрд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рджреВрд╕рд░рд╛ рдХреЗрд╡рд▓ рдирд╛рдо, рдлреЛрди рдФрд░ рдиреЛрдЯрдмреБрдХ рдЖрдИрдбреА рднреЗрдЬрддрд╛ рд╣реИред
рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдХреЗ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░реА рдХрд╛рд░ рдПрдЯреА рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдЪрдПрдлрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ /
packages/apps/apps/Bluaxy/src/com/android/bluaxy/hfp/AtPhonebook.javaрдПрдХ рдЫреЛрдЯреА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ
int processCpbrCommand (BluetoothDevice рдбрд┐рд╡рд╛рдЗрд╕) рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирддреА рд╣реИ:
record = "+CPBR: " + index + ",\"" + number + "\"," + regionType + ",\"" + name + "\""; record = record + "\r\n\r\n"; atCommandResponse = record; log("processCpbrCommand - atCommandResponse = "+atCommandResponse); mStateMachine.atResponseStringNative(atCommandResponse, getByteAddress(device));
рдпрд╣ рдпрд╣рд╛рдВ рд╣реИ рдХрд┐ рдкреНрд░реЗрд╖рд┐рдд рдирд╛рдо рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ AtPhonebook рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд▓рд┐рдкреНрдпрдВрддрд░рдг рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдг рдХреЛ рдЬреЛрдбрд╝рд╛:
private static final String[] charTable = new String[65536]; static { charTable[''] = "A"; charTable[''] = "B"; charTable[''] = "V"; charTable[''] = "G"; charTable[''] = "D"; charTable[''] = "E"; charTable[''] = "E"; charTable[''] = "ZH"; charTable[''] = "Z"; charTable[''] = "I"; charTable[''] = "I"; charTable[''] = "K"; charTable[''] = "L"; charTable[''] = "M"; charTable[''] = "N"; charTable[''] = "O"; charTable[''] = "P"; charTable[''] = "R"; charTable[''] = "S"; charTable[''] = "T"; charTable[''] = "U"; charTable[''] = "F"; charTable[''] = "H"; charTable[''] = "C"; charTable[''] = "CH"; charTable[''] = "SH"; charTable[''] = "SH"; charTable[''] = "'"; charTable[''] = "Y"; charTable[''] = "'"; charTable[''] = "E"; charTable[''] = "U"; charTable[''] = "YA"; for (int i = 0; i < charTable.length; i++) { char idx = (char) i; char lower = new String(new char[] {idx}).toLowerCase().charAt(0); if (charTable[i] != null) { charTable[lower] = charTable[i].toLowerCase(); } } } public static String toTranslit(String text) { char charBuffer[] = text.toCharArray(); StringBuilder sb = new StringBuilder(text.length()); for (char symbol : charBuffer) { String replace = charTable[symbol]; sb.append(replace == null ? symbol : replace); } return sb.toString(); }
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рднреЗрдЬрддреЗ рд╕рдордп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
record = "+CPBR: " + index + ",\"" + number + "\"," + regionType + ",\"" + toTranslit(name) + "\""; record = record + "\r\n\r\n";
рдЕрдм рд╡рд╣ рд╕рдм рд╢реЗрд╖ рд╣реИ рдЬреЛ рдмреНрд▓реВрдЯреВрде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реАрдПрдо рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИред
рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд╛рд▓реВ рдерд╛ред рдЕрдм рдиреЛрдЯрдмреБрдХ рд╕реЗ рд╕рднреА рдирд╛рдо рд▓рд┐рдкреНрдпрдВрддрд░рдг рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдПрдХ рдЯрд░реНрдирдХреА рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреАрдмреАрдПрдкреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ рд╡реЛрд▓реНрд╡реЛ рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рд╕реА 60ред
рдЗрд╕ рдХрд╛рд░ рдореЗрдВ рд╣реИрдВрдбреНрд╕-рдлреНрд░реА рдореЙрдбреНрдпреВрд▓ CP1251 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдлреЛрди рдХрд╛ рдорд╛рдирдХ рдмреНрд▓реВрдЯреВрде рдпреВрдмреАрдПрдл -8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреАрдмреАрдПрдкреА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк BluetoothPbapVcardComposer рд╡рд░реНрдЧ (
/packages/apps/Bluaxy/src/com/android/bluaxy/pbap/BluaxyPbapVcardComposer.java ) рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ
public BluetoothPbapVcardComposer(final Context context, final int vcardType, long filter, final boolean careHandlerErrors) { super(context, vcardType, "CP1251", careHandlerErrors); mVCardType = vcardType; mCharset = "CP1251"; mFilter = filter; }
рдпрд╣рд╛рдВ рдЖрдк рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рд▓рд┐рдкреНрдпрдВрддрд░рдг рдЪрд╛рд▓ рдХреЛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдБ, рдЖрдкрдХреЛ vCard (buildVC рдлрд╝рдВрдХреНрд╢рди) рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдПрдХ XC60 рдпрд╛ рдЕрдиреНрдп рдорд╢реАрди рдирд╣реАрдВ рд╣реИ, рдЬреЛ PBAP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдореИрдВрдиреЗ Bluetooth.apk рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд░рдЦреЗ
- рдЕрдиреБрд╡рд╛рдж HFP ( http://yadi.sk/d/QlGKIPfXLMNXx )
- CP1251 PBAP ( http://yadi.sk/d/qrbUVrtuLMRan )
рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрдкреАрдХрд░рдлреЛрди рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдХрд╛рд░реЛрдВ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреА рднреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд░реВрд╕реА рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВред