2016-05-18 3 views
-1

Я разрабатываю приложение для мониторинга и настройки маяковых устройств. Мне нужно отслеживать сигналы маяковых и Eddystone маяковых устройств. Я прохожу через приложение управления основными приложениями nRF. Он отлично работает. Но для этого мне нужен исходный код. Доступен другой вариант. Просьба получить лучшее решение для анализа маяковых устройств. Заранее спасибо.Мониторинг и настройка маякового радиосигнала 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 в отношении поддержки маяков.