2016-07-07 15 views
0

アンドロイドビーコンライブラリでスキャン期間を変更しようとしています。これは私のコードAndroidビーコンでスキャン期間を更新するときのエラー

BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this); 
     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); 

     try { 
      beaconManager.setForegroundScanPeriod(50l); // 1100 mS 
      beaconManager.setForegroundBetweenScanPeriod(0l); // 0ms 
      beaconManager.updateScanPeriods(); 
     } 
     catch (RemoteException e) { 
      Log.e("error", e.getMessage()); 
     } 

私は別のデバイスを試してみましたが、私はいつも BeaconManagerがサービスにバインドされていない、このエラーを取得しています。私はこのエラーを取得しますが、私はあなたがするまでbeaconManager.updateScanPeriods();を呼び出すことはできません

+0

このエラーはどの行からスローされますか? –

+0

try/catch Log.e( "error"、e.getMessage()); – user3235881

答えて

0

を確認していない場合でも、私は走査期間の値が変更さを考えるbeaconManager.bind(BeaconConsumer消費者)を呼び出し、onBeaconServiceConnect(へのコールバックを待つ)

の後には、onBeaconServiceConnect()へのコールバックが返ってきます。そうしないと、質問に記載されているエラーが発生します。 bind()への呼び出しがビーコンスキャンサービスを開始したことを確認します。これは瞬間的ではありません。スキャン期間を更新するための呼び出しを行うと、サービスがまだ開始されていないと失敗します。これは2〜2秒かかります。

つのオプション:

  • 移動onBeaconServiceConnect()内のスキャン期間を設定するコード。
  • コールの前にフォアグラウンドとバックグラウンドのスキャン期間を設定するコードをbind()に移動し、beaconManager.updateScanPeriods();行を削除します。バインドを呼び出す前にスキャン期間を設定すると、サービスの起動時にスキャン期間が自動的に適用されます。
関連する問題