Skip to content

Commit 4cb8367

Browse files
committed
Converted activity to kt code & improved custom context syntax
1 parent e03fc23 commit 4cb8367

File tree

5 files changed

+62
-74
lines changed

5 files changed

+62
-74
lines changed

app/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ dependencies {
2525
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
2626
implementation 'com.android.support:appcompat-v7:28.0.0'
2727
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
28+
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2"
2829
implementation 'com.android.support:design:28.0.0'
2930
implementation "com.android.support:support-v4:28.0.0"
3031
implementation project(path: ':library')

app/src/main/java/com/andreacioccarelli/billingprotectorsample/DetectionActivity.java

-71
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.andreacioccarelli.billingprotectorsample
2+
3+
import android.annotation.SuppressLint
4+
import android.os.Bundle
5+
import android.app.Activity
6+
import android.content.Context
7+
import android.os.Vibrator
8+
import android.support.design.widget.FloatingActionButton
9+
import android.widget.TextView
10+
import android.widget.Toast
11+
12+
import com.andreacioccarelli.billingprotector.*
13+
import kotlinx.coroutines.CoroutineScope
14+
import kotlinx.coroutines.Dispatchers
15+
import kotlinx.coroutines.launch
16+
import java.util.concurrent.TimeUnit
17+
import kotlin.coroutines.CoroutineContext
18+
import kotlin.system.measureTimeMillis
19+
20+
class DetectionActivity : Activity() {
21+
22+
private lateinit var bp: BillingProtector
23+
24+
@SuppressLint("SetTextI18n")
25+
override fun onCreate(savedInstanceState: Bundle?) {
26+
super.onCreate(savedInstanceState)
27+
setContentView(R.layout.activity)
28+
29+
bp = BillingProtector(this)
30+
runRefresh()
31+
32+
val fab = findViewById<FloatingActionButton>(R.id.fab)
33+
fab.setOnClickListener {
34+
val vib = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
35+
vib.vibrate(100)
36+
37+
runRefresh()
38+
}
39+
}
40+
41+
private fun runRefresh() = CoroutineScope(Dispatchers.Main).launch {
42+
val millis = measureTimeMillis { updateData() }
43+
val seconds = TimeUnit.MILLISECONDS.toSeconds(millis)
44+
45+
runOnUiThread {
46+
Toast.makeText(this@DetectionActivity, "Re-computed. time: ${seconds}s", Toast.LENGTH_SHORT).show()
47+
}
48+
}
49+
50+
private var i = 0
51+
@SuppressLint("SetTextI18n")
52+
private suspend fun updateData() {
53+
val mxp = findViewById<TextView>(R.id.mxp)
54+
mxp.text = "i=${i++}\nisRootInstalled: ${bp.isRootInstalled()}\npirateAppsList: ${bp.getPirateAppsListAsync()}"
55+
}
56+
}

app/src/main/res/layout/activity.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
<android.support.v7.widget.Toolbar
1616
android:id="@+id/toolbar"
17-
app:title="Java activity"
17+
app:title="Kt activity"
1818
android:layout_width="match_parent"
1919
android:layout_height="?attr/actionBarSize"
2020
android:background="?attr/colorPrimary"

library/src/main/java/com/andreacioccarelli/billingprotector/BillingProtector.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.andreacioccarelli.billingprotector.data.PirateApp
99
import com.andreacioccarelli.billingprotector.data.SelectionCriteria
1010
import com.andreacioccarelli.billingprotector.utils.RootUtils
1111
import com.andreacioccarelli.billingprotector.utils.assembleAppList
12+
import kotlinx.coroutines.CoroutineDispatcher
1213
import kotlinx.coroutines.CoroutineScope
1314
import kotlinx.coroutines.Dispatchers
1415
import kotlinx.coroutines.withContext
@@ -18,7 +19,8 @@ import kotlinx.coroutines.withContext
1819
*/
1920
class BillingProtector(
2021
private val context: Context,
21-
private val simulateSafeEnvironment: Boolean = false
22+
private val simulateSafeEnvironment: Boolean = false,
23+
private val coroutineContext: CoroutineDispatcher = Dispatchers.Default
2224
) {
2325
/**
2426
* Lazily-evaluated and statically-generated pirate apps list
@@ -49,7 +51,7 @@ class BillingProtector(
4951
* */
5052
suspend fun getPirateAppsListAsync(): List<PirateApp> {
5153
if (simulateSafeEnvironment) return emptyList()
52-
return withContext(CoroutineScope(Dispatchers.Default).coroutineContext) { startScan() }
54+
return withContext(coroutineContext) { startScan() }
5355
}
5456

5557
/**

0 commit comments

Comments
 (0)