Ciao a tutti,
sto cercando di realizzare un'applicazione per ricercare dei dispositivi bluetooth e in caso inviare un file.
Di Java non so molto, comunque, trovando dei sorgenti in giro per il web sono riuscito a ottenere qualcosa e ho questa situazione:
quando avvio il programma con il Wireless Toolkit, il telefono(dell'emulatore) inizia a fare la ricerca e mi stampa a video dei messaggi attraverso l'oggetto Form che passo al costruttore della classe RicercaBT.
Ora, quando cerco di installare il Jar in un nokia E71, nonostante le configurazioni del progetto CLDC(1.1) e MIDP(2.0) siano giuste, ottengo l'errore sul telefono "il Jar non è supportato" e, di conseguenza, l'applicazione non viene installata.
L'applicazione viene, invece, installata se al posto di usare myform.append(..) uso dei System println nella classe RicercaBT(???????).
Classe della Midlet
Classe per la ricerca Bluetoothcodice:package cap3; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.util.*; import javax.bluetooth.*; import javax.microedition.lcdui.Form; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloWorldMidlet extends MIDlet implements CommandListener { /* * Label per l'uscita dall'applicazione */ private final static String EXIT_LABEL = "esci"; /** * Costruttore di default */ public HelloWorldMidlet() { } /** * Metodo che viene invocato all'avvio della Midlet */ public void startApp() { Form displayable = new Form("Ricerca dispositivi"); Command exitCommand = new Command(EXIT_LABEL, Command.EXIT, 1); displayable.addCommand(exitCommand); displayable.setCommandListener(this); Display.getDisplay(this).setCurrent(displayable); System.out.println( "Connecting to "); try { RicercaBT client = new RicercaBT(displayable); } catch(BluetoothStateException e) { e.printStackTrace(); } }// fine /** * Metodo che viene invocato alla pressione del tasto exit */ public void commandAction(Command c, Displayable d) { // Se viene premuto il pulsante di uscita si esce dall'applicazione if (EXIT_LABEL.equals(c.getLabel())) { destroyApp(true); notifyDestroyed(); }// fine if }// fine /** * Metodo invocato nel caso in cui la Midlet venga messa in pausa */ public void pauseApp() { }// fine /** * Metodo invocato nel caso di chiusura della Midlet */ public void destroyApp(boolean unconditional) { }// fine }// fine Midlet
Che hanno quei myform.append() di male???codice:package cap3; import java.io.*; import java.util.*; import javax.microedition.io.*; import javax.bluetooth.*; import javax.microedition.lcdui.Form; import javax.obex.*; public class RicercaBT implements DiscoveryListener { LocalDevice local = null; DiscoveryAgent agent = null; int[] attrSet = null; RemoteDevice btDev = null; String serviceURL = null; ClientSession con = null; HeaderSet hdr = null; Form myform = null; public RicercaBT(Form myf) throws BluetoothStateException{ // initialize the stack, if needed local = LocalDevice.getLocalDevice(); agent = local.getDiscoveryAgent(); agent.startInquiry(DiscoveryAgent.GIAC, this); myform = myf; } public void deviceDiscovered(RemoteDevice btDevice,DeviceClass cod){ btDev = btDevice; myform.append("Device discovered " + btDevice.getBluetoothAddress()); } public void servicesDiscovered(int transID, ServiceRecord[] servRecord){ myform.append("Discovered a service ...."); for(int i =0; i < servRecord.length; i++){ serviceURL = servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, true); myform.append("The service URL is " + serviceURL); } } public void serviceSearchCompleted(int transID, int respCode){ myform.append("Service search completed ........... "); myform.append("Opening a connection with the server ...."); try{ con = (ClientSession)Connector.open(serviceURL); hdr = con.connect(hdr); myform.append("Response code of the server after connect..." + hdr.getResponseCode()); //Sending a request to server for file Hello.txt hdr = con.createHeaderSet(); hdr.setHeader(HeaderSet.TYPE,"text/vCard"); hdr.setHeader(HeaderSet.NAME,"Hello.txt"); Operation op = con.get(hdr); //The server is now sending the file InputStream in = op.openInputStream(); // Writing the file from server to local file system. StreamConnection filestream = (StreamConnection)Connector.open("file://name=HelloFile.txt;mode=w"); OutputStream out = filestream.openOutputStream(); //read and write the data int data = in.read(); while(data != -1){ out.write((byte)data); data = in.read(); } // send the DISCONNECT Operation //con.disconnect(); // cleanup op.close(); in.close(); out.close(); } catch(IOException e){ myform.append(e.getMessage()); } } public void inquiryCompleted(int discType){ myform.append("Inquiry completed ... "); UUID[] uuids = new UUID[1]; uuids[0] = new UUID("1106",true); try{ if(btDev == null){ myform.append("No device has been discovered, " + "hence not worth proceeding exiting .... "); System.exit(1); } myform.append("Now searching for services ........ "); agent.searchServices(attrSet, uuids, btDev, this); } catch(BluetoothStateException e) {myform.append(e.getMessage());} } /* public static void main(String args[]) throws IOException { FTClient client = new FTClient(); } */ }
Vi ringrazio ancitipatamente e auguri!!!

Rispondi quotando