0

AndroidデバイスをBluetooth対応デバイスに接続しようとしています。以下の私のコードでわかるように、私はこのデバイスの MAC アドレスを知っています。Toastsまた、コードの手順を確認するためだけにいくつか作成しました。tmp = device.createRfcommSocketToServiceRecord(MY_UUID);Toast は、次のコード行で Bluetooth オブジェクト アドレスを示すメッセージを生成するため、これを想定して作成できたようです。

String test = tmp.toString(); 
Toast.makeText(getApplicationContext(), "The bluetooth socket: " +test, Toast.LENGTH_LONG).show(); 

tmp.connect();しかし、私がAPIレベル15、Android 4.0に取り組んでいるとき、コードは意味的に失敗します

これは私のコードです

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;  
import java.util.UUID;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class SimpleConnectAndroidActivity extends Activity {

final static String toast = "IAM HERE"; 

final static String TAG ="SimpleConnect";
UUID MY_UUID;

BluetoothDevice bd;
BluetoothAdapter ba;

Button connectButton;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

    ba = BluetoothAdapter.getDefaultAdapter();

    connectButton = (Button)findViewById(R.id.button1);
    connectButton.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

            boolean b = ba.checkBluetoothAddress("00:1B:DC:0F:EC:7E");
            BluetoothSocket tmp = null; 

            //If valid bluetoothAddress
            if(b) {
                final BluetoothDevice device = ba.getRemoteDevice("00:1B:DC:0F:EC:7E"); //Getting the Verifier Bluetooth 

                //Trying to create a RFCOMM socket to the device
                try {
                    tmp = device.createRfcommSocketToServiceRecord(MY_UUID);

                } catch (IOException e) {

                }

                try {
                    tmp.connect();
                } catch (IOException e) {
                    Toast.makeText(getApplicationContext(), "No connection was made! Exception: " + e.getMessage(), Toast.LENGTH_LONG).show();
                } 
                //Print out the sockets name
                String test = tmp.toString(); 
                Toast.makeText(getApplicationContext(), "The bluetooth socket: " +test, Toast.LENGTH_LONG).show(); 
            }


            else {
                    Toast.makeText(getApplicationContext(), "FALSE, No bluetooth device with this address", Toast.LENGTH_LONG).show();
                }
            }   
    });  
}

}

これは別のスレッドで行う必要があることを認識しています。はい、Google が提供する Bluetooth チャットの例を読みました。

誰かが私を助けることができますか?

編集

これは、LogCat から取得した唯一のものです。

07-06 10:10:22.085: V/BluetoothSocket.cpp(14019): ...fd 63 created (RFCOMM, lm = 26)

編集2

OK、新しいエラーが発生しましたが、より良いエラーです。接続ボタンを押すと、電話はデバイスをペアリングするための PIN コードを要求しますが、既にペアリングされています! 2 回目のペアリングを行った後、「接続が拒否され、別の例外がタイムアウトしました」というエラーが表示されました。

4

1 に答える 1

2

このコードを使用できます:Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); mySocket = (BluetoothSocket) m.invoke(device, 1);

于 2012-07-06T08:12:47.140 に答える