问题描述
初学JavaME,为了通过JavaME应用手机蓝牙功能,编写了一个最简单的获得本地设备信息的程序。在Eclipse中使用WTK模拟器能正常运行,打包后在手机上可以安装成功,但是程序就不能运行了,请高手帮忙。程序代码如下:importjavax.bluetooth.BluetoothStateException;importjavax.bluetooth.DeviceClass;importjavax.bluetooth.LocalDevice;importjavax.microedition.lcdui.Display;importjavax.microedition.lcdui.Form;importjavax.microedition.midlet.MIDlet;importjavax.microedition.midlet.MIDletStateChangeException;publicclassGetLocalDeviceextendsMIDlet{privateDisplaydisplay=null;publicFormform=newForm("获得本地设备信息");publicGetLocalDevice(){super();//TODO自动生成构造函数存根}protectedvoidstartApp()throwsMIDletStateChangeException{display=Display.getDisplay(this);display.setCurrent(form);LocalDevicelocaldev=null;try{localdev=LocalDevice.getLocalDevice();}catch(BluetoothStateExceptione){form.append("错误:不能访问本地设备n");System.out.println("错误:不能访问本地设备");return;}form.append("发现模式:"+localdev.getDiscoverable()+"n");System.out.println("发现模式:"+localdev.getDiscoverable());if(localdev.getDiscoverable()==10390323){form.append("发现模式:GIACn");System.out.println("发现模式:GIAC");}form.append("找到本地设备n");System.out.println("找到本地设备");form.append("名字:"+localdev.getFriendlyName()+"n");System.out.println("名字:"+localdev.getFriendlyName());form.append("地址:"+localdev.getBluetoothAddress()+"n");System.out.println("地址:"+localdev.getBluetoothAddress());form.append("设备类为:n");System.out.print("设备类为:");DeviceClassdevcla=localdev.getDeviceClass();form.append(devcla.toString());System.out.println(devcla.toString());form.append("服务类:"+devcla.getServiceClasses()+"n");System.out.println("服务类:"+devcla.getServiceClasses());form.append("主设备类:"+devcla.getMajorDeviceClass()+"n");System.out.println("主设备类:"+devcla.getMajorDeviceClass());form.append("辅设备类:"+devcla.getMinorDeviceClass()+"n");System.out.println("辅设备类:"+devcla.getMinorDeviceClass());listProperties();}privatevoidlistProperties(){form.append("n蓝牙系统属性n");System.out.print("n蓝牙系统属性");//Stringp=LocalDevice.getProperty("bluetooth.sd.attr.retrievable.max");Stringp=LocalDevice.getProperty("bluetooth.api.versionn");if(p!=null){form.append("蓝牙API版本:"+p+"n");System.out.println("蓝牙API版本:"+p);}p=LocalDevice.getProperty("bluetooth.master.switch");if(p!=null){form.append("是否允许主/从设备切换:"+p+"n");System.out.println("是否允许主/从设备切换:"+p);}p=LocalDevice.getProperty("bluetooth.sd.attr.retrievable.max");if(p!=null){form.append("支持的链接设备的最大值:"+p+"n");System.out.println("支持的连接设备的最大值:"+p);}p=LocalDevice.getProperty("bluetooth.sd.trans.max");if(p!=null){form.append("同时进行服务发现处理的最大值:"+p+"n");System.out.println("同时进行服务发现处理的最大值:"+p);}p=LocalDevice.getProperty("bluetooth.l2cap.receiveMTU.max");if(p!=null){form.append("L2CAP最大接收单元:"+p+"n");System.out.println("L2CAP最大接收单元:"+p);}p=LocalDevice.getProperty("bluetooth.connected.inquiry.scan");if(p!=null){form.append("在连接状态是否可以进行质询扫描:"+p+"n");System.out.println("在连接状态是否可以进行质询扫描:"+p);}p=LocalDevice.getProperty("bluetooth.connected.page.scan");if(p!=null){form.append("在连接状态是否可以进行页扫描:"+p+"n");System.out.println("在连接状态是否可以进行页扫描:"+p);}p=LocalDevice.getProperty("bluetooth.connected.inquiry");if(p!=null){form.append("在连接状态是否可以进行质询:"+p+"n");System.out.println("在连接状态是否可以进行质询:"+p);}p=LocalDevice.getProperty("bluetooth.connected.page");if(p!=null){form.append("是否可以连接到另外一个已经连接的设备:"+p+"n");System.out.println("是否可以连接到另外一个已经连接的设备:"+p);}}protectedvoidpauseApp(){//TODO自动生成方法存根}protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{//TODO自动生成方法存根}}
解决方案
解决方案二:
我想问下你的程序大概走到哪一步了,还是起动都起不了啊
解决方案三:
回复1L:是启动都启动不了。
解决方案四:
你可以先试试双击JAD文件,看看模拟器能否正常启运这个程序。
解决方案五:
换个模拟器试试,如果有问题可以快速定位
解决方案六:
多数是因为jad没配置好
解决方案七:
是装不上么?还是装上无法运行
解决方案八:
程序不能运行,有可能是你的bluetooth包里的东西不支持手机。改成相应的手机提供商的bluetooth包试一下。
解决方案九:
引用3楼prince58的回复:
你可以先试试双击JAD文件,看看模拟器能否正常启运这个程序。
可以正常运行JAD。
解决方案十:
引用5楼tiewantn的回复:
多数是因为jad没配置好
JAD配置如下:MidletJarURL:example5.jarMidletName:example5MidletSuiteMidletVendor:MidletsuiteVendorMidletVersion:1.0.0MicroeditionConfiguration:CLDC1.1、CLDC1.0都试过,都不行。MicroeditionProfile:MIDP2.0、MIDP1.0都试过,也是都不行。
解决方案十一:
引用6楼fanyuanwai的回复:
是装不上么?还是装上无法运行
可以安装装上后无法运行。
解决方案十二:
我试过了,在我自己的手机motorolaE2上能运行,在诺基亚,山寨机上不能运行。估计还是我之前回答的那样
解决方案十三:
是不是版本的事啊