[NetBeans] BlueTooth on Linux on the NetBeans Platform

Linux上のNetBeansでBlueToothの簡単なアプリケーションを作ってみます。
  1. sudo apt-get install libbluetooth-dev
  2. bluecove (http://bluecove.org/) から以下のJarファイルをダウンロード
    • bluecove-2.1.0.jar
    • bluecove-gpl-2.1.0.jar
  3. 新しいNetBeansプラットフォームアプリケーションを作成
  4. 新しいモジュールを作成し、2個のJarファイルをラップする(モジュールのプロパティダイアログへ移動し、ライブラリパネルからWrapped JARsへ遷移して、ラップするJarファイルを選択)
  5. 下記クラス(blecoveのサンプルから持ってきたもの)をモジュールにコピーする。

    public class BlueTooth {
    
        public static final Vector/*<RemoteDevice>*/ devicesDiscovered = new Vector();
    
        public static void main(String[] args) throws IOException, InterruptedException {
    
            final Object inquiryCompletedEvent = new Object();
    
            devicesDiscovered.clear();
    
            DiscoveryListener listener = new DiscoveryListener() {
    
                public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {
                    System.out.println("Device " + btDevice.getBluetoothAddress() + " found");
                    devicesDiscovered.addElement(btDevice);
                    try {
                        System.out.println("     name " + btDevice.getFriendlyName(false));
                    } catch (IOException cantGetDeviceName) {
                    }
                }
    
                public void inquiryCompleted(int discType) {
                    System.out.println("Device Inquiry completed!");
                    synchronized(inquiryCompletedEvent){
                        inquiryCompletedEvent.notifyAll();
                    }
                }
    
                public void serviceSearchCompleted(int transID, int respCode) {
                }
    
                public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
                }
            };
    
            synchronized(inquiryCompletedEvent) {
                boolean started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);
                if (started) {
                    System.out.println("wait for device inquiry to complete...");
                    inquiryCompletedEvent.wait();
                    System.out.println(devicesDiscovered.size() +  " device(s) found");
                }
            }
        }
    }

  6. 新しいファイルダイアログを使って、新しくモジュールインストーラを作成し、以下のようにインストーラを定義する。

    public class Installer extends ModuleInstall {
    
        @Override
        public void restored() {
            try {
                BlueTooth.main(null);
            } catch (IOException ex) {
                Exceptions.printStackTrace(ex);
            } catch (InterruptedException ex) {
                Exceptions.printStackTrace(ex);
            }
        }
    }

アプリケーションを実行すると、NetBeans IDEのOutputウィンドウに次のような文字が表示されるはずです。

BlueCove version 2.1.0 on bluez
wait for device inquiry to complete...
Device 5C57C81C1E63 found
     name Geertjan Wielenga
Device 5C17D3967ADA found
     name LG GU230
Device 00145190B6AB found

[訳注]当然ながら、デバイス名は環境により異なります。

原文はこちら。
http://blogs.sun.com/geertjan/entry/bluetooth_on_linux_on_the

0 件のコメント:

コメントを投稿