0

マニフェストファイルにアクセス許可を追加してデバイスをペアリングしましたが、ここでクラッシュが発生します。Set pairedDevices = btAdapter.getBondedDevices();

ボタンクリックで接続しようとしています:

private OnClickListener myListener = new OnClickListener() {
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.main_btnYes:
            connectToNXT(); // connect to NXT
                myIntent = new Intent(v.getContext(), SelectSession.class);
                startActivityForResult(myIntent, 0);
            break;
        case R.id.main_btnNo:
            myIntent = new Intent(v.getContext(), ExitScreen.class);
            startActivityForResult(myIntent, 0);
            break;
        }
    }
};

connectToNXT()メソッドは次のとおりです。クラッシュはここで発生します。SetbondedDevices= btAdapter.getBondedDevices(); private void connectToNXT(){

        BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();

        **Set<BluetoothDevice> bondedDevices = btAdapter.getBondedDevices();**

        BluetoothDevice nxtDevice = null;   

}

なぜこれがクラッシュを引き起こすのか誰もが知っていますか?

また、私はandroidとbluetooth(2日:D)にかなり慣れていないので、誰かがandroid bluetoothの優れたチュートリアルを教えてくれるほど親切でしょうか?

ありがとう、

リッチ。

4

3 に答える 3

1

NXTのMACアドレスは、設定メニュー/NXTバージョンにあります。このオプションでは、ID番号はMACアドレスです。USBは必要ありません。

于 2011-09-08T09:09:34.023 に答える
0

私の推測:NullPointerException。btadapter変数がnullであり、そこからメソッドを呼び出そうとすると、NullPointerExceptionが発生します。

しかし、スタックトレースなどを提供することはできませんか?ログがないと、何が起こったのかを知るのは困難です。Eclipseを使用する場合は、Window / Show / Android/Logcatに移動します。

また、アプリケーションをデバッグモードで実行し、アプリがクラッシュする行の直前にブレークポイントを設定して、btadapterに値があるかどうかを確認することもできます。

于 2011-07-25T14:44:22.733 に答える
0

さて、さまざまなコードを試した後(どれも機能しませんでした...)、私はそれらのそれぞれからビットを取得して、NXTで機能させることができました。

ファームウェア2.2.1でSamsungGalaxyAce(android OS)スマートフォンを使用しています

動作する接続方法は次のとおりです。必要に応じて自由に使用してください。

宣言:

    // This is the NXT Mac Address. Each device has a specific Mac. Find it in the Build output when uploading
    // your NXT app to the brick using a USB cable. MUST USE USB CABLE TO SEE MAC ADDRESS!
    final String nxtMac = "00:16:53:05:3C:F5";
    //Important: This is the data stream used to communicate with the NXT.
    private DataOutputStream nxtDos = null;
    BluetoothAdapter localAdapter;
    BluetoothSocket nxtSocket;
    boolean success = false;

接続方法

    //Connect to NXT
    public boolean connectToNXT() {         
        // get the BluetoothDevice of the NXT
        BluetoothDevice nxt = localAdapter.getRemoteDevice(nxtMac);
        //Try to connect to the nxt
        try {
            nxtSocket = nxt.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
            nxtSocket.connect();
            //Get the Data stream
            nxtDos = new DataOutputStream(nxtSocket.getOutputStream());
            success = true;
        } catch (IOException e) {
            Log.d("Bluetooth", "Err: Device not found or cannot connect");
            success = false;
        }
        return success;
    }

必要に応じて、richardcloete@googlemail.comまでメールでお問い合わせください。

リッチ。

于 2011-07-26T15:29:48.493 に答える