Android RxProximityBeacon
A simple android library that lets you easily query against the Proximity Beacon REST Api in a Reactive manner.
This library has been developed using Retrofit2 and RxJava. It also integrates relevant unit tests and a sample application.
Motivation
Google has provided a sample application to illustrate how to interact with the Proximity Beacon API. I'd like to thanks Google for his effort but I may admit that I'm not very fan of that sample code (huge classes, no seperation on concern, relying on AsyncTask requests...) Lot's of 'stuff' that I wish were avoided when providing open source code.
So I decided to create this library, using RxJava and providing clean Unit Tests (partial so far).
Usage
From Maven Central
Library releases are available on Maven Central; you can add dependencies as follow :
Gradle
compile 'com.turhanoz.android.rxproximitybeacon:0.0.1@aar'
Maven
<dependency>
<groupId>com.turhanoz.android</groupId>
<artifactId>rxproximitybeacon</artifactId>
<version>0.0.1</version>
<type>aar</type>
</dependency>
Supported Android SDK
You can use this library for apps starting from android 2.3.3 (gingerbread /API 10) to android 6 (marshmallow / API 23)
minSdkVersion 10
targetSdkVersion 23
Usage
Each Collection defined in the API documentation has been isolated into a dedicated interface.
// Get an instance of the service you are interested in
RetrofitClient client = new RetrofitClient(oauth2Token);
BeaconsAttachmentService attachmentService = client.getAttachmentService();
// query against the service you want (example of request: listing attachments)
public void listAttachments(String beaconName) {
String nameSpacedType = "*/*";
attachmentService.list(beaconName, nameSpacedType)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.unsubscribeOn(Schedulers.newThread())
.subscribe(new Observer<BeaconAttachmentList>() {
@Override
public void onCompleted() {}
@Override
public void onError(Throwable e) {}
@Override
public void onNext(BeaconAttachmentList beaconAttachmentList) {}
});
}
The sample application has to be customized and has a testing purpose only, intended for developer. Indeed, oauth2Token and raw beacon configuration have been hard coded (so you have to change them manually in the sample).
TODO
Anyone who would like to contribute is more than welcome :)
- update sample to get rid of hardcoded stuff (like oauth2Token, using RxGoogleAuthentication or GoogleSignIn ?)
- enhance UnitTest to validate integrity of pojo binding (while json serializing/deserializing)
- add Service tests (Beacon, BeaconInfo, Attachment, Diagnostic, Namespace) based on what's already started.
- use client.setAuthenticator() instead of AuthorizationInterceptor ?
License
Copyright 2015 Turhan OZ
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.