4

ブルートゥース経由で2つのデバイスを接続しようとしています。できましたが、接続が開始されると、OS からペアリング コードを入力するように求められます。

私がやりたいことは、そのコードをプログラムで与えることです。これらのデバイスを接続し、ユーザーに挿入を求めることなくペアリング コードを送信する方法はありますか?

注: ペアリング コードはありますが、ユーザーに挿入させたくないだけです。代わりに、アプリが保存されている場所からコードを取得して使用します。

注_2: ペアリング コードを使用する必要があります。そのため、ペアリング コードを使用しない createInsecureRfcommSocketToServiceRecord() などで接続することはできません。

4

2 に答える 2

1

リフレクションによる隠しメソッド「setPin(byte[])」の呼び出しが解決策でした。コードを共有します。

private void PairDevice(BluetoothDevice pDevice, String pin)
{
    try
    {   
        Log.d("pairDevice()", "Start Pairing...");

        Method pairMethod = pDevice.getClass().getMethod("setPin", byte[].class);
        Boolean lReturn = (Boolean) pairMethod.invoke(pDevice, pin.getBytes("UTF8"));

        if(lReturn.booleanValue())
        {
            Log.d("pairDevice()", "Pairing Finished...");

            Method bondMethod = pDevice.getClass().getMethod("createBond");
            bondMethod.invoke(pDevice);
        }               
    }
    catch(Exception ex)
    {
        Log.e("pairDevice()", ex.getMessage());
    }
}   

また、この回答と詳細。アンドロイド ブルートゥース セットピン機能

于 2013-08-08T18:49:22.903 に答える
0

このリンクは、必要なものを見つけるのに役立つと思います。

「Bluetooth API で暗号化された接続を開始すると、自動的にペアリングが実行される」と考えていました。リンクの一部。試したことはありませんが、ペアリングは自動的にユーザー入力がないことを意味すると考えていました。

于 2013-08-07T17:22:46.067 に答える