<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Motej</id>
	<title>Motej - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Motej"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Motej&amp;action=history"/>
	<updated>2026-08-30T14:36:33Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Motej&amp;diff=3132&amp;oldid=prev</id>
		<title>Joan: /* JSR 82 example, prova Bluetooth */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Motej&amp;diff=3132&amp;oldid=prev"/>
		<updated>2009-06-09T11:40:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;JSR 82 example, prova Bluetooth&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Motej és una llibreria JAVA per programar la Wiimote de Nintendo. Què té a veure això amb la música. Doncs que amb la Wii, a més a més de fer una pissarra digital com ha fet el grup de 2n ASI a CS, també pot servir per fer un Theremin midi i una bateria electrònica. Aquests són els projectes que tinc al cap fer amb la Wii.&lt;br /&gt;
&lt;br /&gt;
Em descarrego de http://motej.sourceforge.net la llibreria motej-library-0.8.jar (fitxer motej-library-0.8-bin.tar.gz).&lt;br /&gt;
&lt;br /&gt;
Vull reproduir els primers exemples llistats a http://motej.sourceforge.net/examples.html&lt;br /&gt;
&lt;br /&gt;
==SimpleDiscovery==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package version01;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import motej.Mote; &lt;br /&gt;
import motej.MoteFinder;&lt;br /&gt;
&lt;br /&gt;
public class SimpleDiscovery {&lt;br /&gt;
&lt;br /&gt;
public static void main(String[] args) throws InterruptedException {&lt;br /&gt;
	Mote mote = MoteFinder.getMoteFinder().findMote();&lt;br /&gt;
	mote.setPlayerLeds(new boolean[] {true, false, false, false});&lt;br /&gt;
	Thread.sleep(5000l);&lt;br /&gt;
	mote.disconnect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executo i trobo un error, relacionat amb el bluetooth:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exception in thread &amp;quot;main&amp;quot; java.lang.NoClassDefFoundError: javax/bluetooth/DiscoveryListener&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Això és perquè falta instal.lar la llibreria javax.bluetooth. Recordem que el tema del bluetooth és bàsic per al bon funcionament. Tot el tema de Motej va a sobre de la llibreria JSR-82 (Java library for Bluetooth), que és el primer que he d'instal.lar.&lt;br /&gt;
&lt;br /&gt;
Així doncs, el primer que he de fer és implementar aquesta llibreria i fer un petit exemple bluetooth: comunicar l'ordinador amb el telèfon mòbil via bluetooth.&lt;br /&gt;
&lt;br /&gt;
==JSR 82 example, prova Bluetooth==&lt;br /&gt;
&lt;br /&gt;
Segueixo http://developer.sonyericsson.com/site/global/techsupport/tipstrickscode/java/p_bluetooth_probe_jsr82.jsp&lt;br /&gt;
&lt;br /&gt;
how to search for Bluetooth-enabled mobile phones and services.&lt;br /&gt;
&lt;br /&gt;
http://www.miniware.net/articles/viewarticle.php?id=20&lt;br /&gt;
&lt;br /&gt;
Here is the complete code of an application that searches for Bluetooth devices, displays them in a list and thenallows the user to query each device for its services. This application uses the JSR 82 api (also known as Bluetooth api) and it is tested in Nokia 6230i.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
**Note, your phone should not be connected to any device in order the program to run successfully**&lt;br /&gt;
&lt;br /&gt;
import javax.microedition.midlet.*;&lt;br /&gt;
import javax.microedition.lcdui.*;&lt;br /&gt;
import javax.bluetooth.*;&lt;br /&gt;
&lt;br /&gt;
public class BlueInterface extends MIDlet &lt;br /&gt;
        implements CommandListener,DiscoveryListener  {&lt;br /&gt;
    List main_list;&lt;br /&gt;
    List dev_list;&lt;br /&gt;
    List serv_list;&lt;br /&gt;
    Command exit;&lt;br /&gt;
    Command back;&lt;br /&gt;
    Display display;&lt;br /&gt;
    java.util.Vector devices;&lt;br /&gt;
    java.util.Vector services;&lt;br /&gt;
    LocalDevice local;&lt;br /&gt;
    DiscoveryAgent agent;&lt;br /&gt;
    &lt;br /&gt;
public void startApp() {&lt;br /&gt;
    main_list = new List(&amp;quot;Select Operation&amp;quot;,Choice.IMPLICIT);   //the main menu&lt;br /&gt;
    dev_list  = new List(&amp;quot;Select Device&amp;quot;,Choice.IMPLICIT);      //the list of devices&lt;br /&gt;
    serv_list = new List(&amp;quot;Available Services&amp;quot;,Choice.IMPLICIT); //the list of services&lt;br /&gt;
    exit      = new Command(&amp;quot;Exit&amp;quot;,Command.EXIT,1);&lt;br /&gt;
    back      = new Command(&amp;quot;Back&amp;quot;,Command.BACK,1);&lt;br /&gt;
    display   = Display.getDisplay(this);&lt;br /&gt;
&lt;br /&gt;
    main_list.addCommand(exit);&lt;br /&gt;
    main_list.setCommandListener(this);&lt;br /&gt;
    dev_list.addCommand(exit);&lt;br /&gt;
    dev_list.setCommandListener(this);&lt;br /&gt;
    serv_list.addCommand(exit);&lt;br /&gt;
    serv_list.addCommand(back);&lt;br /&gt;
    serv_list.setCommandListener(this);&lt;br /&gt;
    &lt;br /&gt;
    main_list.append(&amp;quot;Find Devices&amp;quot;,null);&lt;br /&gt;
    display.setCurrent(main_list);&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
public void commandAction(Command com, Displayable dis) {&lt;br /&gt;
    if (com == exit){                                              //exit triggered from the main form&lt;br /&gt;
        destroyApp(false);&lt;br /&gt;
        notifyDestroyed();&lt;br /&gt;
    }&lt;br /&gt;
    if (com == List.SELECT_COMMAND){&lt;br /&gt;
        if (dis == main_list){                                     //select triggered from the main from&lt;br /&gt;
            if (main_list.getSelectedIndex() &amp;gt;= 0){                //find devices&lt;br /&gt;
                FindDevices();&lt;br /&gt;
                do_alert(&amp;quot;Searching for devices...&amp;quot;, Alert.FOREVER);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (dis == dev_list){                                       //select triggered from the device list&lt;br /&gt;
            if (dev_list.getSelectedIndex() &amp;gt;= 0){                  //find services&lt;br /&gt;
                int[] attributes = {0x100};                         //the name of the service&lt;br /&gt;
                UUID[] uuids     = new UUID[1];&lt;br /&gt;
                uuids[0]         = new UUID(0x1002);                //browsable services&lt;br /&gt;
                FindServices(attributes,uuids,&lt;br /&gt;
                        (RemoteDevice)devices.elementAt(dev_list.getSelectedIndex()));&lt;br /&gt;
                do_alert(&amp;quot;Inquiring device for services...&amp;quot;, Alert.FOREVER);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    if (com == back){&lt;br /&gt;
        if (dis == serv_list){                                    //back button is pressed in devices list&lt;br /&gt;
            display.setCurrent(dev_list);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
public void FindDevices(){&lt;br /&gt;
    try{&lt;br /&gt;
        devices              = new java.util.Vector();&lt;br /&gt;
        LocalDevice local    = LocalDevice.getLocalDevice();&lt;br /&gt;
        DiscoveryAgent agent = local.getDiscoveryAgent();&lt;br /&gt;
        agent.startInquiry(DiscoveryAgent.GIAC,this);&lt;br /&gt;
    }catch(Exception e){this.do_alert(&amp;quot;Erron in initiating search&amp;quot; , 4000);}&lt;br /&gt;
 }&lt;br /&gt;
     &lt;br /&gt;
public void FindServices(int[] attributes, UUID[] uuids, RemoteDevice device){&lt;br /&gt;
    try{&lt;br /&gt;
        services = new java.util.Vector();&lt;br /&gt;
        local    = LocalDevice.getLocalDevice();&lt;br /&gt;
        agent    = local.getDiscoveryAgent();&lt;br /&gt;
        serv_list.deleteAll();                                 //empty the list of services&lt;br /&gt;
                                                               //in case user has pressed back&lt;br /&gt;
        agent.searchServices(attributes,uuids,device,this);            &lt;br /&gt;
    }catch(Exception e){this.do_alert(&amp;quot;Erron in initiating search&amp;quot; , 4000);}&lt;br /&gt;
}&lt;br /&gt;
    &lt;br /&gt;
public void deviceDiscovered(RemoteDevice remoteDevice,DeviceClass deviceClass) {&lt;br /&gt;
    devices.addElement(remoteDevice);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void servicesDiscovered(int transID,ServiceRecord[] serviceRecord) {&lt;br /&gt;
    for (int x = 0; x &amp;lt; serviceRecord.length; x++ )&lt;br /&gt;
        services.addElement(serviceRecord[x]);&lt;br /&gt;
}&lt;br /&gt;
public void inquiryCompleted(int param){&lt;br /&gt;
    switch (param) {&lt;br /&gt;
        case DiscoveryListener.INQUIRY_COMPLETED:    //Inquiry completed normally&lt;br /&gt;
           for(int x = 0; x &amp;lt; devices.size(); x++ )&lt;br /&gt;
               try{&lt;br /&gt;
                    String device_name = ((RemoteDevice)devices.&lt;br /&gt;
                            elementAt(x)).getFriendlyName(false);&lt;br /&gt;
                    this.dev_list.append(device_name , null);&lt;br /&gt;
                    display.setCurrent(dev_list);&lt;br /&gt;
               }catch (Exception e){do_alert(&amp;quot;Error in adding devices&amp;quot;,4000);}&lt;br /&gt;
        break;&lt;br /&gt;
        case DiscoveryListener.INQUIRY_ERROR:       // Error during inquiry&lt;br /&gt;
            this.do_alert(&amp;quot;Inqury error&amp;quot; , 4000);&lt;br /&gt;
        break;&lt;br /&gt;
        case DiscoveryListener.INQUIRY_TERMINATED:  // Inquiry terminated by agent.cancelInquiry()&lt;br /&gt;
             this.do_alert(&amp;quot;Inqury Canceled&amp;quot; , 4000);&lt;br /&gt;
        break;&lt;br /&gt;
       }&lt;br /&gt;
}&lt;br /&gt;
    &lt;br /&gt;
public void serviceSearchCompleted(int transID, int respCode) {&lt;br /&gt;
    switch(respCode) {&lt;br /&gt;
        case DiscoveryListener.SERVICE_SEARCH_COMPLETED:&lt;br /&gt;
            for(int x = 0; x &amp;lt; services.size(); x++ )&lt;br /&gt;
               try{&lt;br /&gt;
                    DataElement ser_de  = ((ServiceRecord)services.&lt;br /&gt;
                            elementAt(x)).getAttributeValue(0x100);&lt;br /&gt;
                    String service_name = (String)ser_de.getValue(); &lt;br /&gt;
                    serv_list.append(service_name ,null);&lt;br /&gt;
                    display.setCurrent(serv_list);&lt;br /&gt;
               }catch (Exception e){do_alert(&amp;quot;Error in adding services &amp;quot; ,1000);}&lt;br /&gt;
          &lt;br /&gt;
        break;&lt;br /&gt;
        case DiscoveryListener.SERVICE_SEARCH_DEVICE_NOT_REACHABLE:&lt;br /&gt;
             this.do_alert(&amp;quot;Device not Reachable&amp;quot; , 4000);&lt;br /&gt;
        break;&lt;br /&gt;
        case DiscoveryListener.SERVICE_SEARCH_ERROR:&lt;br /&gt;
             this.do_alert(&amp;quot;Service serch error&amp;quot; , 4000);&lt;br /&gt;
        break;&lt;br /&gt;
        case DiscoveryListener.SERVICE_SEARCH_NO_RECORDS:&lt;br /&gt;
            this.do_alert(&amp;quot;No records returned&amp;quot; , 4000);&lt;br /&gt;
        break;&lt;br /&gt;
        case DiscoveryListener.SERVICE_SEARCH_TERMINATED:&lt;br /&gt;
            this.do_alert(&amp;quot;Inqury Cancled&amp;quot; , 4000);&lt;br /&gt;
        break;&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void do_alert(String msg,int time_out){&lt;br /&gt;
    if (display.getCurrent() instanceof Alert ){&lt;br /&gt;
        ((Alert)display.getCurrent()).setString(msg);&lt;br /&gt;
        ((Alert)display.getCurrent()).setTimeout(time_out);&lt;br /&gt;
    }else{&lt;br /&gt;
        Alert alert = new Alert(&amp;quot;Bluetooth&amp;quot;);&lt;br /&gt;
        alert.setString(msg);&lt;br /&gt;
        alert.setTimeout(time_out);&lt;br /&gt;
        display.setCurrent(alert);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void pauseApp() {}&lt;br /&gt;
&lt;br /&gt;
public void destroyApp(boolean unconditional) {}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>