Skip to content

Commit 752fddc

Browse files
committed
Target API 29
1 parent 9cf5712 commit 752fddc

File tree

9 files changed

+35
-23
lines changed

9 files changed

+35
-23
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
ext {
22
min_sdk_version = 18
3-
target_sdk_version = 28
4-
compile_sdk_version = 28
3+
target_sdk_version = 29
4+
compile_sdk_version = 29
55
build_tools_version = "28.0.3"
66
kotlin_version = '1.3.60'
77
}

library/library.iml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
8989
<excludeFolder url="file://$MODULE_DIR$/build" />
9090
</content>
91-
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
91+
<orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
9292
<orderEntry type="sourceFolder" forTests="false" />
9393
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.13@jar" level="project" />
9494
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" />

sample_app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ dependencies {
7575
implementation project(':library')
7676

7777
implementation "com.jakewharton:butterknife:$butterknife_version"
78-
annotationProcessor "com.jakewharton:butterknife-compiler:$butterknife_version"
78+
kapt "com.jakewharton:butterknife-compiler:$butterknife_version"
7979

8080
implementation "androidx.appcompat:appcompat:$androidx_appcompat_version"
8181
implementation "androidx.recyclerview:recyclerview:$androidx_recyclerview"

sample_app/sample_app.iml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
</compilerSettings>
3232
<compilerArguments>
3333
<option name="destination" value="$MODULE_DIR$/build/tmp/kotlin-classes/debug" />
34-
<option name="classpath" value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions-runtime/1.3.60/a4822c738af07dbe22053c01c81d9fc1e72a91a0/kotlin-android-extensions-runtime-1.3.60.jar:/home/alex/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.60/984644b61450add3bcef8cf20f948fec458b420d/kotlin-stdlib-1.3.60.jar:/home/alex/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.60/538bd29b2d5a7d278a7188f89c3b84183fa37f75/kotlin-stdlib-common-1.3.60.jar:/home/alex/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/91ba645bfc5b1e85a0e8cc60252b45f7/jetified-permissions-1.1.2-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/7fbd6870206c5e86da4c5cf488259a5c/appcompat-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/b6bc82a57e1aed3c7b2680954c2348fb/recyclerview-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/3181872cd0223aedad88b898a1aecae6/butterknife-10.2.1-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/a957387d8a385330af48664ccf391d44/butterknife-runtime-10.2.1-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/40e621c278b97a9ca25a59f9f4eee01f/fragment-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/a0beae8851f580720cd0263c5c8f2dc7/appcompat-resources-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/b47d422c7956fc536ceb8162ad37cde2/drawerlayout-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/e6e05516f582f467b26b3577a3fa6575/viewpager-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/53e8556678c826b271e67bc5b48e4ac0/customview-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/162b62ece754e94d35e8a478b7dd4219/loader-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/b1515e280d11574d82634f1aa7891af3/activity-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/7f17708f64549e5d39bf3d8cfcd6ba63/vectordrawable-animated-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/1f8299bf65ffd44070afb5ccea953911/vectordrawable-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/31ed2e856d808406e8b806fe5c3b7930/core-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/e94b925c9f5daceabbd9d5fdda639fbb/cursoradapter-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/3e64ec7907fa8a1824ce3e6e89fbba2d/versionedparcelable-1.1.0-api.jar:/home/alex/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.1.0/1f27220b47669781457de0d600849a5de0e89909/collection-1.1.0.jar:/home/alex/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-annotations/10.2.1/bc9c85fcb6bed005f7df8dbc90e36330044fd2ad/butterknife-annotations-10.2.1.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/839e85de56dc9367f12b8e876cec92a3/lifecycle-viewmodel-2.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/a1d101a4a849df40bfa4e0e1d97dcf04/lifecycle-runtime-2.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/be55f917f4098b1acdfb2fcb7a3ad712/savedstate-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/8286801f231954aaaff1c98d708250b2/interpolator-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/dd978511849f7f6b6e89a06748f7ea21/lifecycle-livedata-2.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/763631270a37901d4d94ee337c9e1dee/lifecycle-livedata-core-2.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/f12f0f4e0dbb28870e58ed4ca59b373f/core-runtime-2.0.0-api.jar:/home/alex/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar:/home/alex/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.1.0/c67e7807d9cd6c329b9d0218b2ec4e505dd340b7/lifecycle-common-2.1.0.jar:/home/alex/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar:/home/alex/.gradle/caches/modules-2/files-2.1/uk.co.alt236/easycursor-android/1.0.0/eff37cac75a7022839b3cbf8843a2f43ce9ed799/easycursor-android-1.0.0.jar:/home/alex/vcs/mine-android/bluetooth-le-library/library/build/intermediates/compile_library_classes/debug/classes.jar:/home/alex/Dev/android-sdk-linux/platforms/android-28/android.jar:/home/alex/Dev/android-sdk-linux/build-tools/28.0.3/core-lambda-stubs.jar" />
34+
<option name="classpath" value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions-runtime/1.3.60/a4822c738af07dbe22053c01c81d9fc1e72a91a0/kotlin-android-extensions-runtime-1.3.60.jar:/home/alex/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.60/984644b61450add3bcef8cf20f948fec458b420d/kotlin-stdlib-1.3.60.jar:/home/alex/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.60/538bd29b2d5a7d278a7188f89c3b84183fa37f75/kotlin-stdlib-common-1.3.60.jar:/home/alex/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/91ba645bfc5b1e85a0e8cc60252b45f7/jetified-permissions-1.1.2-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/7fbd6870206c5e86da4c5cf488259a5c/appcompat-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/b6bc82a57e1aed3c7b2680954c2348fb/recyclerview-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/3181872cd0223aedad88b898a1aecae6/butterknife-10.2.1-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/a957387d8a385330af48664ccf391d44/butterknife-runtime-10.2.1-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/40e621c278b97a9ca25a59f9f4eee01f/fragment-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/a0beae8851f580720cd0263c5c8f2dc7/appcompat-resources-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/b47d422c7956fc536ceb8162ad37cde2/drawerlayout-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/e6e05516f582f467b26b3577a3fa6575/viewpager-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/53e8556678c826b271e67bc5b48e4ac0/customview-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/162b62ece754e94d35e8a478b7dd4219/loader-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/b1515e280d11574d82634f1aa7891af3/activity-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/7f17708f64549e5d39bf3d8cfcd6ba63/vectordrawable-animated-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/1f8299bf65ffd44070afb5ccea953911/vectordrawable-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/31ed2e856d808406e8b806fe5c3b7930/core-1.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/e94b925c9f5daceabbd9d5fdda639fbb/cursoradapter-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/3e64ec7907fa8a1824ce3e6e89fbba2d/versionedparcelable-1.1.0-api.jar:/home/alex/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.1.0/1f27220b47669781457de0d600849a5de0e89909/collection-1.1.0.jar:/home/alex/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-annotations/10.2.1/bc9c85fcb6bed005f7df8dbc90e36330044fd2ad/butterknife-annotations-10.2.1.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/839e85de56dc9367f12b8e876cec92a3/lifecycle-viewmodel-2.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/a1d101a4a849df40bfa4e0e1d97dcf04/lifecycle-runtime-2.1.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/be55f917f4098b1acdfb2fcb7a3ad712/savedstate-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/8286801f231954aaaff1c98d708250b2/interpolator-1.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/dd978511849f7f6b6e89a06748f7ea21/lifecycle-livedata-2.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/763631270a37901d4d94ee337c9e1dee/lifecycle-livedata-core-2.0.0-api.jar:/home/alex/.gradle/caches/transforms-2/files-2.1/f12f0f4e0dbb28870e58ed4ca59b373f/core-runtime-2.0.0-api.jar:/home/alex/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar:/home/alex/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.1.0/c67e7807d9cd6c329b9d0218b2ec4e505dd340b7/lifecycle-common-2.1.0.jar:/home/alex/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar:/home/alex/.gradle/caches/modules-2/files-2.1/uk.co.alt236/easycursor-android/1.0.0/eff37cac75a7022839b3cbf8843a2f43ce9ed799/easycursor-android-1.0.0.jar:/home/alex/vcs/mine-android/bluetooth-le-library/library/build/intermediates/compile_library_classes/debug/classes.jar:/home/alex/Dev/android-sdk-linux/platforms/android-29/android.jar:/home/alex/Dev/android-sdk-linux/build-tools/28.0.3/core-lambda-stubs.jar" />
3535
<option name="noStdlib" value="true" />
3636
<option name="noReflect" value="true" />
3737
<option name="moduleName" value="sample_app_debug" />
@@ -130,7 +130,7 @@
130130
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
131131
<excludeFolder url="file://$MODULE_DIR$/build" />
132132
</content>
133-
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
133+
<orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
134134
<orderEntry type="sourceFolder" forTests="false" />
135135
<orderEntry type="module-library">
136136
<library name="Gradle: kaptGeneratedClasses">

sample_app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
<uses-permission android:name="android.permission.BLUETOOTH" />
66
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
77

8-
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/>
8+
<uses-permission-sdk-23
9+
android:name="android.permission.ACCESS_COARSE_LOCATION"
10+
android:maxSdkVersion="29" />
11+
<uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION" />
912

1013
<uses-feature
1114
android:name="android.hardware.bluetooth_le"

sample_app/src/main/java/uk/co/alt236/btlescan/ui/main/MainActivity.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,9 @@ public void onLeScan(final BluetoothDevice device, final int rssi, final byte[]
7171
}
7272
}
7373

74-
runOnUiThread(new Runnable() {
75-
@Override
76-
public void run() {
77-
mRecyclerAdapter.setData(itemList);
78-
updateItemCount(mRecyclerAdapter.getItemCount());
79-
}
74+
runOnUiThread(() -> {
75+
mRecyclerAdapter.setData(itemList);
76+
updateItemCount(mRecyclerAdapter.getItemCount());
8077
});
8178
}
8279
};
@@ -166,8 +163,17 @@ private void startScanPrepare() {
166163
// The COARSE_LOCATION permission is only needed after API 23 to do a BTLE scan
167164
//
168165
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
166+
final String permission;
167+
final int message;
168+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
169+
permission = Manifest.permission.ACCESS_FINE_LOCATION;
170+
message = R.string.permission_not_granted_fine_location;
171+
} else {
172+
permission = Manifest.permission.ACCESS_COARSE_LOCATION;
173+
message = R.string.permission_not_granted_coarse_location;
174+
}
169175
PermissionsManager.getInstance().requestPermissionsIfNecessaryForResult(this,
170-
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, new PermissionsResultAction() {
176+
new String[]{permission}, new PermissionsResultAction() {
171177

172178
@Override
173179
public void onGranted() {
@@ -177,7 +183,7 @@ public void onGranted() {
177183
@Override
178184
public void onDenied(String permission) {
179185
Toast.makeText(MainActivity.this,
180-
R.string.permission_not_granted_coarse_location,
186+
message,
181187
Toast.LENGTH_SHORT)
182188
.show();
183189
}

sample_app/src/main/java/uk/co/alt236/btlescan/util/BluetoothLeScanner.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,10 @@ public void scanLeDevice(final int duration, final boolean enable) {
2828
Log.d("TAG", "~ Starting Scan");
2929
// Stops scanning after a pre-defined scan period.
3030
if (duration > 0) {
31-
mHandler.postDelayed(new Runnable() {
32-
@Override
33-
public void run() {
34-
Log.d("TAG", "~ Stopping Scan (timeout)");
35-
mScanning = false;
36-
mBluetoothUtils.getBluetoothAdapter().stopLeScan(mLeScanCallback);
37-
}
31+
mHandler.postDelayed(() -> {
32+
Log.d("TAG", "~ Stopping Scan (timeout)");
33+
mScanning = false;
34+
mBluetoothUtils.getBluetoothAdapter().stopLeScan(mLeScanCallback);
3835
}, duration);
3936
}
4037
mScanning = true;

sample_app/src/main/java/uk/co/alt236/btlescan/util/BluetoothUtils.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@ public final class BluetoothUtils {
1515
public BluetoothUtils(final Activity activity) {
1616
mActivity = activity;
1717
final BluetoothManager btManager = (BluetoothManager) mActivity.getSystemService(Context.BLUETOOTH_SERVICE);
18-
mBluetoothAdapter = btManager.getAdapter();
18+
19+
if (btManager == null) {
20+
throw new IllegalStateException("No bluetooth manager adapter present!");
21+
} else {
22+
mBluetoothAdapter = btManager.getAdapter();
23+
}
1924
}
2025

2126
public void askUserToEnableBluetoothIfNeeded() {

sample_app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,5 @@
7777

7878
<string name="error_unable_to_access_external_storage">"Could not access external storage!"</string>
7979
<string name="permission_not_granted_coarse_location">The ACCESS_COARSE_LOCATION permission is needed to receive bluetooth scan results</string>
80+
<string name="permission_not_granted_fine_location">The ACCESS_FINE_LOCATION permission is needed to receive bluetooth scan results</string>
8081
</resources>

0 commit comments

Comments
 (0)