ã«ãŒãã«çŸè¡é€šã«è¡ã£ãããšããããŸããïŒ ã¢ããªã¶ã«è¡ããŸãããïŒ ãããããªããããããããªãã¯åœŒå¥³ã®åã«å€§ããªç·ã ããèŠãŸããããããŠãåçèªäœã¯é ãããã ãã§ããã«ãµã€ãºã§ã¯ãããŸããã 人ã
ã¯ããã£ã³ãã¹ããã詳现ã«ç 究ãããã®è©³çŽ°ããã¹ãŠèšæ¶ããããã«é¢ãããã¹ãŠã®è©³çŽ°ãèŠã€ãåºããããšèããŠããŸãã ãããããããã®æ
å ±ããã¹ãŠã¹ããŒããã©ã³ã«çŽæ¥è»¢éãããšã©ããªããŸããïŒ åçèªäœãããã€ã¹ã«èªåèªèº«ã«ã€ããŠäŒããããã«ããæ
å ±ãäŒããŸããïŒ
Googleãããžã§ã¯ãã®Devces Labã®äžéšãšããŠã®Alexey Naberezhnyã«ããèšäº ã
ãã®èšäºã§ã¯ãåé¡ãéåžžã«ãã解決ããiBeaconããã³Eddystoneãã¯ãããžãŒã«ã€ããŠèª¬æããŸãã ãããã®ãã¯ãããžãŒã¯ãå°åã®Bluetooth Low Energyããã€ã¹ïŒããããããŒã³ã³ïŒã䜿çšããŸãã ããŒã³ã³ãšã¯äœããã©ã®ããã«é
眮ãããã©ã®ããã«åäœãããã説æããŸãã
ãœãããŠã§ã¢ãšã³ãžãã¢ã®ããã®ããŒã³ã³
ããŒã³ã³ãšã¯äœããèŠãŠã¿ãŸãããã ã¬ãã¥ãŒã®ããã«ã
habrahabr.ru㯠Accent Systemsã
補é ãã
iBKS105ã¢ãã«ãæäŸããŸããã ããŒã³ã³ã¯å°ããªäžžãç®±ã§ãçé¢ã«äž¡é¢ããŒãã貌ãä»ããããŠãããåºã®ã¬ã©ã¹ãªã©ã®ããããé¢ã«ç°¡åã«åºå®ã§ããŸãã
ããã¯ã©ã®ããã«èŠãããã§ãïŒ
ããŒã³ã³ã¯ãNordic Semiconductors補ã®BLEã¢ãžã¥ãŒã«NRF51822ã®ãããã§ãåäžã®CR2477ããããªãŒã§40ãæéåäœå¯èœã§ãã åæã«ãiBKS105ã¯iBeaconããã³Eddystoneãããã³ã«ããµããŒãããæ倧5ã€ã®åºåãã±ããïŒiBeaconã«1ã€ãEddystoneã«4ã€ïŒãéä¿¡ããŸãã
iBeaconã¯ã2013幎ã«Appleã«ãã£ãŠå°å
¥ãããç¬èªæè¡ã§ãããUUIDïŒ16ãã€ãïŒãã¡ãžã£ãŒãšãã€ããŒïŒå2ãã€ãïŒãããã³TX PowerïŒ1ãã€ãïŒãå«ã1ãã±ããã®éä¿¡ãæäŸããŸãïŒåèš21ãã€ãã UUIDã¯éåžžãããŒã³ã³ã§åäœããã¢ããªã±ãŒã·ã§ã³ã決å®ããããã«äœ¿çšãããã¡ãžã£ãŒ-ããŒã³ã³ã®ã°ã«ãŒãã決å®ãããã€ããŒ-ã°ã«ãŒãå
ã®ããŒã³ã³ã®æ°ã決å®ããŸãã Appleã¯ãUUIDGENãŠãŒãã£ãªãã£ã䜿çšããŠãã®æ
å ±ãçæããããšãæšå¥šããã¹ãã¢å
ã®ããŒã³ã³ã®æ¬¡ã®
äŸãæäŸããŸãã
Appleã¯ãã¯ããŒãºãããŒã³ã³ãã¥ãŒãã³ã°æšæºãæäŸããŠããŸãã ãã ããããã«é¢ããæ
å ±ãååŸããã«ã¯ãiBeakonã©ã€ã»ã³ã¹ãååŸããå¿
èŠããããŸãã
Googleã¯2015幎7æã«
Eddystoneãã¯ãããžãŒãçºæããŸãã
ãiBeaconãšã¯ç°ãªããEddystoneæšæºã¯ãªãŒãã³ã§ããããããããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«åºã¥ãããã€ã¹ã§ãµããŒããããŠããŸãã Eddystoneã¯ç«¶åä»ç€Ÿãããã¯ããã«å€ãã®ããšãã§ããŸãïŒEddystone-UIDïŒ20ãã€ãïŒãEddystone-URLïŒæ倧20ãã€ãïŒãEddystone-TLMïŒ14ãŸãã¯18ãã€ãïŒãããã³2016幎3æ14æ¥ããæ倧4ã€ã®ããŒã¿ãã±ãããå€æããŸããEddystone-EIDïŒ10ãã€ãïŒã Eddysone-UIDã¯ãiBeaconã§äœ¿çšãããããã±ãŒãžã«é¡äŒŒããŠããŸãããEddystone-URLã¯ãããã±ãŒãžãåãåãããã€ã¹ã§éãããšãã§ããURLãéä¿¡ããŸãã Eddystone-TLMããã±ãŒãžã«ã¯ãéä¿¡æ©ã®ããããªãŒé»å§ãåšå²æž©åºŠãé»æºæå
¥ããã®æéãªã©ã®ãã¬ã¡ããªãŒæ
å ±ãå«ãŸããŠããŸããEddystone-EIDïŒEphemeral IDïŒã¯ãWEBãµãŒãã¹ã«ããŒã³ã³ãç»é²ã§ããæå·åãããèå¥åã§ãã Eddystone-TLMã®ææ°ããŒãžã§ã³ã ãã§ãªããAESæå·åããµããŒãããŠããŸãã ã»ãã¥ãªãã£äžã®çç±ãããæ¥ç¶ã確ç«ãããšããããã€ã¹ã¯å
¬ééµã亀æããããŒã³ã³ã¯èå¥åãæ¬äŒŒã©ã³ãã ã«å€æŽããŸãïŒ1ç§ãã9æéã®ééã§ïŒã EddystoneããŒã³ã³ãçºæããããã«ãGoogleã¯ãªãŒãã³ãª
GATTæ§æãµãŒãã¹æšæºãçºæããŸããã Eddystoneãããã³ã«ã®è©³çŽ°ã«ã€ããŠã¯ã
Githubã®ãªã³ã¯ãåç
§ããŠãã ããã
ããŒã³ã³èšå®
æ¢ã«è¿°ã¹ãããã«ãããŒã³ã³ã¯iBeaconãšEddystoneã®äž¡æ¹ã§åäœããŸãã Accent Systemsã¯ãããŒã³ã³ãã«ã¹ã¿ãã€ãºã§ããiOSããã³Androidçšã®iBKS Config Toolã¢ããªããªãªãŒã¹ããŸããã ããã©ã«ãã§ã¯ãããŒã³ã³ã¯é»æºãå
¥ããŠããæåã®30ç§ä»¥å
ã«ã®ã¿ã»ããã¢ããã¢ãŒãã«å
¥ãããšãã§ãããããããŒã³ã³ã賌å
¥ããéã«ä¿è·ã¿ããæ¥ãã§æããªãã§ãã ããïŒ ãã以å€ã®å ŽåãããŒã³ã³ã¯ããããªãŒãéããŠåãå€ããŠãããæ¿å
¥ãçŽãå¿
èŠããããŸãã
Androidã¢ããªã±ãŒã·ã§ã³ã«ã¯ããã¬ã¡ããªæ
å ±ã衚瀺ã§ãããšããå©ç¹ããããŸãã ããŒã³ã³ã«æ¥ç¶ããããšãããšãäžæ®çºæ§ã¡ã¢ãªãã€ã³ã¹ããŒã«ãããŠããå Žåã¯ãäžæ®çºæ§ã¡ã¢ãªã«èšé²ããããã¹ã¯ãŒãã®å
¥åãæ±ããããŸãã
次ã«ãããŒã³ã³ãåäœããã¢ãŒãïŒiBeaconãEddystone UIDãEddystone URLããŸãã¯ãããã®ã¢ãŒãã®æ··åïŒãéžæã§ããŸãã Eddystoneã¢ãŒãã®ãããããæå¹ã«ãªã£ãŠããå ŽåãEddystone-EIDãã±ãããéä¿¡ãããŸãã
ãã®åŸãä»ã®ã¿ã€ãã®èšå®ãè©Šãããšãã§ããŸãïŒ
- ä¿¡å·åŒ·åºŠããã±ããéä¿¡é »åºŠïŒ0.1ã10ç§ïŒãéžæããŸãã
- ãã¹ã¯ãŒããèšå®ããURLãšUIDãéžæããŸãã
- éçºè
ã¢ãŒããã¢ã¯ãã£ãã«ããŸããããã«ããããã€ã§ãããŒã³ã³ã«æ¥ç¶ããiBeaconã¢ãŒãã§ãã¬ã¡ããªãã±ãããéä¿¡ã§ããŸãã
- ãã£ãªãã¬ãŒã·ã§ã³ãå®è¡ããŠä¿¡å·åŒ·åºŠãã©ã¡ãŒã¿ãŒãæž¡ããŸãã ãã®èšå®ã¯ãæ°ããããŒã³ã³ã«é©ããŠããŸãã ãããå®çŸããã«ã¯ãããŒã³ã³ããäžå®ã®è·é¢ã§åã枬å®ããã³ã³ãã£ã®ã¥ã¬ãŒã¿ãŒã®ç®çã®ãã£ãŒã«ãã«å
¥åããå¿
èŠããããŸãã
ããã€ã¹ã«ããŒã³ã³ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããŠããªãå ŽåãiOSã¯å€èŠ³ã«åå¿ããŸããããAndroidã¯éç¥ã衚瀺ããå¿
èŠããããŸãïŒGoogle PlayãµãŒãã¹ã䜿çšïŒã iPhoneã䜿çšããŠããŒã³ã³ã確èªããŸããã çµå±ã®ãšãããããã¯Google Chromeã䜿çšããŠè¡ãã®ãæãç°¡åã§ãã
å
éšAndroid SDK
ããŒã³ã³ãéä¿¡ãããã®ãèŠãŠã¿ãŸãããã
BeaconNotifierãã¹ããããžã§ã¯ããäœæããæš©éBLUETOOTHããã³BLUETOOTH_ADMINãè¿œå ããŸãã ãŸããå°æ¥ã®åä¿¡è
ãšãµãŒãã¹ãããŒã¯ããŸããåä¿¡è
ã¯Bluetoothã®ã¹ããŒã¿ã¹ã®å€åããã£ãããããµãŒãã¹ã¯ããŒã³ã³ãæ¢ããŸãã
<<b>uses-permission android:name="android.permission.BLUETOOTH"</b> /> <<b>uses-permission android:name="android.permission.BLUETOOTH_ADMIN"</b> /> <<b>uses-feature android:name="android.hardware.bluetooth_le" android:required="true"</b> /> <<b>application âŠ</b>> <<b>activity android:name=".MainActivity"</b>> <<b>intent-filter</b>> <<b>action android:name="android.intent.action.MAIN"</b> /> <<b>category android:name="android.intent.category.LAUNCHER"</b> /> </<b>intent-filter</b>> </<b>activity</b>> <<b>receiver android:name=".BTReceiver"</b>> <<b>intent-filter</b>> <<b>action android:name="android.bluetooth.adapter.action.STATE_CHANGED"</b> /> <<b>action android:name="ru.racoondeveloper.beaconnotifyer.WAKE_RECEIVER"</b>/> </<b>intent-filter</b>> </<b>receiver</b>> <<b>service android:name=".BService"</b> /> </<b>application</b>>
åä¿¡è
ã¯2ã€ã®ã¢ã¯ã·ã§ã³ããã£ããããŸããBluetoothã®ãªã³ãšãªããããã³ã¢ããªã±ãŒã·ã§ã³ãéãããšãã«éä¿¡ããã€ã³ãã³ããåããŠãªã³ã«ããŠããµãŒãã¹ãåèµ·åããŸãã
<b>public class</b> BTReceiver <b>extends</b> BroadcastReceiver { <b>private</b> Intent <b>BServiceIntent</b>; @Override <b>public void</b> onReceive(Context context, Intent intent) { <b>final</b> String action = intent.getAction(); <b>if</b> (action.equals(BluetoothAdapter.<i><b>ACTION_STATE_CHANGED</i></b>)) { <b>final int</b> state = intent.getIntExtra(BluetoothAdapter.<i><b>EXTRA_STATE</i></b>, BluetoothAdapter.<i><b>ERROR</i></b>); <b>if</b> (state == BluetoothAdapter.<i><b>STATE_TURNING_OFF</i></b>) { <i>// Bluetooth â </i> <b>if</b> (<b>BServiceIntent</b> != <b>null</b>) { context.stopService(<b>BServiceIntent</b>); <b>BServiceIntent</b> = <b>null</b>; } } <b>if</b> (state == BluetoothAdapter.<i><b>STATE_ON</i></b>) { <i>// Bluetooth â </i> <b>if</b> (<b>BServiceIntent</b> == <b>null</b>) { <b>BServiceIntent</b> = <b>new</b> Intent(context, BService.<b>class</b>); context.startService(<b>BServiceIntent</b>); } } } <b>if</b> (action.equals(<b>"ru.racoondeveloper.beaconnotifyer.WAKE_RECEIVER"</b>)) { <i>// â </i> <b>if</b> (<b>BServiceIntent</b> == <b>null</b>) { <b>BServiceIntent</b> = <b>new</b> Intent(context, BService.<b>class</b>); context.startService(<b>BServiceIntent</b>); } } } }
ãµãŒãã¹ã«ã¯ãBluetooth Low Energyããã€ã¹ãæ¢ããŠããã¹ããªãŒã ãå«ãŸããŸãã ããã€ã¹ãèŠã€ãã£ãããéç¥ãçºè¡ããŠæ€çŽ¢ãç¶è¡ããŸãã
<b>public class</b> BService <b>extends</b> Service { BeaconFinderThread <b>thread</b>; <b>boolean live </b>= <b>true</b>; @Override <b>public</b> IBinder onBind(Intent arg0) { <b>return null</b>; } @Override <b>public int</b> onStartCommand(Intent intent, <b>int</b> flags, <b>int</b> startId) { <i>// </i> <b>thread </b>= <b>new</b> BeaconFinderThread(); <b>thread</b>.start(); <b>return <i>START_STICKY</i></b>; } @Override <b>public void</b> onDestroy() { <i>// </i> <b>live </b>= <b>false</b>; <b>thread </b>= <b>null</b>; <b>super</b>.onDestroy(); } <b>private class</b> BeaconFinderThread <b>extends</b> Thread{ @Override <b>public void</b> run() { <i>// BluetoothAdapter BluetoothLeScanner</i> <b>final</b> BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.<i>getDefaultAdapter</i>(); <b>final</b> BluetoothLeScanner mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner(); <i>// , </i> ScanCallback mScanCallback = <b>new</b> ScanCallback() { @Override <b>public void</b> onScanResult(<b>int</b> callbackType, ScanResult result) { <i>// </i> ScanRecord mScanRecord = result.getScanRecord(); mScanRecord. String resulty = result.getDevice().getAddress() + <b>" â "</b> + result.getRssi() + <b>" â "</b> + mScanRecord.getDeviceName(); <i>// !</i> showNotification(resulty); <i>// , , </i> <b>if</b> (mBluetoothAdapter.getState() == BluetoothAdapter.<i><b>STATE_ON </i></b>&& <b>live</b>) mBluetoothLeScanner.startScan(<b>this</b>); } }; <b>if</b> (mBluetoothAdapter.getState() == BluetoothAdapter.<i><b>STATE_ON </i></b>&& <b>live</b>) mBluetoothLeScanner.startScan(mScanCallback); <b>super</b>.run(); } } <b>private void</b> showNotification(String name) { <i>// </i> Context context = getApplicationContext(); Intent notificationIntent = <b>new</b> Intent(context, MainActivity.<b>class</b>); PendingIntent contentIntent = PendingIntent.<i>getActivity</i>(context, 0, notificationIntent, PendingIntent.<i><b>FLAG_CANCEL_CURRENT</i></b>); Notification.Builder builder = <b>new</b> Notification.Builder(context); builder.setContentIntent(contentIntent) .setSmallIcon(R.mipmap.<i><b>ic_launcher</i></b>) .setContentTitle(<b>"Device found"</b>) .setContentText(name); Notification notification = builder.build(); NotificationManager notificationManager = (NotificationManager) context .getSystemService(Context.<i><b>NOTIFICATION_SERVICE</i></b>); notificationManager.notify(0, notification); } }
ããŒã³ã³ããããŒã¿ãååŸããããã«å¿
èŠãªããšã¯ããã ãã§ãã ååŸãããã®ã¯æ¬¡ã®ãšããã§ãã
ã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒãã¯
Githubã§å
¥æã§ããŸãã
æ®å¿µãªãããããŒã³ã³ããæ
å ±ãåä¿¡ããã«ã¯ç¹å¥ãªã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã ãã ãããã¹ãŠã®ãŠãŒã¶ãŒãã€ã³ã¹ããŒã«ããŠããããã§ã¯ãããŸããã æºåž¯é»è©±ã§Bluetoothããªã³ã«ããŠãã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããã«å¿
èŠãªæ
å ±ãããã«ååŸããæ¹ãã¯ããã«ç°¡åã§ãã Googleããããæ¯æŽããŸãã
ã°ãŒã°ã«
確ãã«ãæã
ã¯ç§ãã¡ã®äžçã«äŸµå
¥ããŸããã
ã¹ããŒããã©ã³åžå Žã®82.8ïŒ
ãå ãã Android OSã¯ãé·ãéiOSã«
åã£ãŠä»£ãããŸãã ã å€ãã®iOSãŠãŒã¶ãŒã¯ãã¹ããŒããã©ã³ã«Google Chromeãã©ãŠã¶ãŒãã€ã³ã¹ããŒã«ããããšã奜ã¿ãŸãã GoogleããããŒã³ã³ãªã©ã®ææãªéçºã«å¯æ¥ã«é¢é£ããååã®äŒç€Ÿã«ãªã£ãããšã¯é©ãããšã§ã¯ãããŸããã ãããã®BLEããã€ã¹ãéä¿¡ã§ããå°éã®æ
å ±ãããšãã°pubnubãè£å®ããã®ã«åœ¹ç«ã€ããã€ãã®ã€ã³ã¿ãŒããããµãŒãã¹ããããŸãããGoogleã¯Google Play Servicesã§ã¯ã©ãŠããµãŒãã¹ã®ãµããŒããçŽæ¥å®è£
ããŠããŸããããã¯ãã»ãšãã©ãã¹ãŠã®Androidããã€ã¹ã«ãããŸãã ãããã£ãŠãGoogleã¯ãã®åéã®ç¬å äŒæ¥ã§ãããšèšããŸãã ãããã£ãŠããã®èšäºã§ã¯GoogleãµãŒãã¹ãæ€èšããŸãã
ããŒã³ã³èšå®
ãåç¥ã®ããã«ãGoogleã®æŠåšåº«ã«ã¯éçºè
åãã®èšå€§ãªæ°ã®ãµãŒãã¹ããããŸãã
GoogleããŒã³ã³ãµãŒãã¹ã¯ã
https ïŒ
//developers.google.com/beacons/dashboardã®ãªã³ã¯ããå
¥æã§ã
ãŸã ã Googleã¯ãã®éç¥ãæè¿ããŸãã
ãµãŒãã¹ã䜿çšããã«ã¯ãããŒã³ã³ãEddystone転éã¢ãŒãïŒUIDãŸãã¯URLïŒã«ããå¿
èŠããããŸãã ãã®ã¢ã¯ã·ã§ã³ã§ã¯ãnRF Connectã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠiBKS105ãæŽæ°ããå¿
èŠããããŸããã
ããŒã³ã³ãGoogleããŒã³ã³ãµãŒãã¹ã«æ¥ç¶ããŸã
ããŒã³ã³ããŒã«ã¢ããªã±ãŒã·ã§ã³ãããŠã³ããŒãããŸãïŒiOSããã³Androidã§å©çšå¯èœã§ãïŒã Googleã¢ã«ãŠã³ãã®äžã«ããã«å
¥ãããããžã§ã¯ããéžæããŸãã ããŒã³ã³ã¯ãæªç»é²ãã¿ãã«è¡šç€ºãããŸãã ãããéžæãããããŒã³ã³ã®ç»é²ããã¯ãªãã¯ããŸãã å®äºãããŒã³ã³ããããžã§ã¯ãã«è¿œå ãããŸããã
ããã§ããµã€ãã«ããŒã³ã³ã衚瀺ãããŸããã ããã¯è¯ãå
åã§ãã
éžæããŠæ§æããŸãã
ããŒã³ã³ã®èª¬æãå Žæãããã¢ãå®å®æ§ãã©ã¡ãŒã¿ãŒãããã³ç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã«å¿
èŠãªä»ã®ããããã£ãèšå®ã§ããŸãã
å®å®æ§ãã©ã¡ãŒã¿ã¯ãããŒã³ã³ãéæ¢ããŠããã移åããŠãããã決å®ããŸãã ããŒã³ã³ãã¹ãã¢å
ã«ããå Žåããããäžã®å Žæãšããã¢ã決å®ããéæ¢ããŠããããšã瀺ãããšãè«ççã§ãã ãŸããããŒã³ã³ããã¹ã®ããã³ãã¬ã©ã¹ã«è²Œãä»ããå Žåãæºåž¯çšã§ããããšã瀺ãå¿
èŠããããå Žæãšåºã瀺ããªãã§ãã ããïŒãã³ãã³ã«ããªãå Žåã®ã¿ïŒã
次ã«ãæ¬åœã«å¿
èŠãªæ
å ±ãããŒã³ã³ã«éä¿¡ãããå¿
èŠããããŸãã [ããŒã³ã³ã®è©³çŽ°ã衚瀺]ããããããŠã³ãªã¹ããéãã[è¿ãã®éç¥]ãéžæããŸãã
æåã¯4ã€ã®ããã¹ããã£ãŒã«ãã®ã¿ã衚瀺ãããŸãããããŒã³ã³ã®æ©èœãéå°è©äŸ¡ããªãã§ãã ããïŒ ããã§ã¯ãGoogle Cloudã«æ¥ç¶ãããããŒã³ã³ããäœããããã®ã§ããããïŒ åœŒãã§ããããšïŒ
- URLã¢ãã¬ã¹ãæž¡ããŸãã
- ããã€ã¹ã«ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããããšãç³ãåºãŸãã
- ã·ã¹ãã ã«ã€ã³ãã³ããéä¿¡ããã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããŠããå Žåã¯ãããéããŸãã
[ã¿ã€ãã«]ãã£ãŒã«ãã«éç¥åãèšå®ãã[説æ]ãã£ãŒã«ãã«ãã®èª¬æãèšå®ããŸãã èšèªãã£ãŒã«ãã¯ããŠãŒã¶ãŒãæ¯åœèªã§ã³ã³ãã³ãã衚瀺ã§ããããã«ãéç¥ã®èšèªãå®çŸ©ããããã«äœ¿çšãããŸãã èšèªã¯ISO 639-1ã³ãŒããèšå®ããŸãïŒã»ãšãã©ã®å Žåã2ã€ã®å°æåãããšãã°ruïŒã
次ã«ãããããããŠã³ãªã¹ãã衚瀺ãããŸãã
- ããŒã³ã³ã«ãããã¯ãŒã¯ã¢ãã¬ã¹ãéä¿¡ãããå Žåã¯ãWeb URLãéžæããŸãã èšå®ã®å Žåãã¢ãã¬ã¹èªäœã®1ã€ã®ãã£ãŒã«ãã®ã¿ãæäŸãããŸãã éåžžã®ãµã€ãã®Eddystone URLãšã¯å¯Ÿç
§çã«ãGoogleãµãŒãã¹ã䜿çšããããŒã³ã³ããã®èª¬æãäŒããŸãã ãã1ã€ã®ãã©ã¹ã¯ãEddystone-URLãããã³ã«ã®16æåãšã¯ç°ãªããä»»æã®é·ãã®ãªã³ã¯ã®è»¢éã§ãã
- ããŒã³ã³ã§ã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã«ã¢ããã¿ã€ãºããå Žåã¯ãã€ã³ã¹ããŒã«ãã©ãŒã«ããã¯ã䜿çšããã¢ããªã®æå³ãéžæããŸãã 3ã€ã®ãã£ãŒã«ãããããŸã-2ã€ã¯ã€ã³ãã³ããéžæããããã«äœ¿çšãã1ã€ã¯ç®çã®ã¢ããªã±ãŒã·ã§ã³ã®ããã±ãŒãžåãæžã蟌ã¿ãŸãã ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããŠããªãå ŽåãGoogle Playã«è»¢éãããŸãã ãã以å€ã®å Žåãã¢ããªã±ãŒã·ã§ã³ã«ã€ã³ãã³ããéä¿¡ãããŸãã
- å¥ã®ãªãã·ã§ã³ã¯ãWeb URLãã©ãŒã«ããã¯ã䜿çšããã¢ããªã®æå³ã§ãã åã®ãã®ãšäŒŒãŠããŸãããã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®ããã€ã¹ã«ã€ã³ã¹ããŒã«ãããŠããªãå Žåãæå®ãããURLã«éä¿¡ãããŸãã
ãããã®èšå®ãå®äºãããã[äœæ]ãã¿ã³ãã¯ãªãã¯ããŸãã ããã¯ç§ãã¡ã®åŽåãç¯çŽããŸãã
ããã§çµæã確èªã§ããŸãã ãããè¡ãã«ã¯ãGoogleã®èšå®->åšèŸºéç¥->ã¹ãã£ã³ã§Androidããã€ã¹ãéžæããŸãã ãµã€ãã®ã³ã³ãã£ã®ã¥ã¬ãŒã¿ã§èšå®ããããŒã¿ã衚瀺ãããã¯ãã§ãã
Eddystoneã®ã»ããã¢ããã¯é£ããã§ãã
ããŒã³ã³ã¯ããã°ã©ããŒã«ãšã£ãŠãã¯ãããžãŒã§ããããšãããã«æããã«ãªããŸãã 4æéããŒãã«ã«åº§ã£ãŠããã¹ãŠãæé©åããå¿
èŠããããŸããã ããŒã³ã³ãåãã©ãã·ã¥ããããŒã«ã©ã€ãºãåŠçããããŸããŸãªããããã£ãéžæããŸããã ããã¯ãããã±ãŒãžããšã¯ã¹ããŒãæžã¿ãã¢ã¯ã·ã§ã³ãã€ã³ãã³ãããã€ã³ããŒãããã³ãã®ä»ã®å€ãã®Androidçšèªã®ç解ã«åªããŠããããšãåæãšããŠããŸãã
ãã¹ãŠããŠãŒã¶ãŒã®ããã«æ©èœããããã«ãããã®ã§ãäœãã€ã³ã¹ããŒã«ããå¿
èŠã¯ãªãã£ãã®ã§ãã¹ããŒããã©ã³ãã»ããã¢ããããæé ã¯éåžžã«ç°¡åã§ããã
ITã€ãã³ããéå¬ããã人ïŒé¡§å®¢ïŒãšããŒã³ã³ãã»ããã¢ããããæºåãã§ãã人ïŒããã©ãŒãã³ã¹ïŒãã€ãªããµãŒãã¹ãMarket Placeãäœæãããšããã¢ã€ãã¢ããããŸãã ããã¯ãããŒã³ã³ã䜿çšããŠITã€ãã³ããæŽçããããã®ææ¡ã®æãäžè¬çãªæ²ç€ºæ¿ã«ãªããŸãã
ããšãã°ãããæ¥ãããã©ãŒããŒã«éç¥ãå±ããŸãïŒ
è«è² æ¥è
ã¯ãåœç€Ÿã®ãµãŒãã¹ã§ãEddystoneã®è»çªå·ãããŒã³ã³ã«çœ®ãæããããã«æ³šæããããšãæãåºããŸãã ããã«ãããéè·¯ãµãŒãã¹ãè»äž¡ãç¹å®ããçé£è»ã®æ°ãæžããããšãã§ããŸãã ç§ãã¡ã®èšäºã«å°ãããŠããããå®è¡ãããšã圌ã¯å ±é
¬ãåãåããäžç-ãã¯ãããžãŒãåãåããŸãã
ãã§ã«è»ãç»é²ããŠãããæ®ãã¯ããã700äžã§ãã
ãããã«
ãã®èšäºãèªãã åŸãæ°ããæè¡ã«èå³ãããããšãé¡ã£ãŠããŸãã ããŒã³ã³ã¯ãæ°å¹ŽåŸã«ã¯ã¹ããŒããã©ã³ãšãšãã«æ¥åžžç掻ã®äžéšã«ãªããšç¢ºä¿¡ããŠããŸãã