Предлагаю здесь выкладывать для свободного доступа и копирования рукописные классы/куски кода
которые понадобятся для кого либо
Если вы жадный то можете не выкладывать
Желательно также делать описание что это делает
Код
public class Metods {
/** Creates a new instance of Metods */
public Metods() {
}
public static byte[] convertUTFStringToByteArray(String s) {
if (s ==null) return null;
char[] ch = s.toCharArray();
byte[] b = new byte[ch.length*2];
for (int i=0;i<ch.length;i++){
byte[] r = convertCharToByteArray(ch[i]);
b[i*2] = r[0];
b[i*2+1] = r[1];
}
return b;
}
private static byte[] convertCharToByteArray(char ch){
byte[] b = new byte[2];
b[0] = (byte)((ch>>8)&0xff);
b[1] = (byte)((ch)&0xff);
return b;
}
private static char convertByteArrayToChar(byte[] b,int off){
char ch;
int ch1 = (int)b[off]<<8;
int ch2 = (int)b[off+1];
ch = (char)(ch1|ch2);
return ch;
}
public static String convertByteArrayToUTFString(byte[] b) {
char[] ch = new char[b.length/2];
for (int i=0;i<ch.length;i++){
ch[i] = convertByteArrayToChar(b,i*2);
}
return String.valueOf(ch);
}
}
byte[] Metods.convertUTFStringToByteArray(String s)
String Metods.convertByteArrayToUTFString(byte[] B )
функции для преобразования UTF строк в байтовый массив и обратно (без потерь)
Еще Вращает картинку на 90 градусов по часовой стрелке (MIDP 2.0)
Код
public static Image rotateImage(Image img){
if (img==null){
return null;
}
Image data = img;
int h = data.getHeight();
int w = data.getWidth();
int a[] = new int[h*w];
data.getRGB(a,0,w,0,0,w,h);
int[] b = new int[h*w];
for (int i=0;i<a.length;i++){
int k = h*(i%w)+(h-1) -i/w;
b[k] = a[i];
}
data = Image.createRGBImage(b,h,w,true);
return data;
}
Очень хорошее начинание.
Давно бы уже придумали такую темку, Lenota лови +++ =)
Тема закреплена.
Флуд будет жестоко удаляться.
Никаких вопросов - просто постим исходники классов.
Я хочу предложить вам другой способ разворачивания картинки. Незнаю, возможно он более трудоёмкий исходя из свободной памяти, но работает нормально.
И так вот он:
Код
public Image MV_RotareImage(Image IM_ToRotare, int Transform){
Image TempImg = Image.createImage(IM_ToRotare.getWidth(),IM_ToRotare.getHeight());
Graphics gGraphics = TempImg.getGraphics();
Sprite sSprite = new Sprite(IM_ToRotare);
sSprite.paint(gGraphics);
IM_ToRotare = Image.createImage(TempImg,0,0,IM_ToRotare.getWidth(),IM_ToRotare.getHeight(),Transform);
TempImg = null;
gGraphics = null;
sSprite = null;
return IM_ToRotare;
}
Использует библиотеки:
javax.microedition.lcdui.Image;
javax.microedition.lcdui.Graphics;
javax.microedition.lcdui.game.Sprite;
Transform - это одно из этих значений:
Sprite.TRANS_ROT90
Sprite.TRANS_ROT180
Sprite.TRANS_ROT270
Sprite.TRANS_ROT360
Так же если вы посмотрите в класс Sprite то увидите, что Transform может принимать значения эффекта отражения и т.п.
Ну и еще один метод копирования файла кусками:
Код
public static void copyFile(String MV_sFileFrom, String MV_sFileTo, int MV_iStreamLength){
if(MV_sFileFrom.equals(MV_sFileTo)) return;
FileConnection MV_FMM_ConnectionIn = null;
FileConnection MV_FMM_ConnectionOut = null;
DataInputStream MV_FMM_DIS = null;
DataOutputStream MV_FMM_DOS = null;
try{
MV_FMM_ConnectionIn = (FileConnection)Connector.open("file://" + MV_sFileFrom, 1);
MV_FMM_DIS = MV_FMM_ConnectionIn.openDataInputStream();
MV_FMM_ConnectionOut = (FileConnection)Connector.open("file://" + MV_sFileTo, 3);
if(MV_FMM_ConnectionOut.exists()) MV_FMM_ConnectionOut.delete();
MV_FMM_ConnectionOut.create();
MV_FMM_DOS = MV_FMM_ConnectionOut.openDataOutputStream();
}
catch(Exception MV_Exception){return;}
byte MV_FMM_Bytes[] = null;
int MV_FMM_BytesReaded = 0;
int MV_FMM_TotalBytesReaded = 0;
do{
try{
MV_FMM_Bytes = new byte[MV_iStreamLength];
MV_FMM_BytesReaded = MV_FMM_DIS.read(MV_FMM_Bytes,0,MV_iStreamLength);
if(MV_FMM_BytesReaded > 0){
if(MV_FMM_BytesReaded < MV_iStreamLength){
MV_FMM_DIS.close();
MV_FMM_DIS = MV_FMM_ConnectionIn.openDataInputStream();
MV_FMM_DIS.skip(MV_FMM_TotalBytesReaded);
MV_FMM_Bytes = null;
MV_FMM_Bytes = new byte[MV_FMM_BytesReaded];
MV_FMM_BytesReaded = MV_FMM_DIS.read(MV_FMM_Bytes,0,MV_FMM_BytesReaded);
if(MV_FMM_BytesReaded > 0) MV_FMM_DOS.write(MV_FMM_Bytes, 0, MV_FMM_Bytes.length);
}
else MV_FMM_DOS.write(MV_FMM_Bytes, 0, MV_FMM_Bytes.length);
MV_FMM_TotalBytesReaded += MV_FMM_BytesReaded;
}
MV_FMM_Bytes = null;
}
catch(Exception MV_Exception){return;}
}
while(MV_FMM_BytesReaded > 0);
try{
MV_FMM_DIS.close();
MV_FMM_DIS = null;
MV_FMM_ConnectionIn.close();
MV_FMM_ConnectionIn = null;
MV_FMM_DOS.close();
MV_FMM_DOS = null;
MV_FMM_ConnectionOut.close();
MV_FMM_ConnectionOut = null;
}
catch(Exception MV_Exception){return;}
}
Выдрано из проекта MediaViewer, но я не жадный =)
Использует библиотеки:
java.io.*;
javax.microedition.io.Connector;
javax.microedition.io.file.FileConnection;
MV_sFileFrom - путь к файлу откуда копируем
MV_sFileTo - путь к файлу куда копируем
MV_iStreamLength - размер "куска" в байтах
Я не претендую на уникальность и на универсальность, но эта функция меня не подводила ниразу ;)
Код который возвращает CRC16 для строки
Код
static public int crc16(String s) {
int crc = 0xFFFF;
for (int x = 0; x < s.length(); x++) {
crc = crc ^ s.getBytes()[x];
for (int y = 0; y < 8; y++) {
if ((crc & 0x0001) == 0x0001) {
crc = ((crc >> 1) ^ 0xA001);
} else { crc = crc >> 1; }
}
}
return crc;
}
А зачем вообще класс Methods?
Цитата
функции для преобразования UTF строк в байтовый массив и обратно (без потерь)
Так для этого используются стандартные функции
Код
new String(bytes, "UTF_8");
s.getBytes("UTF_8");
пример приложения файловый эксплорер с передачей файлов по БТ. полный исходный код. можно юзать и как готовое приложение файлошвырятель по БТ
Цитата(4X-Oxygen @ 5.1.2008, 20:59)
потому что надо:
new String(bytes, "UTF-8");
Библиотека позволяющая работать с rms как с файловой системой
http://code.google.com/p/rmsfs/
Цитата(elegorod @ 15.12.2006, 20:08)
А зачем вообще класс Methods?
Так для этого используются стандартные функции
Код
new String(bytes, "UTF_8");
s.getBytes("UTF_8");
А на Nokia Е71, например, не работает.
Цитата(DarK AngeL @ 6.7.2010, 17:46)
А на Nokia Е71, например, не работает.
Free Classes
Ты думаешь я идиот и тему не читал?) UTF-8 мне не не нужен. new String(bytes, "win-1251") не канает, т.к. у нокии почему-то только US-ASCII, но есть какой-то другой (ISO-), который подходит. Но зачем эта морока? Уж лучше самому написать, т.к. свое будет работать железно на любом девайсе.
В добавок ко всему сказанному:
Цитата
I forgot to mention those methods.. I was using getBytes("UTF8"); and new String(byte_array, "UTF8") methods and working fine.
unfortunately I tested my application on N70, N71, N73 and one of the E- series mobile, then String is not stored in RMS.
after that I searched on google to short out this problem . and i got some answers that some S60 mobile doesn't support these encription methods. and throw UnsupportedEncodingException . after that I found out these methods to solve my problem.
but problem is same.
Цитата
I have got more or less the same problem while converting String to bytes. Solution which I have found is here:
Код
public static final String ENCODING="ISO-8859-1";
public static byte[] stringToByteArray(String s)
{
try
{
return s.getBytes(ENCODING);
}
catch (UnsupportedEncodingException ex)
{
return null;
}
}
I works nearly in all mobiles (including Nokias E and N series and all S40/S60 devices).
Мораль все та же: лучше написать самому.