|
JAVA Micro Edition Низкоуровневое программирование мобильных телефонов. |
30.10.2008, 20:07
|
#16
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Сжать текст смс средствами J2me
То есть никакой универсальности, в общем, это очень неудобно.
|
Ну а ты как думал?
совет: http://forum.boolean.name/showpost.p...7&postcount=30
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
30.10.2008, 20:21
|
#17
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Сжать текст смс средствами J2me
Нифига ничего не понял =(
В джаве нет прямого доступа к отправщику смс. Текст смс скармливать надо в любом случае в юникоде. И если в тексе символы позволяют быть закодированными семью битами, то телефон сам уже кодирует. То есть видимо я пытаюсь ESC символ скормить, но он не может быть в одиночку использован при семибитном кодировании, поэтому телефон решает, что нужно текст использовать в юникоде. Возможно, это ещё от телефона и/или джава машины зависит. Блин... Что же делать-то? Твой совет я нифига не понял =(
|
(Offline)
|
|
31.10.2008, 02:46
|
#18
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Сжать текст смс средствами J2me
Сделал вместо ESC тильду. Первые тесты показали неплохой результат. Пример:
"Штиль - ветер молчит,
Упал белой чайкой на дно.
Штиль - наш корабль забыт,
Один в мире, скованном сном.
Между всех времён
Без имён и лиц
Мы уже не ждём,
Что проснётся бриз!"
Данный текст, набранный в смс, занимает три смс сообщения. А этот же текст, пропущенный через мою функцию выглядит примерно так:
"цa_$n,m0ΔTBPX0q5dΦk/r3їШXи)3Dl.@I#DlΞ$їC'7WyB"йЦYZaPш,Λ9@@%ЦXЖ@Πi5WxpB щlй0aи$uXDQїЎ
Ξ8eD&NΘЬС?Fйш_жЎHE+0ΦЈ& ~/p_#lΔ2ЈДи,Π!5?F~XL0ДщEXΣ¤ҐΞkцС_kмPЖDlиH§XйЈЈv"
И ВЛАЗИТ В ОДНО СМС!!!
Я мега крут!
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Phantom за это полезное сообщение:
|
|
31.10.2008, 02:49
|
#19
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Сжать текст смс средствами J2me
Форум испаганил почему-то некоторые символы. Непонятно откуда появились всякие "ц", "Д", "ш", "ж"... Это я к тому, что моя функция выдаёт нормальные символы, которые не переключают смс-редактор в режим юникода, это всё баг форума. =)
|
(Offline)
|
|
31.10.2008, 17:29
|
#20
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Сжать текст смс средствами J2me
Так-так. Что придпримите далее?
*читаю, как начуно-популярный сериал смотрю - все серии*
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
31.10.2008, 18:04
|
#21
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Сжать текст смс средствами J2me
Ой, ёлки, сколько спасибок поставили. Вы это погорячились. Я пока на PHP написал сам алгоритм, так как в нём много лучше ориентируюсь, чем в Java. Ещё предстоит довести до ума и портировать на Java. Так что ещё куча вопросов, наверно, возникнет. =)
|
(Offline)
|
|
04.11.2008, 03:45
|
#22
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Сжать текст смс средствами J2me
Всё. Готово практически. Осталось пару строк в класс вписать! Вот только не знаю как это делается. Нужно в цикле пробежать строку посимвольно, получая код очередного символа. Из потока я умею побайтно читать, а вот как из строки посимвольно - не знаю.
|
(Offline)
|
|
04.11.2008, 15:17
|
#23
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Сжать текст смс средствами J2me
s.charAt(int)
а заменять удобно с помощью s.replace(char, char)
|
(Offline)
|
|
04.11.2008, 20:32
|
#24
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Сжать текст смс средствами J2me
Сорри, я уже сделал, но забыл отписаться =) Только пока не работает как надо. Сейчас вот до ума довожу.
|
(Offline)
|
|
24.12.2008, 21:49
|
#25
|
Знающий
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений (для 123 пользователей)
|
Ответ: Сжать текст смс средствами J2me
Phantom_wc - я когда-то делал аналогичный алгоритм, но в MIDletPascal, неохота переписывать на java,.. думаю получилось просто это можно взять за основу, и добавить в алгоритм кодирования обход недопустимых символов..
var
buf : array[0..4096] of boolean;
bit : array[0..7] of integer;
max : integer;
id_in,id_out,id_dec : integer;
convCmd : command;
function ansiToUtf(s : string) : string;
var {rus_ansi to UTF8}
i,ch : integer;
begin
for i := 0 to length(s)-1 do
begin
ch := ord(getChar(s,i)) and 255;
if (ch>=192) then s := setChar(s,chr(ch+848),i);
if (ch=168) then s := setChar(s,chr($0401),i);
if (ch=184) then s := setChar(s,chr($0451),i);
end;
ansiToUtf := s;
end;
function utfToAnsi(s : string) : string;
var {UTF8 to rus_ansi}
i,ch : integer;
begin
for i := 0 to length(s)-1 do
begin
ch := ord(getChar(s,i));
if (ch>255) then s := setChar(s,chr(ch-848),i);
if (ch=$0401) then s := setChar(s,chr(168),i);
if (ch=$0451) then s := setChar(s,chr(184),i);
end;
utfToAnsi := s;
end;
procedure toBits(s : string; maxb : integer);
var
i,j,b : integer;
begin
max:=0;
for i:=0 to 4096 do buf[i]:=false;
for i:=0 to length(s)-1 do
begin
b:=ord(getChar(s,i));
for j:= maxb{7} downto 0 do
begin
if (b and bit[j])<>0 then buf[max]:=true;
max:=max+1;
end;
end;
end;
function fromBits(maxb : integer) : string;
var
i,j,b : integer;
s : string;
begin
i:=0;
s:='';
while i<max do
begin
b:=0;
j:=maxb;
while (i<max) and (j>=0) do
begin
if buf[i] then b:=(b or bit[j]);
i:=i+1;
j:=j-1;
end;
s:=s+chr(b);
end;
fromBits:=s;
end;
begin
bit[0]:=1;
bit[1]:=2;
bit[2]:=4;
bit[3]:=8;
bit[4]:=16;
bit[5]:=32;
bit[6]:=64;
bit[7]:=128;
showForm;
id_in := formAddTextField('IN', 'Привет! это тестовая программка от arT (c). e-mail: [email protected]', 512, TF_ANY);
convCmd := createCommand('next', CM_OK, 1);
addCommand(convCmd);
repeat delay(100); until getClickedCommand=convCmd;
removeCommand(convCmd);
//////
toBits(utfToAnsi(formGetText(id_in)),7);
id_out := formAddTextField('OUT', fromBits(6), 1024, TF_ANY);
//////
toBits(utfToAnsi(formGetText(id_out)),6);
id_dec := formAddTextField('DECODE', ansiToUtf(fromBits(7)), 512, TF_ANY);
repeat delay(100); until false;
end.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.12.2008, 07:43
|
#26
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Сжать текст смс средствами J2me
Ы. Да я уже сделал =) Совсем забыл, что у меня тут тема есть на эту тему =) Оказалось в итоге, что зря я мучился, биллинг запретил отправку смс с подменой номера :-(
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:14.
|