Skip to content

Instantly share code, notes, and snippets.

AwarenessFence locationFence = LocationFence.entering(lat, long, radius);
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);
AwarenessFence walkingIntoFence = AwarenessFence.and(locationFence, walkingFence);
dependencies {
compile "com.google.android.gms:play-services-auth-api-phone:11.0.8"
}
void addBroadcastRecieverForSMS() {
Timber.d("addBroadcastReceiverForSMS");
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION);
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Timber.d("SMS Broadcast receiver onReceive()");
public void startSmsRetriever() {
SmsRetrieverClient client = SmsRetriever.getClient(getActivity());
Task<Void> task = client.startSmsRetriever();
task.addOnSuccessListener(aVoid -> {
Timber.d("1 Started listening for SMS");
});
task.addOnFailureListener(e -> {
private void requestHint() {
HintRequest hintRequest = new HintRequest.Builder()
.setPhoneNumberIdentifierSupported(true)
.build();
PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent(
googleApiClient, hintRequest);
try {
getActivity().startIntentSenderForResult(intent.getIntentSender(),
RESOLVE_HINT, null, 0, 0, 0);
class PayBillActivity : BaseActivity() {
lateinit var payBillViewModel : PayBillViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_pay_bill)
payBillViewModel = getViewModel()
payBillViewModel.loadBills()
class PayBillViewModel : BaseViewModel() {
var manager: PayBillManager = PayBillManager()
var bills: StateLiveData<List<SavedBill>> = StateLiveData()
fun loadBills() {
manager.getAll()
.subscribe(bills)
}
abstract class BaseActivity : AppCompatActivity() {
fun <T> LiveData<T>.observe(observer: (T?) -> Unit) = observe(this@BaseActivity, Observer { observer(it) })
fun <T> LiveData<T>.observeNonNull(observer: (T) -> Unit) = observe { if (it != null) observer(it) }
fun <T> EventLiveData<T>.observeEvent(observer: (T) -> Unit) = observeEvent(this@BaseActivity, Observer { if (it != null) observer(it) })
inline fun <reified T : BaseViewModel> getViewModel(): T = ViewModelProviders.of(this)[T::class.java]
open class BaseViewModel : ViewModel() {
private val disposableList = mutableListOf<Disposable>()
// integration with rx
fun <T> Observable<T>.subscribe(stateLiveData: StateLiveData<T>, successOnFirstValue: Boolean = true) = stateLiveData.post(this, successOnFirstValue).also { disposableList.add(it) }
override fun onCleared() {
disposableList.filter { !it.isDisposed }.forEach { it.dispose() }
disposableList.clear()
class StateLiveData<T> : MutableLiveData<T>() {
val state = EventLiveData<State>()
init {
clearState()
}
fun post(observable: Observable<T>, successOnFirstValue: Boolean = true): Disposable {
postLoading()