How do I get to load image in J2ME?

99封情书 提交于 2019-12-23 05:17:27

问题


I am using TimerTask and ImageLoader class to load n image to an image item.

public class Imageloader implements Runnable{

    private ImageItem item=null;
    private String url=null;

    /*
     * initializes the imageItem
     */
    public Imageloader(ImageItem item,String url){
            this.item=item;
            this.url=url;
    }


    private Image getImage(String url) throws IOException {
        item.setLabel(item.getLabel()+12);
        System.out.println("Test 5");
            HttpConnection connection = null;
            DataInputStream inp = null;
            int length;
            byte[] data;
            try {System.out.println("Test 6");
                    connection = (HttpConnection) Connector.open(url);
                    item.setLabel(item.getLabel()+13);
                    connection.getResponseMessage();
                    System.out.println("Test 7");
                    length = (int) connection.getLength();
                    item.setLabel(item.getLabel()+14);
                    System.out.println("Length is "+length);
                    System.out.println("Test 8");
                    data = new byte[length];
                    inp = new DataInputStream(connection.openInputStream());
                    item.setLabel(item.getLabel()+15);
                    System.out.println("Test 9");
                    inp.readFully(data);
                    item.setLabel(item.getLabel()+16);
                    System.out.println("Test 10");
                    return Image.createImage(data, 0, data.length);
            }
            finally {
                if (connection != null) connection.close();
                if (inp != null)inp.close();

            }
    }


    public void run() {
        System.out.println("Test 1");
        Image image=null;
        try{
                if (url!=null){
                    System.out.println("Test 2");
                        image=getImage(url);
                        System.out.println("Test 3");
                        item.setImage(image);
                        item.setLabel(item.getLabel()+17);
                        System.out.println("Test 4");
                }
                else{
                    item.setAltText("Map address specified is incorrect");
                }
        }
        catch(IOException e){
                item.setAltText("Map cannot be loaded now");
        }

    }

}

public class MapTimer extends TimerTask{

    DatagramConnection connection=null;
    String message=null;
    Imageloader imageretriever;
    ImageItem item=null;

    MapTimer (DatagramConnection connection,String message,ImageItem Img_map ){
        this.connection=connection;
        this.message=message;
        this.item=Img_map;
        item.setLabel(item.getLabel()+1);
        System.out.println("Map is initizlized...");
    }


    public void run() {
        System.out.println("Map starting...");
         item.setLabel(item.getLabel()+2);
        String serverquery=null;
        try {
             item.setLabel(item.getLabel()+3);
            sendMessage(message);
             item.setLabel(item.getLabel()+4);
            //serverquery=receiveMessage() ;
             item.setLabel(item.getLabel()+5);
            //item.setLabel(" Loading...." );
            //formatmessage(serverquery);
               String url="http://maps.google.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=14&size=512x512&maptype=roadmap"+
"&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318"+
"&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false";
            Imageloader Im=new Imageloader(item,url);
             item.setLabel(item.getLabel()+6);
            (new Thread(Im)).start();
             item.setLabel(item.getLabel()+7);
            System.out.println("server map query is::: "+serverquery);
        } catch (IOException ex) {
            System.out.println("Error2"+ex);
        }
          catch(Exception e){
            System.out.println("Error3"+e);
       }
    }


     /*
     * Sends a message via UDP to server
     */
    private void sendMessage(String message) throws IOException{
        Datagram packet_send=null;
        if (connection != null){
            byte[] packetsenddata=message.getBytes();
            packet_send = connection.newDatagram(packetsenddata,packetsenddata.length);
            connection.send(packet_send);
            packet_send = null;
        }
    }
}

This is how I set the Timer;

 MapTimer maptimer=new MapTimer (connection,mapquery ,Img_map );
                    Timer timer=new Timer();
                    timer.schedule(maptimer, 5000, 100000);

It's working fine with the enulator but as I deploy it on my mob,the image is not loading.. The image label is somewhat like Stopping 234567234567 which implies that my timer is running fine. It is not entering the ImageLoader class... How do get to load this image?


回答1:


This is difficult to say without further debuggind. I recommend you to use Micrologger + a web server, in order to debug your midlets on the device.

Looking to your code, I suspect of this line length = (int) connection.getLength();. Could it fail on Nokia's IO library implementation?



来源:https://stackoverflow.com/questions/4883600/how-do-i-get-to-load-image-in-j2me

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!