0

私は J2ME を初めて使用します。J2ME Bluetooth アプリケーション開発を学んでいます。ローカルの Bluetooth デバイスの名前を取得する簡単なコードをいくつか書きました。エミュレータでは問題なく動作しています。しかし、携帯電話で試してみると、次のエラーがスローされます。

  1. 携帯電話の Bluetooth がオフの場合、次のメッセージがスローされますjavax.bluetooth.BlueToothStateException
  2. 携帯電話の Bluetooth がオンになっている場合、次のメッセージがスローされます。 javax.bluetooth.bluetoothstateexception: initialize - GetProperty failed

学習プロセスを進めることができるように、このエラーを取り除くのを手伝ってください。

これが私のコードです:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.bluetooth.*;

public class BluetoothApp3Midlet extends MIDlet implements CommandListener
{
private Display display;
private Form form;
private Command exit;
private LocalDevice local = null;

public void BluetoothApp3Midlet()
{

}

public void startApp() 
{
    form = new Form("Bluetooth Details");
    exit = new Command("Exit",Command.EXIT,1);
    form.addCommand(exit);
    form.setCommandListener(this);
    display = Display.getDisplay(this);
    form.append("Hello");
    form.append("World");
    if(hasBluetoothAPI())
    {
        try
        {
            local = LocalDevice.getLocalDevice();
            String address = local.getBluetoothAddress();
            String name = local.getFriendlyName();
            form.append("Address: "+address+"\n");
            form.append("Name: "+name+"\n");
        }
        catch(Exception e)
        {
            form.append("Error: "+e+"\n");
        }
    }
    else
    {
        form.append("BluetoothAPI not found\n");
    }

    display.setCurrent(form);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command cmd, Displayable d)
{
    if( cmd == exit )
    {
        this.destroyApp(true);
        this.notifyDestroyed();
    }
}

public static boolean hasBluetoothAPI ()
{
    try
    {
        Class.forName ("javax.bluetooth.LocalDevice");
        return true;
    }
    catch (Exception ex)
    {
        return false;
    }
}
}
4

2 に答える 2

2

コードが不完全です。このチュートリアルで説明されているように、他のメソッドを実装する必要があります。

このチュートリアルでは、Bluetooth接続について詳しく説明します。

このPDFファイルもご覧ください。

于 2011-11-29T07:46:46.227 に答える
1

DiscoveryAgent次のようなコードを追加する必要があります。

DiscoveryAgent agent;
agent=local.getdiscoveryagent(discoveryagent.giac,this);
agent.startinquiry(discoveryagent.giac,this);
于 2012-03-28T18:26:34.930 に答える