NASZE SERWISY:    ANDROID   LINUX   MAEMO   SYMBIAN   WEBOS




Hosting sponsoruje:



GRIN3 - polskie fonty

Profesjonalne czcionki z polskimi znakami - czcionki.com

OpenMobile on Facebook


 

[JAVA] Xlator - kompresiaj class

Odpowiednie forum do zadawania pytań dotyczących rozpoczęcia programowania.

[JAVA] Xlator - kompresiaj class

Postprzez liptonace » 18 sierpnia 2009, o 21:16

Witam!
Na początek napisze ze nie mam telefonu ze symbianem - mam LG KU990i.
Aplikacje:
Kod: Zaznacz cały
    xlator 1.41:
http://moja.akcja.pl/storage/Xlator.jar
Xlator 1.21:
http://zoneshare.eu/files/Encyklopedia.jar
http://zoneshare.eu/files/Slownik_PL-EN.jar



Mam problem z aplikacją Xlator, tzn. gdy uruchomię aplikacje nie pojawia mi się klawiatura numeryczn-literowa
tylko mogę przełączyć na numeryczną ale trudno się pisze bo przyciski są bardzo małe i mają nie odpowiedni układ:
Kod: Zaznacz cały
1 2 3 4 5 6 OK
7 8 9 0 * # NAV



nawigacja w tej aplikacji wygląda tak:
Obrazek

w aplikacji jest dostępna klawiatura która ląduje się z obrazka, ale nie działa u mnie bo trzeba na początku wyłączyć zwykła (w telefonie takiej opcji nie ma)

ta aplikacja i tak nie do końca u mnie działa (xlator 1.41) ale starsza tak (1.21), a pliki z nowszej wersji pasują do starszej, wiec gdy uda mi się uruchomić klawiaturę na nowszej wersji to przeniosę pliki class do tej starszej (testowałem to i słyszę dźwięki dotyku po przeniesieniu plików)

wydaję mi się ze modyfikację należy przeprowadzić w pliku Screen.class, udało mi się zdekompresować do Screen.java:
Kod: Zaznacz cały
    package xlt;

    import javax.microedition.lcdui.Canvas;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.Image;
    import javax.microedition.media.Manager;
    import javax.microedition.media.Player;

    // Referenced classes of package xlt:
    //            Log

    public class Screen extends Canvas {

                static final short DEV_GENERIC = 1;
                static final short DEV_NOKIA_5800 = 1;
                static final byte KEY_0 = 0;
                static final byte KEY_1 = 1;
                static final byte KEY_2 = 2;
                static final byte KEY_3 = 3;
                static final byte KEY_4 = 4;
                static final byte KEY_5 = 5;
                static final byte KEY_6 = 6;
                static final byte KEY_7 = 7;
                static final byte KEY_8 = 8;
                static final byte KEY_9 = 9;
                static final byte KEY_LEFT = 10;
                static final byte KEY_RIGHT = 11;
                static final byte KEY_UP = 12;
                static final byte KEY_DOWN = 13;
                static final byte KEY_FIRE = 14;
                static final byte KEY_ASTX = 15;
                static final byte KEY_HASH = 16;
                static final byte KEY_NONE = 17;
                private static final String t9List[] = {
    /*  41*/        "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"
                };
                Image image;
                int deviceType;
                static Player player;
                int touchDnX;
                int touchDnY;
                int keyOffsetX;
                int keyOffsetY;
                int imgOffsetY;
                int keyHeight;
                int keyRows;
                byte keyCount[];
                byte keyCodes[];

                public Screen() {
    /*  50*/        image = null;
    /*  55*/        touchDnX = 0;
    /*  56*/        touchDnY = 0;
    /*  58*/        keyOffsetX = 0;
    /*  59*/        keyOffsetY = 0;
    /*  60*/        imgOffsetY = 0;
    /*  62*/        keyHeight = 0;
    /*  64*/        keyRows = 0;
                }

                public void paint(Graphics gr) {
    /*  74*/        if (image != null) {
    /*  76*/            gr.drawImage(image, 0, super.getHeight(), 36);
                    }
                }

                public void setup(String kImageName, byte kRows, byte kCount[], byte kCodes[]) {
    /*  87*/        deviceType = getDeviceType();
    /*  89*/        if (deviceType == 1) {
    /*  93*/            try {
    /*  93*/                image = Image.createImage(kImageName);
    /*  95*/                imgOffsetY = super.getHeight() - image.getHeight();
    /*  96*/                keyOffsetY = imgOffsetY;
    /*  97*/                keyOffsetX = 10;
    /*  98*/                keyHeight = 74;
    /* 100*/                keyRows = kRows;
    /* 101*/                keyCount = kCount;
    /* 102*/                keyCodes = kCodes;
    /* 104*/                if (player == null) {
    /* 107*/                    player = Manager.createPlayer(getClass().getResourceAsStream("/pong.mid"), "audio/midi");
                            }
                        }
    /* 111*/            catch (Exception e) {
    /* 113*/                Log.dpf("Screen setup failed");
    /* 114*/                deviceType = 0;
    /* 115*/                keyRows = 0;
    /* 116*/                image = null;
                        }
                    }
                }

                public int getHeight() {
    /* 127*/        if (image == null) {
    /* 129*/            return super.getHeight();
                    } else {
    /* 132*/            return imgOffsetY;
                    }
                }

                protected void keyRepeated(int keyCode) {
    /* 140*/        keyDecode(keyCode, true);
                }

                protected void keyPressed(int keyCode) {
    /* 148*/        keyDecode(keyCode, false);
                }

                void keyDecode(int key, boolean rep) {
    /* 156*/        int ga = getGameAction(key);
    /* 158*/        if (key >= 48 && key <= 57) {
    /* 160*/            key = (key - 48) + 0;
                    } else
    /* 162*/        if (key == 42) {
    /* 164*/            key = 15;
                    } else
    /* 166*/        if (key == 35) {
    /* 168*/            key = 16;
                    } else
    /* 170*/        if (key >= 65 && key <= 90) {
    /* 172*/            key = ascToT9(key);
                    } else
    /* 174*/        if (key >= 97 && key <= 122) {
    /* 176*/            key = ascToT9((key - 97) + 65);
                    } else {
    /* 178*/            switch (ga) {
    /* 181*/            case 2: // '\002'
    /* 181*/                key = 10;
                            break;

    /* 184*/            case 5: // '\005'
    /* 184*/                key = 11;
                            break;

    /* 187*/            case 8: // '\b'
    /* 187*/                key = 14;
                            break;

    /* 190*/            case 1: // '\001'
    /* 190*/                key = 12;
                            break;

    /* 193*/            case 6: // '\006'
    /* 193*/                key = 13;
                            break;

    /* 196*/            case 3: // '\003'
    /* 196*/            case 4: // '\004'
    /* 196*/            case 7: // '\007'
    /* 196*/            default:
    /* 196*/                return;
                        }
                    }
    /* 199*/        keyAction(key, rep);
                }

                int ascToT9(int asc) {
    /* 207*/        for (int i = 0; i < t9List.length; i++) {
    /* 209*/            if (t9List[i].indexOf(asc) >= 0) {
    /* 211*/                return 2 + i;
                        }
                    }

    /* 215*/        return 0;
                }

                void keyAction(int i, boolean flag) {
                }

                int findScreenKey(int x, int y) {
    /* 231*/        int key = -1;
    /* 232*/        int width = getWidth() - 2 * keyOffsetX;
    /* 234*/        y -= keyOffsetY;
    /* 235*/        x -= keyOffsetX;
    /* 237*/        Log.dpf("FindKey x=" + x + " y=" + y);
    /* 239*/        if (y >= 0 && y < keyHeight * keyRows && x >= 0 && x < width) {
    /* 246*/            int row = y / keyHeight;
    /* 247*/            int kwd = width / keyCount[row];
                        int col;
    /* 248*/            for (col = x / kwd; row > 0; col += keyCount[row]) {
    /* 252*/                row--;
                        }

    /* 257*/            key = keyCodes[col];
                    }
    /* 260*/        return key;
                }

                public void pointerPressed(int x, int y) {
    /* 268*/        touchDnX = x;
    /* 269*/        touchDnY = y;
    /* 274*/        try {
    /* 274*/            Manager.playTone(90, 5, 10);
                    }
    /* 277*/        catch (Exception exception) { }
    /* 282*/        int key = findScreenKey(x, y);
    /* 283*/        if (key >= 0) {
    /* 285*/            keyAction(key, false);
                    } else {
    /* 289*/            pointerOut(x, y);
                    }
                }

                public void pointerReleased(int i, int j) {
                }

                public void pointerDragged(int i, int j) {
                }

                void pointerOut(int i, int j) {
                }

                void dragEnd(int i, int j) {
                }

                public short getDeviceType() {
    /* 330*/        return super.getWidth() != 240 || super.getHeight() <= 320 ? 0 : 1;
                }

    }




zmieniłem w tym 2 linijki (wydaje mi się ze te pomogą mi uruchomić klawiature)
Kod: Zaznacz cały
    .
    .
    .
    static final short DEV_GENERIC = 1;
    .
    .
    .
    /* 330*/        return super.getWidth() != 240 || super.getHeight() <= 320 ? 0 : 1;



, ale nie mogę zapisać pliku java do class
mam zainstalowaną jave (jdk)
gdy wpisuję w cmd: javac Screen.java - to pokazują mi się 24 błędy
a plik class się nie pojawia

pliki png z xlator 1.41 przerobione na 240x320:
Kod: Zaznacz cały
http://zoneshare.eu/files/PNG_Xlator_240x320.rar




Więcej o moim problemie:
Kod: Zaznacz cały
http://moja.akcja.pl/forum/index.php?type=topic&forum=3&id=2




Proszę o pomoc - sprawdzenie czy to ten plik należy zmienić, czy dobrze przeprowadziłem zmianę, a jeśli można to wytłumaczenie jak zapisać do class lub podanie gotowego pliku (jeśli nie sprawi to kłopotu).
Aplikacja(-e) jest mi bardzo potrzebna dlatego bardzo proszę o pomoc
Z góry wielkie dzięki
liptonace
1%
1%
 
Posty: 1
Dołączył(a): 18 sierpnia 2009, o 20:15
Mod.tel.: LG KU990
FW: 10b
    WindowsFirefox

Re: [JAVA] Xlator - kompresiaj class

Postprzez mawhy » 23 sierpnia 2009, o 10:20

Dokonanie dekompilacji do kodu źródłowego nie rozwiązuje problemu, bo w większości kod źródłowy tworzony przez dekompilatory nie nadaje się do ponownej kompilacji. Musiałbyś mieć cały kod źródłowy ( tj wszystkie klasy) a ty pokazujesz tylko jedną, zresztą która niewiele wnosi do analizy.

Ten Xlator to aplikacja opensource? Jeśli nie, to pisz do autora programu. (ale autor nie ma czasu niestety) - jedyne co widzę to poprosić o kod źródłowy całej aplikacji 1.2.1 od autora
mawhy
30%
30%
 
Posty: 104
Dołączył(a): 19 stycznia 2008, o 00:24
Lokalizacja: Lublin
    WindowsXPFirefox


Powrót do Od czego zacząć?

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość

cron