少なくともチュートリアルの手順に正確に従うと、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を使用しています
あなたのコードは本当に良いですが、次のコードを正確に追加していますか?
<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機能と互換性のあるデバイス
「機能」を確認することになっています。
PackageManager pm = ctx.getPackageManager();
boolean hasBLE = pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE);
メーカーがこれをどの程度真剣に考えているのか本当にわかりません-私が自分でチェックした唯一の機能はFEATURE_TELEPHONYであり、異なるメーカーは異なる(そして不可解な)方法でそれを処理しますので、あなたの走行距離は異なるかもしれませんが、これはあなたがそれを行うことを意図している方法。
サポートデバイスにBLEがあるかどうかを確認するコードを正しく提供しました。このチェックは、通常Android.hardware.bluetooth_le
という名前のファイルにあるAndroid.hardware.bluetooth_le.xml
という名前のファイルに保存されている機能/system/etc/permissions
が存在するかどうかを確認します。このファイルは、Androidデバイス.
実際、N7 2012はBLEのハードウェアサポートを備えていますが、GoogleのROMはサポートしていません。純度RomがインストールされたN72012があり、BLEデバイスに接続できることを確認できます。
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