2016-05-18 11 views
-1

ビーコンデバイスの監視と設定用のアプリケーションを開発中です。私はiBeaconとEddystoneの両方のビーコンデバイスを監視する必要があります。私はnRF Masterコントロールアプリケーションを使いました。その完璧に動作します。しかし、私はそれのためのソースコードが必要です。他にも選択肢はありますか?ビーコンデバイスの解析に最適なソリューションを手に入れてください。前もって感謝します。Androidビーコンの監視と設定

答えて

0

AltBeaconライブラリを使用することをお勧めします。これは私のプロジェクトで使用していますが、それはかなり良い(私はそれとは関係ありません)。ビーコンと対話するためのAPIを提供します。ここで

はあなたが始めるためにサンプルActivityです:

public class MyActivity extends AppCompatActivity implements 
    BeaconConsumer, 
    BootstrapNotifier, 
    RangeNotifier 
{ 
    private RegionBootstrap     mRegionBootstrap; 
    private org.altbeacon.beacon.BeaconManager mAltBeaconManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my_application); 

     mAltBeaconManager = org.altbeacon.beacon.BeaconManager.getInstanceForApplication(MyActivity.this); 

     boolean isBleAvailableAndEnabled; 
     try { 
      isBleAvailableAndEnabled = mAltBeaconManager.checkAvailability(); 
     } catch (BleNotAvailableException ex) { 
      isBleAvailableAndEnabled = false; 
     } 

     if (!isBleAvailableAndEnabled) { 
      // Handle case ... 
      finish(); 
     } 

     // Disable Android L scanning on devices with Android 5.0 and above 
     if (Build.VERSION.SDK_INT >= 21) mAltBeaconManager.setAndroidLScanningDisabled(true); 

     // Add iBeacon Layout 
     mAltBeaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24")); 

     // Add Eddystone Layout 
     mAltBeaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("Eddystone_layout")); 

     mAltBeaconManager.setBackgroundBetweenScanPeriod(3000); // 3 sec 
     mAltBeaconManager.setBackgroundScanPeriod(5000); // 5 sec 
     mAltBeaconManager.bind(MyActivity.this); 

     // Enable Beacon scanning 
     mRegionBootstrap = new RegionBootstrap(MyActivity.this, getScanningRegion()); 
    } 

    @Override 
    public Context getApplicationContext() { 
     return (!isFinishing()) ? MyActivity.this : null); 
    } 

    @Override 
    public void onBeaconServiceConnect() { 
     try { 
      // Attach beacon range listener 
      mAltBeaconManager.setRangeNotifier(this); 
      mAltBeaconManager.startRangingBeaconsInRegion(new Region("Region", null, null, null)); 
     } catch (RemoteException ex) { 
      // Handle exception 
     } 
    } 

    @Override 
    public void unbindService(ServiceConnection serviceConnection) { 
     // Not needed 
    } 

    @Override 
    public boolean bindService(Intent intent, ServiceConnection serviceConnection, int i) { 
     return false; 
    } 

    @Override 
    public void didEnterRegion(Region region) { 
     // Handle event 
    } 

    @Override 
    public void didExitRegion(Region region) { 
     // Handle event 
    } 

    @Override 
    public void didDetermineStateForRegion(int i, Region region) { 
     // Handle event 
    } 

    @Override 
    public void didRangeBeaconsInRegion(Collection<org.altbeacon.beacon.Beacon> rangingBeacons, Region region) { 
     // Here you will receive the beacons which are currently in range 
    } 
} 

は、あなたのマニフェストにこれを追加します。

<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="18" /> 
<uses-permission android:name="android.permission.BLUETOOTH"/> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 

注:をまた、本質的である、このライブラリの制限に注意を払いますビーコンサポートに関するAndroidのソフトウェアとハ​​ードウェアの制限。

関連する問題