如果我用我的Android设备输入一个信标区域,我喜欢显示一个通知。这在Android有很好的记录
只要应用程序是活动的,这个程序就能工作。当应用程序关闭时我如何获得通知?
发布于 2015-01-26 15:09:07
我自己建立一项服务:
BeaconRangingService.java
public class BeaconRangingService extends Service {
private static final String TAG = BeaconRangingService.class.getSimpleName();
private BeaconManager beaconManager;
@Override
public void onCreate() {
super.onCreate();
beaconManager = BeaconManager.newInstance(getApplicationContext());
beaconManager.setMonitorPeriod(MonitorPeriod.MINIMAL);
beaconManager.setForceScanConfiguration(ForceScanConfiguration.DEFAULT);
beaconManager.registerMonitoringListener(new BeaconManager.MonitoringListener() {
@Override
public void onMonitorStart() {
Log.v(TAG, "start monitoring beacons");
}
@Override
public void onMonitorStop() {
Log.wtf(TAG, "stop monitoring beacons");
}
@Override
public void onBeaconsUpdated(Region region, List<Beacon> list) {
}
@Override
public void onBeaconAppeared(Region region, Beacon beacon) {
Toast.makeText(getApplicationContext(), "Beacon appeared\n BEACON ID: " + beacon.getBeaconUniqueId(), Toast.LENGTH_SHORT).show();
}
@Override
public void onRegionEntered(Region region) {
}
@Override
public void onRegionAbandoned(Region region) {
}
});
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.v(TAG, "service started");
if (!beaconManager.isBluetoothEnabled()) {
Log.w(TAG, "bluetooth disabled, stop service");
stopSelf();
} else {
connect();
}
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
Log.v(TAG, "service destroyed");
beaconManager.stopMonitoring();
beaconManager.disconnect();
beaconManager = null;
super.onDestroy();
}
private void connectBeaconManager() {
try {
beaconManager.connect(new OnServiceBoundListener() {
@Override
public void onServiceBound() {
try {
HashSet<Region> regions = new HashSet<>();
regions.add(Region.EVERYWHERE);
beaconManager.startMonitoring(regions);
} catch (RemoteException e) {
e.printStackTrace();
}
}
});
} catch (RemoteException e) {
throw new IllegalStateException(e);
}
}
} AndroidManifest.xml
<service
android:name="com.your.package.BeaconRangingService"
android:exported="false"/>启动服务
Intent intent = new Intent(this, BeaconRangingService.class);
startService(intent);发布于 2015-01-24 19:34:01
我对kontakt.io一无所知,但是AltBeacon有一个库和参考应用程序,它提供了这个功能。https://github.com/AltBeacon
我相信这是通用的Android功能,对他们的实现没有任何魔力。
发布于 2015-05-08 08:08:24
@erdna你测试过kontakt管理应用的示例吗?有一种方法,在应用程序处于前台时出现Toast,在应用程序在后台工作时出现标准通知。
https://github.com/kontaktio/kontakt-beacon-admin-sample-app
https://stackoverflow.com/questions/28088870
复制相似问题