天天看點

各種相容手機在開發j2me-MIDlet程式時,程式員應當知道的一些問題

作者:雷神

QQ:     38929568

QQ群:28048051(滿) 28047782(将滿)

項目中總結出來的一些不太容易發現,卻影響程式開發的一些小經驗,如果你正好遇到這些問題了,那就不用

再找原因了!

1.LENOVO--V800,CPU速度比一般手機慢5倍左右!

2.LG,C1100相容手機,在讀檔案時候,檔案不宜過大,否則讀取失敗!

3.LG,KP202相容手機,在單Player播放聲音時候,如果出現當機,請檢視停止播放聲音代碼,參考如下修改!

public static void StopSound()  

    ...{  

        try 

        ...{  

            if( player== null )  

                return;  

            else 

            ...{  

                player.deallocate();     //增加次函數  

                player.close();  

                player = null;  

            }  

        }  

        catch ( Exception e ) ...{ e.printStackTrace(); }  

    } 

4.LG C1100手機按鍵,在全螢幕加command可以實作左右軟體動作,但需要在JAD描述中增加一項

MIDletX-No-Command: true

5.LG CG225手機按鍵,在全螢幕加command可以實作左右軟體動作,但需要在JAD描述中增加一項

同時需要注意,他的左右軟體動作與B2100(C1100的相容手機)是相反的!

6.LG KG220手機的按鍵,在全屏模式下就可以得到左右軟體動作,不需要加COMMAND,是以在這一定上,他不與C1100相容。

7.在單Player播放聲音時候不需要stop()這個函數,一般都是先close()掉這個Player,然後再需要播放前new出一個新的,也就是先釋放在生成!參考代碼

public static void PlaySoundLoop(int id, int loop)  

           StopSound(); // stop last midi  

        try   

            InputStream is = new ByteArrayInputStream( s_soundData[id] );  

            s_sound = javax.microedition.media.Manager.createPlayer(is, "audio/midi");  

            s_sound.realize();  

            s_sound.setLoopCount( loop );  

            s_sound.start();  

            s_curSoundId = id;  

        catch (Exception e) ...{ e.printStackTrace(); }  

8.從一張大圖檔上按一定規律截取小圖,小圖本來應該透明的地方,被白色添充了。

簡單的解決辦法,可以使用小圖單獨生成。參考代碼如下:

try 

            for( int i=0; i<img.length; i++ )  

                img[i]         =  Image.createImage("/pics/"+name+"_"+i+".png");  

//            Image temp     = Image.createImage("/pics/"+name+".png");  

//            form        = temp.getWidth()/w;  

//            img            = new Image[form];  

//            Graphics gn;  

//            for( int i=0; i<img.length; i++ )  

//            {  

//                img[i]         = Image.createImage(w, h);  

//                gn             = img[i].getGraphics();      

//                gn.drawImage(temp, -i*w, 0, gn.LEFT|gn.TOP);  

//            }  

//            gn     = null;  

//            temp = null;      

//            System.gc();  

        }catch(Exception e)...{ e.printStackTrace(); }     

未完待續! 不斷更新中...

本文轉自 kome2000 51CTO部落格,原文連結:http://blog.51cto.com/kome2000/578510

繼續閱讀