<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>javablog.ch&#187; Bluetooth Basics</title>
	<atom:link href="http://www.javablog.ch/category/bluetooth-basics/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.javablog.ch</link>
	<description>Keep on learning...</description>
	<lastBuildDate>Sun, 04 Dec 2011 17:15:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>JABWT (JSR-82) Teil 5: Discovery Agent und DiscoveryListener</title>
		<link>http://www.javablog.ch/2006/11/11/jabwt-jsr-82-teil-5-discovery-agent-und-discoverylistener/</link>
		<comments>http://www.javablog.ch/2006/11/11/jabwt-jsr-82-teil-5-discovery-agent-und-discoverylistener/#comments</comments>
		<pubDate>Sat, 11 Nov 2006 16:24:37 +0000</pubDate>
		<dc:creator>HeikoMaass</dc:creator>
				<category><![CDATA[Bluetooth Basics]]></category>
		<category><![CDATA[Mobile Multiplexer]]></category>

		<guid isPermaLink="false">http://www.javablog.ch/?p=31</guid>
		<description><![CDATA[Ausgangspunkt für die Suche von Bluetoothgeräten ist die Klasse DiscoveryAgent. Sie erlaubt die Suche nach Geräten und Diensten. Dabei wird die Suche im Hintergrund ausgeführt und blockiert nicht die Applikation. Wird ein Gerät oder ein Dienst gefunden, dann wird dies über ein Listener, dem DiscoveryListener, mitgeteilt. Der Entwickler implementiert diesen Listener und übergibt ihn beim [...]]]></description>
			<content:encoded><![CDATA[<p>Ausgangspunkt für die Suche von Bluetoothgeräten ist die Klasse <code>DiscoveryAgent</code>. Sie erlaubt<br />
die Suche nach Geräten und Diensten. Dabei wird die Suche im Hintergrund ausgeführt und blockiert nicht die Applikation. Wird ein Gerät oder ein Dienst gefunden, dann wird dies über ein Listener, dem <code>DiscoveryListener, </code> mitgeteilt. </p>
<p>Der Entwickler implementiert diesen Listener und übergibt ihn beim Start der Suche. Die JABWT-Implementierung ruft die Methoden dieses Listeners auf und übermittelt gefundene Geräte (Klasse <code>RemoteDevice</code>) bzw. Dienste (Interface <code>ServiceRecord</code>) als Übergabeparameter. Mit Hilfe dieser Objekte erhält man den Connection String (den wir ja nicht mehr hartcodieren möchten <img src='http://www.javablog.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<p>Im nachfolgenden Beispiel wird zunächst eine Suche nach Geräten mit der major device class &#8220;peripheral&#8221; ausgeführt. Anschliessend wird auf einem gefundenen Gerät die Suche nach dem RFCOMM-Dienst gestartet.</p>
<p><strong>Beispielcode:</strong></p>
<div class="codeblock">
<div class="java" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">...</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #537799;font-weight: bold;">DiscoveryListener</span> listener &nbsp; &nbsp; &nbsp;= <span style="color: #222222; font-weight: bold;">new</span> DiscoveryListener<span style="color: #111111;">&#40;</span><span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color: #222222; font-weight: bold;">public</span> <span style="color: #222222; font-weight: bold;">void</span> deviceDiscovered<span style="color: #111111;">&#40;</span>RemoteDevice remoteDevice, DeviceClass deviceClass<span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Ein Bluetoothgerät wurde gefunden.</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Filterung nach Major Device Class &quot;Peripheral&quot;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">if</span> <span style="color: #111111;">&#40;</span><span style="color: #111111;">&#40;</span>deviceClass.<span style="color: #537799;font-weight: bold;">getMajorDeviceClass</span><span style="color: #111111;">&#40;</span><span style="color: #111111;">&#41;</span> &amp;#<span style="color: #cc66cc;">038</span>; 0x500<span style="color: #111111;">&#41;</span> != <span style="color: #cc66cc;">0</span><span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Speichern des remoteDevice in eine Liste</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ...</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">public</span> <span style="color: #222222; font-weight: bold;">void</span> servicesDiscovered<span style="color: #111111;">&#40;</span><span style="color: #222222; font-weight: bold;">int</span> i, ServiceRecord<span style="color: #111111;">&#91;</span><span style="color: #111111;">&#93;</span> sr<span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Ein oder mehrere Dienste wurden gefunden.</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">int</span> reqSecurity = ServiceRecord.<span style="color: #537799;font-weight: bold;">NOAUTHENTICATE_NOENCRYPT</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">boolean</span> mustBeMaster = <span style="color: #222222; font-weight: bold;">false</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #415D77; ">String</span></a> connectionURL = sr<span style="color: #111111;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #111111;">&#93;</span>.<span style="color: #537799;font-weight: bold;">getConnectionURL</span><span style="color: #111111;">&#40;</span>reqSecurity, mustBeMaster<span style="color: #111111;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ...</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">public</span> <span style="color: #222222; font-weight: bold;">void</span> serviceSearchCompleted<span style="color: #111111;">&#40;</span><span style="color: #222222; font-weight: bold;">int</span> transactionID, <span style="color: #222222; font-weight: bold;">int</span> responseCode<span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Abschluss der Suche nach Diensten.</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">if</span> <span style="color: #111111;">&#40;</span>responseCode == DiscoveryListener.<span style="color: #537799;font-weight: bold;">SERVICE_SEARCH_ERROR</span><span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Suche war nicht erfolgreich -&gt; Fehlerbehandlung</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ...</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">public</span> <span style="color: #222222; font-weight: bold;">void</span> inquiryCompleted<span style="color: #111111;">&#40;</span><span style="color: #222222; font-weight: bold;">int</span> discType<span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Abschluss der Suche nach Geräten.</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">if</span> <span style="color: #111111;">&#40;</span>discType == DiscoveryListener.<span style="color: #537799;font-weight: bold;">INQUIRY_ERROR</span><span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Suche war nicht erfolgreich -&gt; Fehlerbehandlung</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ...</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">LocalDevice local &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; = LocalDevice.<span style="color: #537799;font-weight: bold;">getLocalDevice</span><span style="color: #111111;">&#40;</span><span style="color: #111111;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">DiscoveryAgent agent &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; = local.<span style="color: #537799;font-weight: bold;">getDiscoveryAgent</span><span style="color: #111111;">&#40;</span><span style="color: #111111;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">// Suche nach Geräten starten</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">agent.<span style="color: #537799;font-weight: bold;">startInquiry</span><span style="color: #111111;">&#40;</span>DiscoveryAgent.<span style="color: #537799;font-weight: bold;">GIAC</span>, listener<span style="color: #111111;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">...</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">// Suche nach RFCOMM Dienst (0x0003) auf einem bereits gefundenen Gerät starten</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">UUID<span style="color: #111111;">&#91;</span><span style="color: #111111;">&#93;</span> uuidSet = <span style="color: #222222; font-weight: bold;">new</span> UUID<span style="color: #111111;">&#91;</span><span style="color: #111111;">&#93;</span> <span style="color: #111111;">&#123;</span> <span style="color: #222222; font-weight: bold;">new</span> UUID<span style="color: #111111;">&#40;</span>0x0003<span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#125;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #222222; font-weight: bold;">int</span><span style="color: #111111;">&#91;</span><span style="color: #111111;">&#93;</span> attrSet &nbsp;= <span style="color: #222222; font-weight: bold;">null</span>; <span style="color: #808080; font-style: italic;">// null, weil uns nur die Default Attribute interessieren</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">agent.<span style="color: #537799;font-weight: bold;">searchServices</span><span style="color: #111111;">&#40;</span>attrSet, uuidSet, remoteDevice, listener<span style="color: #111111;">&#41;</span>;</div></li></ol></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.javablog.ch/2006/11/11/jabwt-jsr-82-teil-5-discovery-agent-und-discoverylistener/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JABWT (JSR-82) Teil 4: Grundlagen für Erkennung von Diensten und Geräten</title>
		<link>http://www.javablog.ch/2006/10/29/jabwt-jsr-82-teil-4-grundlagen-fur-erkennung-von-diensten-und-geraten/</link>
		<comments>http://www.javablog.ch/2006/10/29/jabwt-jsr-82-teil-4-grundlagen-fur-erkennung-von-diensten-und-geraten/#comments</comments>
		<pubDate>Sun, 29 Oct 2006 17:12:25 +0000</pubDate>
		<dc:creator>HeikoMaass</dc:creator>
				<category><![CDATA[Bluetooth Basics]]></category>

		<guid isPermaLink="false">http://www.javablog.ch/?p=30</guid>
		<description><![CDATA[Wie kann man ein Bluetoothgerät zur Laufzeit finden? Das Bluetoothprotokoll unterschiedet zwischen Erkennung von Diensten (Services) und Geräten (Devices). Um eine gezielte Suche zu ermöglichen, wird jedes Bluetoothgerät mit folgenden Informationen gekennzeichnet: major service class (&#8220;Positioning&#8221;, &#8220;Telephony&#8221; oder &#8220;Networking&#8221;) major device class (Grobe Klassifizierung des Geräts z.B. &#8220;Peripheral&#8221; oder &#8220;Audio/Video&#8221;) minor device class (Genauere Spezifikation [...]]]></description>
			<content:encoded><![CDATA[<p>Wie kann man ein Bluetoothgerät zur Laufzeit finden? Das Bluetoothprotokoll unterschiedet zwischen <strong>Erkennung von Diensten (Services) und Geräten (Devices)</strong>. Um eine gezielte Suche zu ermöglichen, wird jedes Bluetoothgerät mit folgenden Informationen gekennzeichnet:</p>
<ul>
<li><strong>major service class</strong> (&#8220;Positioning&#8221;, &#8220;Telephony&#8221; oder &#8220;Networking&#8221;)</li>
<li><strong>major device class</strong>  (Grobe Klassifizierung des Geräts z.B. &#8220;Peripheral&#8221; oder &#8220;Audio/Video&#8221;)</li>
<li><strong>minor device class</strong>  (Genauere Spezifikation der &#8220;major device class&#8221; z.B. &#8220;Keyboard&#8221;)</li>
</ul>
<p>Da ein Gerät mehrere Dienste anbieten kann, sind mehrere &#8220;major service class&#8221; Einträge möglich. </p>
<p><strong>Es gibt zwei Typen der Gerätesuche (&#8220;Inquiry&#8221;)</strong>: &#8220;General/Unlimited Inquiry&#8221; und &#8220;Limited Dedicated Inquiry&#8221;. Die &#8220;Limited Dedicated Inquiry&#8221; liefert als Suchergebnis nur Geräte, die nur für eine begrenze Zeitdauer gefunden werden können (z.B. PDAs). Ein Bluetooth-Gerät kann sich also in drei verschiedenen Modi befinden: &#8220;general&#8221;, &#8220;limited&#8221; oder &#8220;not discoverable&#8221;.</p>
<p>Im nächsten Teil stelle ich den <code>DiscoveryAgent </code>und den <code>DiscoveryListener </code> vor, mit denen im JABWT die Suche nach Geräten und Diensten ausgeführt wird.</p>
<p>P.S.: Etwas ärgerlich finde ich, dass die offiziellen Bluetooth Spezifikationen nur mit einem sog. Adopter Account runtergeladen werden können. Und den bekommt man nur wenn man das &#8220;Bluetooth Trademark Licence Agreement&#8221; unterzeichnet(!). </p>
<p><img src="http://www.javablog.ch/wp-content/uploads/2006/10/bluetooth_member.png" alt="Das Bild zeigt die Registrationsvorschriften von bluetooth.org: '...It is your responsibility to print, sign, and return the Bluetooth Trademark License Agreement (BTLA) to: ...'" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.javablog.ch/2006/10/29/jabwt-jsr-82-teil-4-grundlagen-fur-erkennung-von-diensten-und-geraten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JABWT (JSR-82) Teil 3: RFCOMM Beispiel</title>
		<link>http://www.javablog.ch/2006/10/17/jabwt-jsr-82-teil-3-rfcomm-beispiel/</link>
		<comments>http://www.javablog.ch/2006/10/17/jabwt-jsr-82-teil-3-rfcomm-beispiel/#comments</comments>
		<pubDate>Tue, 17 Oct 2006 19:59:36 +0000</pubDate>
		<dc:creator>HeikoMaass</dc:creator>
				<category><![CDATA[Bluetooth Basics]]></category>
		<category><![CDATA[Mobile Multiplexer]]></category>

		<guid isPermaLink="false">http://www.javablog.ch/?p=28</guid>
		<description><![CDATA[Das nachfolgende Codebeispiel zeigt sehr vereinfacht einen Zugriff auf einen GPS Empfänger. Zunächst wird über die Connector Klasse ein StreamConnection Objekt geholt, mit Hilfe dessen ein InputStream geöffnet wird. Über diesen Stream schickt der GPS Empfänger laufend NMEA-Messages, die die aktuelle Position angeben. Unser Beispielcode interpretiert die ersten ankommenden 256 Bytes als String. Das ist [...]]]></description>
			<content:encoded><![CDATA[<p>Das nachfolgende Codebeispiel zeigt sehr vereinfacht einen Zugriff auf einen GPS Empfänger. </p>
<p>Zunächst wird über die <code>Connector </code>Klasse ein <code>StreamConnection </code>Objekt geholt, mit Hilfe dessen ein <code>InputStream </code>geöffnet wird.  Über diesen Stream schickt der GPS Empfänger laufend <a href="http://www.kowoma.de/gps/zusatzerklaerungen/NMEA.htm">NMEA</a>-Messages, die die aktuelle Position angeben. Unser Beispielcode interpretiert die ersten ankommenden 256 Bytes als String. Das ist ausreichend um mindestens 1 NMEA-Message komplett zu empfangen. Anschliessend wird die Verbindung im <code>finally </code>Block geschlossen.</p>
<div class="codeblock">
<div class="java" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import java.io.IOException;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import java.io.InputStream;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import javax.microedition.io.Connector;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #a1a100;">import javax.microedition.io.StreamConnection;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">...</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #537799;font-weight: bold;">StreamConnection</span> conn &nbsp; = <span style="color: #222222; font-weight: bold;">null</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AInputStream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #415D77; ">InputStream</span></a> is &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; = <span style="color: #222222; font-weight: bold;">null</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #415D77; ">String</span></a> message &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; = <span style="color: #222222; font-weight: bold;">null</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #222222; font-weight: bold;">try</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; conn = <span style="color: #111111;">&#40;</span>StreamConnection<span style="color: #111111;">&#41;</span> Connector.<span style="color: #537799;font-weight: bold;">open</span> <span style="color: #111111;">&#40;</span><span style="color: #CF6F35;">&quot;btspp://008049323FAE:1&quot;</span>,</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Connector.<span style="color: #537799;font-weight: bold;">READ</span><span style="color: #111111;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; is = conn.<span style="color: #537799;font-weight: bold;">openInputStream</span><span style="color: #111111;">&#40;</span><span style="color: #111111;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">byte</span> buffer<span style="color: #111111;">&#91;</span><span style="color: #111111;">&#93;</span> = <span style="color: #222222; font-weight: bold;">new</span> <span style="color: #222222; font-weight: bold;">byte</span><span style="color: #111111;">&#91;</span><span style="color: #cc66cc;">256</span><span style="color: #111111;">&#93;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; is.<span style="color: #537799;font-weight: bold;">read</span><span style="color: #111111;">&#40;</span>buffer<span style="color: #111111;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; message = <span style="color: #222222; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #415D77; ">String</span></a><span style="color: #111111;">&#40;</span>buffer<span style="color: #111111;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #111111;">&#125;</span> <span style="color: #222222; font-weight: bold;">catch</span> <span style="color: #111111;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AIOException+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #415D77; ">IOException</span></a> io<span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// handle exception</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #111111;">&#125;</span> <span style="color: #222222; font-weight: bold;">finally</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">if</span> <span style="color: #111111;">&#40;</span>conn != <span style="color: #222222; font-weight: bold;">null</span><span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">try</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; conn.<span style="color: #537799;font-weight: bold;">close</span><span style="color: #111111;">&#40;</span><span style="color: #111111;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #111111;">&#125;</span> <span style="color: #222222; font-weight: bold;">catch</span> <span style="color: #111111;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AIOException+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #415D77; ">IOException</span></a> ignored<span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span><span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">if</span> <span style="color: #111111;">&#40;</span>is != <span style="color: #222222; font-weight: bold;">null</span><span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #222222; font-weight: bold;">try</span> <span style="color: #111111;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; is.<span style="color: #537799;font-weight: bold;">close</span><span style="color: #111111;">&#40;</span><span style="color: #111111;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #111111;">&#125;</span> <span style="color: #222222; font-weight: bold;">catch</span> <span style="color: #111111;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AIOException+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #415D77; ">IOException</span></a> ignored<span style="color: #111111;">&#41;</span> <span style="color: #111111;">&#123;</span><span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #111111;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #111111;">&#125;</span></div></li></ol></div>
</div>
<p>Dieser Code ist natürlich in dieser einfachen Form noch nicht &#8220;produktionstauglich&#8221;. Z.B. würde man den Bluetooth Zugriff in einem separaten Thread oder besser in einem <a href="http://java.sun.com/developer/J2METechTips/2001/tt0416.html">TimerTask </a>auslagern. Zudem ist im Beispiel die Bluetoothadresse noch hartcodiert. Wie man die Adresse zur Laufzeit findet, seht ihr im nächsten Teil <img src='http://www.javablog.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.javablog.ch/2006/10/17/jabwt-jsr-82-teil-3-rfcomm-beispiel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JABWT (JSR-82) Teil 2: RFCOMM</title>
		<link>http://www.javablog.ch/2006/10/09/jabwt-jsr-82-teil-2-rfcomm/</link>
		<comments>http://www.javablog.ch/2006/10/09/jabwt-jsr-82-teil-2-rfcomm/#comments</comments>
		<pubDate>Mon, 09 Oct 2006 18:17:50 +0000</pubDate>
		<dc:creator>HeikoMaass</dc:creator>
				<category><![CDATA[Bluetooth Basics]]></category>
		<category><![CDATA[Mobile Multiplexer]]></category>

		<guid isPermaLink="false">http://www.javablog.ch/?p=27</guid>
		<description><![CDATA[RFCOMM emuliert eine serielle Schnittstelle zwischen zwei Bluetoothgeräten und ist deswegen die &#8220;einfachste&#8221; API in der JABWT Welt. Für die Verwendung des Protokolls wurden keine neuen Klassen definiert. Stattdessen wird das General Connection Framework (GCF) aus der CLDC-Spezifikation verwendet. Das GCF abstrahiert Verbindungen in einer hierarchischen Struktur (Connection, StreamConnection, HttpConnection, usw.). Für das Aufbauen von [...]]]></description>
			<content:encoded><![CDATA[<p>RFCOMM emuliert eine serielle Schnittstelle zwischen zwei Bluetoothgeräten und<br />
ist deswegen die &#8220;einfachste&#8221; API in der JABWT Welt. Für die Verwendung des Protokolls wurden keine neuen Klassen definiert. Stattdessen wird das <a href="http://developers.sun.com/techtopics/mobility/midp/articles/genericframework/">General Connection Framework</a> (GCF) aus der CLDC-Spezifikation verwendet. Das GCF abstrahiert Verbindungen in einer<br />
hierarchischen Struktur (<code>Connection</code>, <code>StreamConnection</code>, <code>HttpConnection</code>, usw.).</p>
<p>Für das Aufbauen von unterschiedlichen Verbindungen ist die <code>Connector </code>Klasse<br />
zuständig. Sie gibt je nach übergebener URL das passende <code>Connection </code>Object zurück<br />
(z.B. <code>HttpConnection </code>bei URL mit dem Schema &#8220;<code>http:</code>&#8220;). Für eine RFCOMM-Verbindung lautet das Schema &#8220;btspp&#8221;. </p>
<p><strong>Beispiel für eine Clientverbindung: </strong><br />
<code>btspp://008049323FAE:1</code><br />
schema:bluetooth address:server channel</p>
<p>Der Server Channel identifiziert eindeutig einen Bluetoothdienst und ist vergleichbar mit einer TCP/IP Portnummer. Zusätzlich können mit der URL auch Parameter übergeben werden. Für eine Clientverbindung sind folgende Parameter möglich:</p>
<ul>
<li>authenticate	(true oder false) Gibt an, ob das Remotedevice authentifiziert werden muss.</li>
<li>master			(true oder false) Gibt an, dass das Gerät &#8220;Master&#8221; der Verbindung sein muss.</li>
<li>encrypt			(true oder false) Gibt an, dass die Bluetoothverbindung verschlüsselt sein muss.</li>
</ul>
<p><strong>Beispiel mit Parameter:</strong><br />
<code>btspp://008049323FAE:1;master=true;authenticate=true</code></p>
<p>So, genug für heute. Im nächsten Teil gibts Beispiel-Code <img src='http://www.javablog.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.javablog.ch/2006/10/09/jabwt-jsr-82-teil-2-rfcomm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JABWT (JSR-82) &#8211; Teil 1: Bluetooth Protokolle</title>
		<link>http://www.javablog.ch/2006/09/20/jabwt-jsr-82-teil-1-bluetooth-protokolle/</link>
		<comments>http://www.javablog.ch/2006/09/20/jabwt-jsr-82-teil-1-bluetooth-protokolle/#comments</comments>
		<pubDate>Wed, 20 Sep 2006 21:42:00 +0000</pubDate>
		<dc:creator>HeikoMaass</dc:creator>
				<category><![CDATA[Bluetooth Basics]]></category>
		<category><![CDATA[Mobile Multiplexer]]></category>

		<guid isPermaLink="false">http://www.javablog.ch/?p=26</guid>
		<description><![CDATA[JABWT (&#8220;Java APIs for Bluetooth wireless technology&#8221;) ist der Java-Standard (JSR-82) für Bluetooth Applikationen. Mittlerweile wird dieser Standard von vielen aktuellen Mobiltelefonen unterstützt. In dieser Artikelserie geht es um einen sehr groben Überblick über die Möglichkeiten dieser API. Als Einstieg kurz die wichtigsten Bluetooth Protokolle : L2CAP (Logical Link Control and Adaptation Protocol) &#8211; Jede [...]]]></description>
			<content:encoded><![CDATA[<p>JABWT (&#8220;Java APIs for Bluetooth wireless technology&#8221;) ist der Java-Standard (<a href="http://jcp.org/en/jsr/detail?id=82">JSR-82</a>) für Bluetooth Applikationen. Mittlerweile wird dieser Standard von vielen aktuellen Mobiltelefonen <a href="http://www.j2mepolish.org/devices/devices-btapi.html">unterstützt</a>. In dieser Artikelserie geht es um einen sehr groben Überblick über die Möglichkeiten dieser API.</p>
<p>Als Einstieg kurz die wichtigsten Bluetooth Protokolle :</p>
<p><img src="http://www.javablog.ch/wp-content/uploads/2006/09/bluetooth_protokolle.png" alt="Bluetooth Protokolle: L2CAP, RFCOMM, OBEX und SDP" /> </p>
<p><strong>L2CAP </strong>(Logical Link Control and Adaptation Protocol) &#8211; Jede Bluetooth Datenverbindung (Ausnahme: Bluetooth Audio) verwendet das L2CAP Protokoll als Basis. Dieses Protokoll verwendet das HCI (Host Controller Interface) und abstrahiert den eigentlichen Zugriff auf den Bluetooth Controller.  </p>
<p><strong>RFCOMM </strong>(Radio Frequency Communication) simuliert eine oder mehrere RS-232 Serialport Verbindungen zwischen zwei Geräten. Die Daten werden in Form von Streams ausgetauscht.  </p>
<p><strong>OBEX </strong>(Object Exchange Protokoll) baut auf RFCOMM auf und ist als Alternative zu HTTP konzipiert worden. Ein OBEX Request (und auch die Response) kann in kleinere Teile zerlegt und verarbeitet werden. Einsatzzweck ist z.B. das Drucken von Dokumenten (Das Basic Printing Profile basiert auf OBEX)</p>
<p><strong>SDP </strong>(Service Discovery Protokoll) erlaubt das Suchen und Inspizieren von Bluetooth Diensten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javablog.ch/2006/09/20/jabwt-jsr-82-teil-1-bluetooth-protokolle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

