Saya telah berhasil memodifikasi aplikasi implementasi referensi dari Android Beacon Library menggunakan tata letak beacon berikut , sehingga mendeteksi perangkat iBeacon yang saya miliki:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.bind(this);
}
}
Menjadi baru di internal paket BLE, saya tidak yakin apakah ini adalah tata letak yang benar untuk digunakan. Pustaka ini mendukung standar AltBeacon dan dokumentasinya tidak menyebutkan cara mendeteksi perangkat iBeacon.
- Akankah kode ini mendeteksi semua perangkat iBeacon? yaitu apakah
m:
prefiksnya terlalu membatasi atau apakah urutan byte yang benar yang cocok dengan spesifikasi iBeacon? - Demikian pula, apakah tata letak lainnya sama persis dengan spesifikasi iBeacon?
Referensi:
Jawaban:
Ini berhasil untuk saya: "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24"
Saya tidak berpikir Anda perlu mencocokkan bagian 4c00 karena itu adalah id pabrikan, jadi Anda mungkin dapat membiarkannya dan mulai dengan m: 2-3 = 0215 Semuanya terlihat benar, dan tampaknya berfungsi.
sumber
m:2-3=0215
perubahan memang diperlukan.setBeaconLayout
?Anda dapat mengunduh spesifikasi iBeacon (klik "Unduh Karya Seni dan Spesifikasi").
Dalam versi saat ini ID Perusahaan harus menjadi
0x4C00
, dan jenis suar harus0x0215
. Semua bidang lainnya wajib diisi, dan seperti yang Anda tentukan.Jadi ya, Anda benar dan itu akan mendeteksi semua iBeacons yang sesuai.
OT: Ini juga menentukan bahwa interval iklan harus 100ms, tapi saya benar-benar meragukan semua iBeacons tetap berpegang pada itu.
sumber