Gå til innhold

J2ME, Bluetooth og OBEX


Anbefalte innlegg

Hei. Jeg prøver å opprette en Bluetooth forbindelse mellom to midlets ved bruk av obex, men klarer ikke "discovere" applikasjonen som står og venter på inkommende connections.

 

Utsnitt av relevant serverkode:

 

import javax.microedition.io.*;

import java.io.*;

import javax.bluetooth.*;
import javax.obex.*;

public class RequestHandler extends ServerRequestHandler
{

ObexServer obexServer;

public RequestHandler(ObexServer theMidlet)
{
 this.obexServer = theMidlet;
 try {
 	UUID uuid = new UUID("8841", false);
 	String url = "btgoep://localhost:" + uuid + ";name=server;authenticate=false;master=false;encrypt=false"; 
 	SessionNotifier sn = (SessionNotifier)Connector.open(url);

 	obexServer.updateStatus("[server:] Now waiting for a client to connect");
 	sn.acceptAndOpen(this);

 	obexServer.updateStatus("[server:] A client is now connected");	
 } 
 catch (IOException e) {
 	e.printStackTrace();
 }
}
 
public int onConnect(HeaderSet request, HeaderSet reply) 
{
 obexServer.updateStatus("[server:] The client has created an OBEX session");
 return ResponseCodes.OBEX_HTTP_OK;
}

public int onPut (Operation op) 
{

 
}
     
public void onDisconnect (HeaderSet req, HeaderSet resp) 
{
     
 obexServer.updateStatus("[server:] The client has disconnected the OBEX session");
       
}

}

 

Utsnitt av relevant klientkode:



import javax.bluetooth.*;
import java.util.*;

public class DeviceDiscoverer implements DiscoveryListener {
   
ObexClient client;
Vector remoteDevices = new Vector();

DiscoveryAgent discoveryAgent;
   
public DeviceDiscoverer(ObexClient client)
{
 this.client = client;
 try {
 	LocalDevice localDevice = LocalDevice.getLocalDevice();
 	discoveryAgent = localDevice.getDiscoveryAgent();

 	client.updateStatus("[client:] LocalDevice properties: " + localDevice.getFriendlyName() + " (" + localDevice.getBluetoothAddress() + ")");
 	client.updateStatus("[client:] Searching for Bluetooth devices in the vicinity...");
 	discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);

 } catch(Exception e) {
 	e.printStackTrace();
 }
}
   
   public Vector getRemoteDevices()
   {
   	return remoteDevices;
   }
  
public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass cod) 
{
 try{
            remoteDevices.addElement(remoteDevice);
 	//client.updateStatus("[client:] New device discovered : "  + remoteDevice.getFriendlyName(true)+ " (" + remoteDevice.getBluetoothAddress() + ")" );

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

}

   
public void inquiryCompleted(int discType) 
{
 String inqStatus = null;
       
 if (discType == DiscoveryListener.INQUIRY_COMPLETED) {
 	inqStatus = "[client:] Inquiry completed";            
 } else if (discType == DiscoveryListener.INQUIRY_TERMINATED) {
 	inqStatus = "[client:] Inquiry terminated";
 } else if (discType == DiscoveryListener.INQUIRY_ERROR) {
 	inqStatus = "[client:] Inquiry error";
 }
 client.updateStatus(inqStatus);
}

   public void servicesDiscovered(int transID, ServiceRecord[] servRecord)
   {}
   
   public void serviceSearchCompleted(int transID, int respCode) 
   {}
   
}

Har da 2 forskjellige midlets som bruker hver av disse klassene. deviceDiscovered() blir aldri kalt, men inquiryCompleted() blir kalt når søket er ferdig. Klient midlet finner andre blåtannenheter som bruker btspp:// i sin connectionurl, men ikke btgoep://. Jeg er avhengig av å bruke OBEX over Blutooth. Infrarød eller bruk av btspp:// er ikke aktuelt da jeg skal sende filer og objekter mellom mange mobiltelefoner.

 

Har testet appene med Suns Wireless Toolkit og Sony Ericsson's SDK.

 

Håper virkelig at noen kan hjelpe meg med dette.

Lenke til kommentar
Videoannonse
Annonse

fant det ut.. Hadde glemt 2 essensielle linjer som gjør at enheten kan finnes av andre:

 

LocalDevice localDevice = LocalDevice.getLocalDevice();
           localDevice.setDiscoverable(DiscoveryAgent.GIAC);

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...