如何从信标获取 id 或 major 或 minor?
How to get id or major or minor from a beacon?
此代码检测到信标,但我无法从中获取 ID 或主要或次要。我尝试使用 beacon.id1() 函数,但它总是 returns null。
我从 3 天开始就尝试实现这个,但我无法弄清楚我是信标技术的新手。我想从信标中获取一个 id。
此代码检测到信标,但我无法从中获取 ID 或主要或次要。我尝试使用 beacon.id1() 函数,但它总是 returns null。
我从 3 天开始就尝试实现这个,但我无法弄清楚我是信标技术的新手。我想从信标中获取一个 id。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
beaconManager.bind( this);
ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
Intent eintent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
int intVal=1;
startActivityForResult(eintent, intVal);
} else {
// The toggle is disabled
BluetoothAdapter bAdapter = BluetoothAdapter.getDefaultAdapter();
bAdapter.disable();
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
beaconManager.unbind((BeaconConsumer) this);
}
public void onBeaconServiceConnect() {
beaconManager.removeAllMonitorNotifiers();
beaconManager.addMonitorNotifier(new MonitorNotifier() {
@Override
public void didEnterRegion(Region region) {
Context context = getApplicationContext();
CharSequence text = "Beacon Found";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Log.d(TAG, "I just saw a beacon for the first time!");
a=beacon.getServiceUuid();
Toast toastt = Toast.makeText(context,"" + a, duration);
toastt.show();
}
@Override
public void didExitRegion(org.altbeacon.beacon.Region region) {
Log.i(TAG, "I no longer see a beacon");
}
@Override
public void didDetermineStateForRegion(int i, org.altbeacon.beacon.Region region) {
//Log.i(TAG, "I have just switched from seeing/not seeing beacons: "+state);
}
});
try {
beaconManager.startMonitoringBeaconsInRegion(new org.altbeacon.beacon.Region("MY_UUID", null, null, null));
//beaconManager.startRangingBeaconsInRegion(new org.altbeacon.beacon.Region("myranging", null, null, null));
}
catch (RemoteException e) { }
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
}
了解使用监控 API,只有当 any 信标(一个或多个)位于与您的 Region
定义相匹配的附近时,您才会收到回调。所示代码定义了一个将所有标识符设置为空的区域。这就是所谓的通配符区域,因为它匹配任何信标。
当您收到 didEnterRegion
的回调时,它会传递您用于开始监视的相同 Region
定义的副本。并且因为您将所有标识符都设置为空(通配符定义),这就是您在检查传递给该方法的 Region
对象的标识符时得到的结果。这些 API 旨在告诉您 组 信标中的任何一个何时出现。
如果你想知道可见信标的具体标识符,你只需要使用测距API。而不是:
beaconManager.startMonitoringBeaconsInRegion(new org.altbeacon.beacon.Region("MY_UUID", null, null, null));
通话:
beaconManager.startRangingBeaconsInRegion(new org.altbeacon.beacon.Region("MY_UUID", null, null, null));
然后像这样设置回调通知程序:
beaconManager.addRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Region region, Collection<Beacon> beacons) {
for (Beacon beacon: beacons} {
Log.d(TAG, "I see a beacon with ID1 of: "+beacon.getID1());
}
}
});
此代码检测到信标,但我无法从中获取 ID 或主要或次要。我尝试使用 beacon.id1() 函数,但它总是 returns null。 我从 3 天开始就尝试实现这个,但我无法弄清楚我是信标技术的新手。我想从信标中获取一个 id。 此代码检测到信标,但我无法从中获取 ID 或主要或次要。我尝试使用 beacon.id1() 函数,但它总是 returns null。 我从 3 天开始就尝试实现这个,但我无法弄清楚我是信标技术的新手。我想从信标中获取一个 id。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
beaconManager.bind( this);
ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
Intent eintent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
int intVal=1;
startActivityForResult(eintent, intVal);
} else {
// The toggle is disabled
BluetoothAdapter bAdapter = BluetoothAdapter.getDefaultAdapter();
bAdapter.disable();
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
beaconManager.unbind((BeaconConsumer) this);
}
public void onBeaconServiceConnect() {
beaconManager.removeAllMonitorNotifiers();
beaconManager.addMonitorNotifier(new MonitorNotifier() {
@Override
public void didEnterRegion(Region region) {
Context context = getApplicationContext();
CharSequence text = "Beacon Found";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Log.d(TAG, "I just saw a beacon for the first time!");
a=beacon.getServiceUuid();
Toast toastt = Toast.makeText(context,"" + a, duration);
toastt.show();
}
@Override
public void didExitRegion(org.altbeacon.beacon.Region region) {
Log.i(TAG, "I no longer see a beacon");
}
@Override
public void didDetermineStateForRegion(int i, org.altbeacon.beacon.Region region) {
//Log.i(TAG, "I have just switched from seeing/not seeing beacons: "+state);
}
});
try {
beaconManager.startMonitoringBeaconsInRegion(new org.altbeacon.beacon.Region("MY_UUID", null, null, null));
//beaconManager.startRangingBeaconsInRegion(new org.altbeacon.beacon.Region("myranging", null, null, null));
}
catch (RemoteException e) { }
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
}
了解使用监控 API,只有当 any 信标(一个或多个)位于与您的 Region
定义相匹配的附近时,您才会收到回调。所示代码定义了一个将所有标识符设置为空的区域。这就是所谓的通配符区域,因为它匹配任何信标。
当您收到 didEnterRegion
的回调时,它会传递您用于开始监视的相同 Region
定义的副本。并且因为您将所有标识符都设置为空(通配符定义),这就是您在检查传递给该方法的 Region
对象的标识符时得到的结果。这些 API 旨在告诉您 组 信标中的任何一个何时出现。
如果你想知道可见信标的具体标识符,你只需要使用测距API。而不是:
beaconManager.startMonitoringBeaconsInRegion(new org.altbeacon.beacon.Region("MY_UUID", null, null, null));
通话:
beaconManager.startRangingBeaconsInRegion(new org.altbeacon.beacon.Region("MY_UUID", null, null, null));
然后像这样设置回调通知程序:
beaconManager.addRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Region region, Collection<Beacon> beacons) {
for (Beacon beacon: beacons} {
Log.d(TAG, "I see a beacon with ID1 of: "+beacon.getID1());
}
}
});