8

数日前、Google Play ストアで Bluetooth Smart Scanner ソフトウェアをダウンロードしました。Samsung Galaxy S3 電話にインストールした後、Bluetooth LE デバイスを正常にスキャンできました。

あらゆる方法で Bluetooth LE デバイスをスキャンしようとしましたが、コンピュータには何も表示されませんでした。そこでこのソフトを逆コンパイルするstartLeDiscovery()と、パッケージにメソッドがありましたandroid.bluetoothandroid.jarしかし、私を混乱させたのは、このメソッドが私の Android SDK 15 には存在しなかったことです。

最後に、 のBlutoothAdapter.classファイルとBluetoothDevice.classファイルandroid.jarを Bluetooth Smart Scanner ソフトウェアのファイルに置き換えたのでstartLeDiscovery()、Eclipse でメソッドを正常に呼び出すことができました。ソースコードは以下の通り。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    IntentFilter intent = new IntentFilter();
    intent.addAction(BluetoothDevice.ACTION_FOUND);
    intent.addAction(BluetoothDevice.EXTRA_UUID);
    intent.addAction(BluetoothDevice.ACTION_GATT_PRIMARY_UUID);

    registerReceiver(searchDevices, intent);
    //bluetooth.discovery();      
    bluetooth.startLeDiscovery();

  }  
    private BroadcastReceiver searchDevices = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        BluetoothDevice device = null;

        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);   
            String msg = device.getName()+"\n"+device.getAddress();
            Log.i("hella",msg);
            bluetooth.cancelDiscovery();
            connectDevice(device);
        }
    }       
};`

思った通り、Galaxy s3電話でBluetooth LEデバイスを正常にスキャンしたことがわかりました。そうでなければ、そこにもcom.samsung.bluetoothleパッケージがあることがわかりました。同じように、私はそれを私の中に追加しましたandroid.jar。しかし、そのパッケージのメソッドを使用して LE デバイスに接続できませんでした。

長い間私たちを悩ませてきたこの問題を解決するために、あなたからの助けをお願いします. 開発を容易にするために、私は自分のウェブサイトに貢献android.jarします。startLeDiscovery()メソッドとその他のメソッドがandroid.bluetoothディレクトリに表示されます。もちろん、 ディレクトリにもcom.samsung.bluetoothleパッケージがあります。android

android.jarパッケージはここからダウンロードできます( Mirror )。

4

2 に答える 2

0

このandroid.jarファイルは、Android デバイスで既に利用可能なクラスと見なされます。私の記憶が正しければ、これらのクラスはアプリ用に生成された APK に含まれていないため、com.samsung.bluetoothleクラスをandroid.jar追加してもアプリに追加されません。

逆コンパイルしてファイルに追加する代わりに、 Samsung の Web サイト ( http://developer.samsung.com/bleandroid.jar )から SDK 全体をダウンロードして、推奨される方法で使用してみませんか?

于 2013-05-29T17:32:24.180 に答える
0

AndroidManifest.xml に uses-library タグを設定して、Galaxy S3 Bluetooth ライブラリを使用するようにアプリに指示する必要があります。Samsung は開発者向けのライブラリを公開していないため、コンパイルする独自の jar ファイルを作成する必要がありますが、apk のパッケージに jar を含めないでください。

<uses-library android:name="com.samsung.bluetoothle.BluetoothLEClientProfile" android:required="false" />

BluetoothAdapter と BluetoothDevice のメソッドにアクセスするには、リフレクションを使用して必要なメソッドへの参照を取得し、その方法で呼び出すのが最善です。

于 2013-10-06T13:38:07.440 に答える