Github リポジトリのAltbeacon
( ) が提供する基本的なサンプル アプリケーションを使用しました。Radio Network
私のiBeaconではすべてがフォアグラウンドでのみ機能Monitoring
するようですRanging
フォアグラウンドで動作させるために、次の手順を実行しました。
public class BeaconReferenceApplication extends Application implements BootstrapNotifier, RangeNotifier
{
private static final String TAG = "BeaconReferenceApplication";
private BeaconManager mBeaconManager;
private Region mAllBeaconsRegion;
private BackgroundPowerSaver mBackgroundPowerSaver;
private RegionBootstrap mRegionBootstrap;
private BackgroundPowerSaver backgroundPowerSaver;
@Override
public void onCreate()
{
mAllBeaconsRegion = new Region(getPackageName(), null, null, null);
mBeaconManager = BeaconManager.getInstanceForApplication(this);
mBackgroundPowerSaver = new BackgroundPowerSaver(this);
mRegionBootstrap = new RegionBootstrap(this, mAllBeaconsRegion);
mBeaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
backgroundPowerSaver = new BackgroundPowerSaver(this);
}
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> arg0, Region arg1)
{
System.out.println("app-> didRangeBeaconsInRegion");
}
@Override
public void didDetermineStateForRegion(int arg0, Region arg1)
{
System.out.println("app-> didDetermineStateForRegion");
}
@Override
public void didEnterRegion(Region arg0)
{
System.out.println("app-> didEnterRegion");
try
{
Log.d(TAG, "entered region. starting ranging");
mBeaconManager.setRangeNotifier(this);
mBeaconManager.startRangingBeaconsInRegion(mAllBeaconsRegion);
}
catch(RemoteException e)
{
Log.e(TAG, "Cannot start ranging");
}
Intent intentMainActivity = new Intent(this,MonitoringAndRangingActivity.class);
intentMainActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intentMainActivity);
}
@Override
public void didExitRegion(Region arg0)
{
System.out.println("app-> didExitRegion");
}
public void setMonitoringAndRangingActivity(MonitoringAndRangingActivity activity)
{
mBeaconManager.setBackgroundMode((activity==null)?true:false);
}
}
Edit:
メソッドを追加しましたmBeaconManager.setBackgroundMode(true);
が、助けはありません。stopLE scan() メッセージを受け取るだけでBlutoothAdapter
、すべてが停止します。これをサービスなどに実装する必要がありますか?
しかし、バックグラウンドに移動するとすぐに(戻るかホームに戻る)、ログとcallback methods
応答が停止します。バックグラウンド iBeacon 検出を有効にするために不足しているものはありますか。
どんな入力も恩恵のようなものです。