2013-07-26 13 views
39

AndroidデバイスからiBeacon(iOS 7.0機能)を検出する方法を探しています。私はAndroidのドキュメントを読んでいます.iBeaconはGATTサーバの一種で、その位置を送信しているようです。 Androidのドキュメントでは、そのデータをポーリングしないようにしていますが、検出にはこれが必要であると言われています。Android 4.3でiBeacon bluetooth低エネルギーを結合する

私はたくさんGoogleを使っていますが、このトピックは全く新しいものです(私は新しいタグを作成しました)ので、実装を記述するiOSの世界からressourcesへのリンクがあればうれしいです。また、私がまだ見つけられなかったAndroidのライブラリがあるといいですね。

+0

私はiOSプラットフォームに詳しくはありませんが、BTLEサーバーまたはクライアントだけをサポートできますか? Android BTLEは、ドキュメンテーションがサーバをサポートできることを示唆しているにもかかわらず、クライアントをサポートしているだけです。実際にはサーバーを作成できますが、アドバタイズできません。 –

+0

iOSはサーバーをサポートしています。 WWDC 2013から公開されたAirLocateサンプル(特にALConfigurationViewController)を見てみると、どのように広告をサーバーに設定しているのかが分かります。広告する実際のコードはApple独自のコードの中で深いので、Androidで複製するのは難しいだろうが、iOSアプリケーションをiBeaconとして設定することは完全に可能だ。 – DesignatedNerd

+0

どのデバイスを使用しましたか?これは本当に興味深いでしょう。 – MrningLemn

答えて

67

EDIT:以下のライブラリは、今停止されていますが、交換用のライブラリはここに利用できるようになりました:

https://github.com/AltBeacon/android-beacon-library


私は、AndroidにiOS7 iBeaconのSDKを移植し、そしてだっいます標準的なiBeaconsを見て、その範囲を見積もることができます。コードはこちらです:これが機能するために

https://github.com/RadiusNetworks/android-ibeacon-service

は、あなたが低エネルギーBluetoothのAPIを導入アンドロイド4.3を必要としています。また、低エネルギーのBluetoothチップセットを搭載したデバイスが必要です。

上記の完全なライブラリを使用したくない場合は、独自のライブラリを使用することができます。 iBeaconsは、既知のバイトシーケンスで始まる1秒に1回BLE広告を送信するだけです。 AndroidにBLEスキャンを実行し、各広告を入手し、既知のiBeaconバイトシーケンスで始まるものを探すだけでよい。次に、iBeaconフィールドを解析できます。ここでは、コードこれがどのように行われるかを示している:

https://github.com/RadiusNetworks/android-ibeacon-service/blob/master/src/com/radiusnetworks/ibeacon/IBeacon.java#L177-L231

+1

http://developer.samsung.com/bleは以前のAndroidバージョンで動作しますか?私は自分自身のために見つけ出すつもりだが(うまくいけば、後ではなく早く)、私はここでも質問をするだろうと思った。 –

+0

いいえ、Samsung BLE SDKは、Android 4.3のネイティブSDKとはまったく異なる実装です。理論的には、Samsung BLE SDKで動作するAndroid iBeacon Libraryのバージョンを作成することは可能ですが、その多くは書き直す必要があります。 BLEを搭載したすべてのサムスン機器が、おそらく数ヶ月後にAndroid 4.3へのアップグレードを予定しているとすれば、Samsung BLE SDKのAndroid iBeaconライブラリを移植するだけの価値はありません。 – davidgyoung

+0

@ MarkPeterson非常に以前のバージョンで動作させることができるかどうかを知りたいと思っています。 –

0

私はあなたが何を意味するのか分かりませんでした。データをポーリングするべきではないと書かれたドキュメントへのリンクを提供できましたか?

しかし、iBeaconはサーバーとして機能していると思われます。これは私にとって面白いものです。それは電話自体ではなく、他のデバイスを見つけることを意味するのではないのですか?

https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.position_quality.xml

これはそれが使用する特性です。私にとっては、あなたが探しているデバイスが「ビーコン」であり、電話自体は単なるリスナーであるように思えます。したがって、EHPEとEVPEのデータはポーリングしませんが、実際には変更や "ブロードキャスト"を聞く必要があります。

私はこれについても新しく、本当に具体的なドキュメントを見つけることができませんでした。

私が提供したリンクには、トップコーナーにダウンロードリンクがあります。このリンクは、PDF形式の完全なドキュメントを提供します。あなたはおそらくもっと答えを見つけるでしょう。

2

ここでの唯一の難点は、さらにアプリが実行されていないビーコンを検出することです。 iOS7とは異なり、ネイティブサポートではありません。 iOS7では、BTに登録すると、登録したiBeaconの領域に入ると自動的に通知されます。

IntentServiceとAlarmManagerを使用してAndroid 4.3 APIでiBeaconを実装しました。 30秒ごとにスキャンを行うには(バッテリーの電力を節約するために、それ以上の時間が必要です)。それはユーザーのためにうまくいきます。一致するuuid/major/minorが見つかった場合のみ、通知がトリガーされます。それ以外の場合は、スリープして再度スキャンするために起動します。

これはあなたの質問に対する解決策だと思います。

+0

Blutoothのオーディオに干渉する繰り返しのスキャンが見つかりました。これよりも良い方法が必要です。 –

+0

altbeaconのライブラリには、アプリの起動を含むサンプルがあります。 http://altbeacon.github.io/android-beacon-library/samples.html –

関連する問題