MotoFan.Ru — всё для Motorola > Лаборатория > Разработка Java-приложений

Free Classes Полная версия

 av Lenota

 21.8.2006, 7:26

Предлагаю здесь выкладывать для свободного доступа и копирования рукописные классы/куски кода
которые понадобятся для кого либо
Если вы жадный то можете не выкладывать
Желательно также делать описание что это делает
Код

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;
     
     }

 av Valleo

 21.8.2006, 11:21

Очень хорошее начинание.
Давно бы уже придумали такую темку, 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 - размер "куска" в байтах

Я не претендую на уникальность и на универсальность, но эта функция меня не подводила ниразу ;)

 av Lenota

 4.9.2006, 13:38

Выкладываю JavaDOCы
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Выдрано с Benqa

Остатки JavaDOC
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла

 av Lenota

 13.9.2006, 9:03

Код который возвращает 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;
   }

 no av casus

 6.10.2006, 4:49

Никакого флуда -

Классы для доступа к ФС для E1000/V980 от DG-SC, за что ему ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО

 av elegorod

 15.12.2006, 14:08

А зачем вообще класс Methods?
Цитата
функции для преобразования UTF строк в байтовый массив и обратно (без потерь)


Так для этого используются стандартные функции
Код
new String(bytes, "UTF_8");
s.getBytes("UTF_8");

 av grafmoto

 14.12.2007, 10:37

пример приложения файловый эксплорер с передачей файлов по БТ. полный исходный код. можно юзать и как готовое приложение файлошвырятель по БТ smile.gif

 av grafmoto

 7.1.2008, 10:13

Цитата(4X-Oxygen @ 5.1.2008, 20:59)

У меня не прокатило
*


потому что надо:
new String(bytes, "UTF-8");

 av LamerMan

 27.6.2010, 10:41

Библиотека позволяющая работать с rms как с файловой системой http://code.google.com/p/rmsfs/

 av DarK AngeL

 6.7.2010, 13:46

Цитата(elegorod @ 15.12.2006, 20:08) *

А зачем вообще класс Methods?
Так для этого используются стандартные функции
Код
new String(bytes, "UTF_8");
s.getBytes("UTF_8");


А на Nokia Е71, например, не работает.

 av grafmoto

 8.7.2010, 8:54

Цитата(DarK AngeL @ 6.7.2010, 17:46)

А на Nokia Е71, например, не работает.
*


Free Classes

 av DarK AngeL

 8.7.2010, 9:08

Ты думаешь я идиот и тему не читал?) UTF-8 мне не не нужен. new String(bytes, "win-1251") не канает, т.к. у нокии почему-то только US-ASCII, но есть какой-то другой (ISO-), который подходит. Но зачем эта морока? Уж лучше самому написать, т.к. свое будет работать железно на любом девайсе.

 av DarK AngeL

 8.7.2010, 15:27

В добавок ко всему сказанному:
Цитата
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).

Мораль все та же: лучше написать самому.

Полная версия:


MotoFan.ru (©) 2024    Слушать Radio