Hogyan futtassuk az M55 Ledcontrol api-t használó játékokat MC60-on és a többi Siemensen

 
 
 
A Siemens M55 több olyan képességgel rendelkezik, amelyek más Siemens telefonokban nem ismertek. Ezek közül számunkra a telefonon körben elhelyezkedõ ledek (villogó mütyürkék) az érdekesek. Az M55-re írt java játékok gyakran használják ezeket a ledeket valamilyen képi esemény (pl. robbanás) hatásosabb érzékeltetésére. Aki játszott már az M55-re elõre telepített eXtremeGames nevû játékkal, az tapasztalta, hogy a rezgõ- és hanghatások mellett fényhatások is kísérik a játék menetét. Sokaknak megtetszett ez a játék, és szerették volna futtatni MC60-on vagy másik Siemens telefonon. Õk a következõ üzenettel szembesültek a telefonjuk kijelzõjén:
A program nem fut Siemens Mc60-on, mert a telefon nem rendelkezik a megfelelõ API-val.
A NEoMS How-to-ban láthattuk, hogy az ehhez hasonló hibaüzenetektõl nem kell megijedni, talán megoldható a probléma. Jelen esetben azonban nem a NEoMS csomag fogja szolgáltatni a megoldást, mert itt nem Nokia-Siemens inkompatíbílitás, hanem Siemens-Siemens konfliktus áll fenn.
A fenti hibaüzenet szerint valami hiányzik, tehát a dolgunk csak annyi, hogy azt pótoljuk :-) A hiányzó láncszem a com.siemens.mp.m55.Ledcontrol osztály, amely az M55 kivételével nem része egyik telefonnak sem. Két lehetõségünk van: az egyik az, hogy valahogyan "átmásoljuk" az MC60-ba az M55-ös Ledcontrolt, a másik pedig az, hogy megírjuk magunk. Mivel a dolog rendkívül egyszerû, ezért most a kettõ kombinációját alkalmazzuk.
Az alábbi osztály a módosított M55 Ledcontrol (Ledcontrol.java):
/*
 * Ledcontrol.java
 *
 * Ez az osztaly a felepiteset (metodusok neve , konstansok neve, erteke) tekintve  megegyezik a
 * Siemens M55 java api-jaban megtalalhato com.siemens.mp.m55.Ledcontrol osztallyal.
 * A kulonbseg csupan annyi, hogy a metodusok nem native-kent vannak deklaralva, igy az
 * ezen osztalyt hasznalo programok nem villogtatjak az M55 oldalan levo ledeket, emiatt
 * a programok nem csak M55-on futtathatoak.
 *
 * ZnOS
 * [ znos (kukac) freemail pont hu ]
 * 2004
 *
 */

package com.siemens.mp.m55;

/**
 * Ledcontrol Class is used to control TOP/BOTTOM LED blinking. 
 * Note: This API is only available on M55 mobile phone!
 */
public class Ledcontrol /*extends java.lang.Object*/ {

    /** This is the unique value for the upper LED. */
    public static final int LED_TOP = 0;
    /** This is the unique value for the lower LED. */
    public static final int LED_BOTTOM = 1;

    /** An available pattern. */
    public static final int P_SPEED = 0;
    /** An available pattern. */
    public static final int P_LIGHTHOUSE = 1;
    /** An available pattern. */
    public static final int P_WAVE = 2;
    /** An available pattern. */
    public static final int P_BEAT = 3;
    /** An available pattern. */
    public static final int P_RUNWAY = 4;
    /** An available pattern. */
    public static final int P_TRANCE = 5;
    /** An available pattern. */
    public static final int P_ETERNITY = 6;
    /** An available pattern. */
    public static final int P_STROBO = 7;
    /** An available pattern. */
    public static final int P_LIMELIGHT = 8;
    /** An available pattern. */
    public static final int P_NORMAL_BLINKING = 9;
    /** An available pattern. */
    public static final int P_PULSATING = 10;
    /** An available pattern. */
    public static final int P_CONSTANLY_LITEUP = 11;
    /** An available pattern. */
    public static final int P_IDLE = 12;

    private Ledcontrol() {}

    /** This function will switch on the indicated LED. */
    public static /*native*/ void switchON(int led) {}

    /** This function will switch off the indicated LED. */
    public static /*native*/ void switchOFF(int led) {}

    /** This function can be used to play a pattern. */
    public static /*native*/ void playPattern(int pattern) {}

    /** This function will switch off all the LEDs. */
    public static /*native*/ void stopPattern() {}

Számunkra a fenti kódból csupán az utolsó négy metódus az érdekes. Ezeket úgy deklaráljuk, hogy a native kulcsszót elhagyjuk. Az így keletkezõ kód független lesz a hardvertõl, és futtathatóvá válik MC60-on.
A probléma technikai hátterét már ismerjük. Most nézzük meg, hogyan alkalmazzuk a megoldást a gyakorlatban. A következõkben a NEoMS How-to-ból megismert módon járunk el:

1. lépés:

A Total Commander segítségével hozzunk létre egy könyvtárat pl. "pelda" néven, és másoljuk ebbe a könyvtárba az eXtremeGames.jar és eXtremeGames.jad fájlokat, valamint a ledcontrol.zip fájl tartalmát!

2. lépés:

Kattintsunk egyet az eXtremeGames.jar fájlra, ezután nyomjuk meg a Ctrl+PageDown billyentyûkombinációt. Ezzel beléptünk a fájlba (mert ez egy közönséges tömörített fájl).

3. lépés:

A "com" könyvtárat másoljuk (F5) az eXtremeGames.jar csomagba!

4. lépés:

Az eXtremeGames.jad fájl szerkesztése.

5.lépés:

Az eXtremeGames futtatása MC60-on:

Megjegyzések: 

Az összes többi alkalmazás és játék módosítása is a leírtakhoz hasonlóan történik.
Ez a leírás szabadon felhasználható és terjeszthetõ a forrás pontos megjelölésével (http://inf.nyme.hu/~kusicsk/)!


ZnOS 
[znos (kukac) freemail pont hu] 
(2004. június) 
Utolsó módosítás: 2004. szeptember 25.