This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
AwarenessFence locationFence = LocationFence.entering(lat, long, radius); | |
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING); | |
AwarenessFence walkingIntoFence = AwarenessFence.and(locationFence, walkingFence); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dependencies { | |
compile "com.google.android.gms:play-services-auth-api-phone:11.0.8" | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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()"); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 -> { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PayBillViewModel : BaseViewModel() { | |
var manager: PayBillManager = PayBillManager() | |
var bills: StateLiveData<List<SavedBill>> = StateLiveData() | |
fun loadBills() { | |
manager.getAll() | |
.subscribe(bills) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class StateLiveData<T> : MutableLiveData<T>() { | |
val state = EventLiveData<State>() | |
init { | |
clearState() | |
} | |
fun post(observable: Observable<T>, successOnFirstValue: Boolean = true): Disposable { | |
postLoading() |