ورود

View Full Version : شمارنده ی متن پیامک در اندروید



spalbs
شنبه 12 مهر 1393, 10:31 صبح
با سلام خدمت دوستان

دنبال سورسی واسه شمارش متن پیامک میگردم . مثلا یعداد صفحات اس ام ای و کاراکترهای باقی مونده.
چنتا الگوریتم شمارش رو دیدم ولی هرکاری کردم درست پیاده سازی نشد
مثلا این نمونه کد php که مال یکی از شرکتای ارسال پیامک انبود هست رو به جاوا تبدیل کردم ولی بازم توی شمارش مشکل داره و دقیق نیست :




function checkSMSLength(textarea, counterSpan, event) {
var text = textarea.value;
var ucs2 = text.search(/[^\x00-\x7D]/) != -1
var unitLength = ucs2 ? 70 : 160;
if (text.length > unitLength) {
if (ucs2)
unitLength = unitLength - 4;
else
unitLength = unitLength - 8;
}
var count = Math.max(Math.ceil(text.length / unitLength), 1);
counterSpan.innerHTML = (unitLength * count - text.length) + '(' + count')';
}





واین هم کدی که خودم از روی کد php به جاوا تبدیلش کردم :




String text =EtMsMessage.getText().toString();
Boolean ucs2=false;

for (char character : text.toCharArray())
{
if (character >= 0x600 && character <= 0x6ff)
ucs2=true;
if (character >= 0x750 && character <= 0x77f)
ucs2=true;
if (character >= 0xfb50 && character <= 0xfc3f)
ucs2=true;
if (character >= 0xfe70 && character <= 0xfefc)
ucs2=true;
}

int unitLength=ucs2 ? 70 : 160;


if (text.length > unitLength)
{
if (ucs2)
unitLength = unitLength - 4;
else
unitLength = unitLength - 8;
}
intcount = (int)Math.max(Math.ceil(text.length / unitLength), 1);

TvMS.setText("("+Integer.toString(count)+")"+Integer.toString(unitLength * count - text.length));




ولی هنوزم مشکل داره توی شمارش و دقیق عمل نمیکنه.

دوستان کسی میتونه کمکی کنه تو این زمینه؟
واینکه آیا سورسی مجود هست واسه کانتر متن پیامک؟

اینم لینک سوالم توی استک آورفلو (http://stackoverflow.com/questions/26074310/sms-text-message-counting)

باتشکر فراوان

spalbs
یک شنبه 13 مهر 1393, 00:55 صبح
با کمک یکی از دوستان بلاخره فهمیدم راهش رو :




int sms_count=0,sms_width,sms_remain_to_next,sms_encod ing;
int[] ii = SmsMessage.calculateLength(text, false);
sms_count=ii[0];
sms_width=ii[1];
sms_remain_to_next=ii[2];
sms_encoding=ii[3];

TvMS.setText("("+Integer.toString(sms_count)+")"+sms_remain_to_next);

aliblk10
یک شنبه 13 مهر 1393, 22:46 عصر
دوست عزیز توجه کن که تو متون فارسی در پیامک شمارش صفحات تفاوت داره
در پیامک هر 64 کاراکتر فارسی یک صفحه محاسبه میشه غیر از صفحه اول که 70 کاراکتره.