如何在J2ME中加载图像? [英] How do I get to load image in J2ME?

查看:111
本文介绍了如何在J2ME中加载图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用TimerTask和ImageLoader类将n图像加载到图像项目。

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

它与enulator工作正常但是当我在我的暴徒上部署它时,图像没有加载。 。
图像标签有点像 Stopping 234567234567 这意味着我的计时器运行正常。它没有进入ImageLoader类...如何加载这个图像?

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?

推荐答案

如果不进一步说这很难说debuggind。我建议您使用 Micrologger + Web服务器,以便在设备上调试midlet。

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.

查看您的代码,我怀疑这行 length =(int)connection.getLength(); 。诺基亚的IO库实现会失败吗?

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

这篇关于如何在J2ME中加载图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆