Решите это исключение J2ME Bluetooth - PullRequest
0 голосов
/ 29 ноября 2011

Я новичок в 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;
    }
}
}

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Ваш код неполон. вам нужно реализовать другие методы, как описано в этом руководстве .

Это руководство очень хорошо описывает Bluetooth-соединение.

Вы также можете посмотреть этот файл PDF.

1 голос
/ 28 марта 2012

Вы должны добавить DiscoveryAgent в свой код, например:

DiscoveryAgent agent;
agent=local.getdiscoveryagent(discoveryagent.giac,this);
agent.startinquiry(discoveryagent.giac,this);
...