/** * BlueCove - Java library for Bluetooth * Copyright (C) 2006-2009 Vlad Skarzhevskyy * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * * @author vlads * @version $Id$ */ package com.intel.bluetooth.javadoc; import java.io.IOException; import java.util.Enumeration; import java.util.Vector; import javax.bluetooth.*; /** * * Minimal ServicesSearch example for javadoc. */ public class ServicesSearch { static final UUID OBEX_OBJECT_PUSH = new UUID(0x1105); static final UUID OBEX_FILE_TRANSFER = new UUID(0x1106); public static final Vector/*<String>*/ serviceFound = new Vector(); public static void main(String[] args) throws IOException, InterruptedException { // First run RemoteDeviceDiscovery and use discoved device RemoteDeviceDiscovery.main(null); serviceFound.clear(); UUID serviceUUID = OBEX_OBJECT_PUSH; if ((args != null) && (args.length > 0)) { serviceUUID = new UUID(args[0], false); } final Object serviceSearchCompletedEvent = new Object(); DiscoveryListener listener = new DiscoveryListener() { public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) { } public void inquiryCompleted(int discType) { } public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { for (int i = 0; i < servRecord.length; i++) { String url = servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); if (url == null) { continue; } serviceFound.add(url); DataElement serviceName = servRecord[i].getAttributeValue(0x0100); if (serviceName != null) { System.out.println("service " + serviceName.getValue() + " found " + url); } else { System.out.println("service found " + url); } } } public void serviceSearchCompleted(int transID, int respCode) { System.out.println("service search completed!"); synchronized(serviceSearchCompletedEvent){ serviceSearchCompletedEvent.notifyAll(); } } }; UUID[] searchUuidSet = new UUID[] { serviceUUID }; int[] attrIDs = new int[] { 0x0100 // Service name }; for(Enumeration en = RemoteDeviceDiscovery.devicesDiscovered.elements(); en.hasMoreElements(); ) { RemoteDevice btDevice = (RemoteDevice)en.nextElement(); synchronized(serviceSearchCompletedEvent) { System.out.println("search services on " + btDevice.getBluetoothAddress() + " " + btDevice.getFriendlyName(false)); LocalDevice.getLocalDevice().getDiscoveryAgent().searchServices(attrIDs, searchUuidSet, btDevice, listener); serviceSearchCompletedEvent.wait(); } } } }