web-dev-qa-db-ja.com

AndroidデバイスがBluetooth Low Energyをサポートしているかどうかを確認する方法

少なくともチュートリアルの手順に正確に従うと、Nexus 7第1世代はBluetooth Low Energyをサポートしていないようです

http://developer.Android.com/guide/topics/connectivity/bluetooth-le.html

私は次のコードでアプリを終了しています:

 if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
    Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
    finish();
}

確かに、Bluetoothが有効になっていることを確認しました。

質問は、デバイスがBluetooth Low Energy標準をサポートしているかどうかを確実に調べる方法です。

更新:私はAndroid 4.3を使用しています

21
abovesun

あなたのコードは本当に良いですが、次のコードを正確に追加していますか?

<uses-permission Android:name="Android.permission.BLUETOOTH"/>
<uses-permission Android:name="Android.permission.BLUETOOTH_ADMIN"/>

重要なコードは次のとおりです。

<uses-feature Android:name="Android.hardware.bluetooth_le" Android:required="false"/>

アプリケーションが正常に実行できることを確認する必要があるため、

ただし、BLEをサポートしないデバイスでアプリを利用できるようにする場合は、アプリのマニフェストにこの要素を含める必要がありますが、required = "false"を設定する必要があります

そのコードは私のために機能します。

EDIT:BLE機能と互換性のあるデバイス

11
Huy Tower

「機能」を確認することになっています。

PackageManager pm = ctx.getPackageManager();
boolean hasBLE = pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE);

メーカーがこれをどの程度真剣に考えているのか本当にわかりません-私が自分でチェックした唯一の機能はFEATURE_TELEPHONYであり、異なるメーカーは異なる(そして不可解な)方法でそれを処理しますので、あなたの走行距離は異なるかもしれませんが、これはあなたがそれを行うことを意図している方法。

2
Tom

サポートデバイスにBLEがあるかどうかを確認するコードを正しく提供しました。このチェックは、通常Android.hardware.bluetooth_leという名前のファイルにあるAndroid.hardware.bluetooth_le.xmlという名前のファイルに保存されている機能/system/etc/permissionsが存在するかどうかを確認します。このファイルは、Androidデバイス.

0
EarthLord

実際、N7 2012はBLEのハードウェアサポートを備えていますが、GoogleのROMはサポートしていません。純度RomがインストールされたN72012があり、BLEデバイスに接続できることを確認できます。

0
David C

Android BluetoothアーキテクチャがAndroid 4.1から4.2に完全に変更されました。Android Jelly bean 4.2以降では、新しいBluedroidスタックでは利用できないため、Bluetooth Low Energyをサポートします。

http://events.linuxfoundation.org/images/stories/slides/abs2013_rymanowski.pdf

0
ClayMontgomery