Skip to content

Commit f3834d3

Browse files
author
sds100
authored
Merge pull request #187 from sds100/release/1.1.0
merge Release/1.1.0 into master
2 parents ad86cb7 + 1f37660 commit f3834d3

File tree

119 files changed

+1715
-868
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+1715
-868
lines changed

app/build.gradle

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ apply plugin: 'io.fabric'
66

77
android {
88
compileSdkVersion 28
9-
buildToolsVersion = "28.0.4"
9+
buildToolsVersion = '28.0.3'
1010

1111
defaultConfig {
1212
applicationId "io.github.sds100.keymapper"
1313
minSdkVersion 19
1414
targetSdkVersion 28
15-
versionCode 12
16-
versionName "1.1.0-beta.4"
15+
versionCode 13
16+
versionName "1.1.0-beta.5"
1717
vectorDrawables.useSupportLibrary = true
1818
}
1919

@@ -27,8 +27,6 @@ android {
2727
versionNameSuffix "-debug"
2828
}
2929
}
30-
31-
buildToolsVersion '28.0.3'
3230
}
3331

3432
dependencies {
@@ -43,17 +41,17 @@ dependencies {
4341
implementation 'com.hannesdorfmann:adapterdelegates4:4.0.0'
4442
implementation 'com.github.mukeshsolanki:MarkdownView-Android:1.0.8'
4543

46-
implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
47-
implementation 'androidx.core:core-ktx:1.0.1'
44+
implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
45+
implementation 'androidx.core:core-ktx:1.0.2'
4846
implementation 'androidx.fragment:fragment-ktx:1.0.0'
49-
implementation 'androidx.recyclerview:recyclerview:1.0.0'
50-
implementation 'androidx.preference:preference:1.1.0-alpha04'
47+
implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha05'
48+
implementation 'androidx.preference:preference:1.1.0-alpha05'
5149
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
5250
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
5351
implementation "androidx.room:room-runtime:$room_version"
5452

55-
implementation 'com.google.firebase:firebase-core:16.0.8'
56-
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
53+
implementation 'com.google.firebase:firebase-core:16.0.9'
54+
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.0'
5755

5856
kapt "android.arch.lifecycle:compiler:1.1.1"
5957
kapt "androidx.room:room-compiler:$room_version"

app/src/main/AndroidManifest.xml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
<uses-permission android:name="android.permission.INTERNET" />
1414
<uses-permission android:name="android.permission.CAMERA" />
1515
<uses-permission android:name="android.permission.VIBRATE" />
16+
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
17+
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
1618

1719
<uses-permission
1820
android:name="android.permission.WRITE_SETTINGS"
@@ -67,6 +69,10 @@
6769
android:name=".activity.HelpActivity"
6870
android:label="@string/title_help" />
6971

72+
<activity
73+
android:name=".activity.LogActivity"
74+
android:label="@string/title_log" />
75+
7076
<receiver android:name=".broadcastreceiver.KeyMapperBroadcastReceiver" />
7177

7278
<receiver android:name=".broadcastreceiver.BootBroadcastReceiver">
@@ -82,12 +88,15 @@
8288
</intent-filter>
8389
</receiver>
8490

85-
<receiver android:name=".DeviceAdmin" android:permission="android.permission.BIND_DEVICE_ADMIN">
86-
<meta-data android:name="android.app.device_admin"
91+
<receiver
92+
android:name=".DeviceAdmin"
93+
android:permission="android.permission.BIND_DEVICE_ADMIN">
94+
<meta-data
95+
android:name="android.app.device_admin"
8796
android:resource="@xml/device_admin" />
8897

8998
<intent-filter>
90-
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
99+
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
91100
</intent-filter>
92101
</receiver>
93102

app/src/main/java/io/github/sds100/keymapper/Action.kt

Lines changed: 52 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package io.github.sds100.keymapper
22

3+
import android.hardware.camera2.CameraCharacteristics
4+
import android.media.AudioManager
35
import androidx.annotation.StringDef
46
import androidx.room.ColumnInfo
5-
import io.github.sds100.keymapper.SystemAction.CATEGORY_VOLUME
67
import io.github.sds100.keymapper.data.KeyMapDao
78
import io.github.sds100.keymapper.util.ErrorCodeUtils
8-
import io.github.sds100.keymapper.util.SystemActionUtils
99
import java.io.Serializable
1010

1111
/**
@@ -59,6 +59,7 @@ data class Action(
5959
const val EXTRA_PACKAGE_NAME = "extra_package_name"
6060
const val EXTRA_STREAM_TYPE = "extra_stream_type"
6161
const val EXTRA_LENS = "extra_flash"
62+
const val EXTRA_RINGER_MODE = "extra_ringer_mode"
6263
}
6364

6465
constructor(type: ActionType, data: String, extra: Extra) : this(type, data, mutableListOf(extra))
@@ -68,24 +69,59 @@ data class Action(
6869
type == ActionType.KEYCODE ||
6970
type == ActionType.TEXT_BLOCK
7071

72+
fun getExtraData(extraId: String): Result<String> {
73+
migrateExtra(extraId)
7174

72-
fun getExtraData(extraId: String) = extras.find { it.id == extraId }?.data.result(
73-
ErrorCodeUtils.ERROR_CODE_ACTION_EXTRA_NOT_FOUND, extraId
74-
)
75+
return extras.find { it.id == extraId }?.data.result(
76+
ErrorCodeUtils.ERROR_CODE_ACTION_EXTRA_NOT_FOUND, extraId
77+
)
78+
}
79+
80+
private fun migrateExtra(extraId: String) {
81+
//migrate old system action options to new ones (SDK int to key mapper string id)
82+
extras.find { it.id == extraId }?.data?.toIntOrNull().let { extraValueInt ->
83+
when (data) {
84+
SystemAction.VOLUME_DECREASE_STREAM, SystemAction.VOLUME_INCREASE_STREAM ->
85+
when (extraValueInt) {
86+
AudioManager.STREAM_ALARM -> Option.STREAM_ALARM
87+
AudioManager.STREAM_DTMF -> Option.STREAM_DTMF
88+
AudioManager.STREAM_MUSIC -> Option.STREAM_MUSIC
89+
AudioManager.STREAM_NOTIFICATION -> Option.STREAM_NOTIFICATION
90+
AudioManager.STREAM_RING -> Option.STREAM_RING
91+
AudioManager.STREAM_SYSTEM -> Option.STREAM_SYSTEM
92+
AudioManager.STREAM_VOICE_CALL -> Option.STREAM_VOICE_CALL
93+
AudioManager.STREAM_ACCESSIBILITY -> Option.STREAM_ACCESSIBILITY
94+
else -> null
95+
}
96+
97+
SystemAction.TOGGLE_FLASHLIGHT, SystemAction.ENABLE_FLASHLIGHT, SystemAction.DISABLE_FLASHLIGHT ->
98+
when (extraValueInt) {
99+
CameraCharacteristics.LENS_FACING_FRONT -> Option.LENS_FRONT
100+
CameraCharacteristics.LENS_FACING_BACK -> Option.LENS_BACK
101+
else -> null
102+
}
103+
104+
else -> null
105+
106+
}?.let { newExtraValue ->
107+
extras.removeAll { it.id == extraId }
108+
extras.add(Extra(extraId, newExtraValue))
109+
}
110+
}
111+
}
75112
}
76113

77114
val Action?.isVolumeAction: Boolean
78115
get() {
79116
if (this == null) return false
80117

81-
if (type == ActionType.SYSTEM_ACTION) {
82-
val isVolumeAction = SystemActionUtils.getSystemActionDef(data).handle(
83-
onSuccess = { it.category == CATEGORY_VOLUME },
84-
onFailure = { false }
85-
)
86-
87-
return isVolumeAction
88-
}
89-
90-
return false
91-
}
118+
return listOf(
119+
SystemAction.VOLUME_DECREASE_STREAM,
120+
SystemAction.VOLUME_INCREASE_STREAM,
121+
SystemAction.VOLUME_DOWN,
122+
SystemAction.VOLUME_UP,
123+
SystemAction.VOLUME_MUTE,
124+
SystemAction.VOLUME_TOGGLE_MUTE,
125+
SystemAction.VOLUME_UNMUTE
126+
).contains(data)
127+
}

app/src/main/java/io/github/sds100/keymapper/DeviceAdmin.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package io.github.sds100.keymapper
33
import android.app.admin.DeviceAdminReceiver
44
import android.content.Context
55
import android.content.Intent
6-
import org.jetbrains.anko.toast
76

87
/**
98
* Created by sds100 on 31/03/2019.
@@ -12,13 +11,9 @@ import org.jetbrains.anko.toast
1211
class DeviceAdmin : DeviceAdminReceiver() {
1312
override fun onEnabled(context: Context?, intent: Intent?) {
1413
super.onEnabled(context, intent)
15-
16-
context?.toast("Enabled")
1714
}
1815

1916
override fun onDisabled(context: Context?, intent: Intent?) {
2017
super.onDisabled(context, intent)
21-
22-
context?.toast("disabled")
2318
}
2419
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package io.github.sds100.keymapper
2+
3+
import android.hardware.camera2.CameraCharacteristics
4+
import android.media.AudioManager
5+
import android.os.Build
6+
7+
/**
8+
* Created by sds100 on 14/04/2019.
9+
*/
10+
11+
object Option {
12+
//DONT CHANGE THESE IDS!
13+
const val STREAM_ALARM = "option_stream_alarm"
14+
const val STREAM_DTMF = "option_stream_dtmf"
15+
const val STREAM_MUSIC = "option_stream_music"
16+
const val STREAM_NOTIFICATION = "option_stream_notification"
17+
const val STREAM_RING = "option_stream_ring"
18+
const val STREAM_SYSTEM = "option_stream_system"
19+
const val STREAM_VOICE_CALL = "option_stream_voice_call"
20+
21+
const val STREAM_ACCESSIBILITY = "option_stream_accessibility"
22+
23+
const val LENS_FRONT = "option_lens_front"
24+
const val LENS_BACK = "option_lens_back"
25+
26+
const val RINGER_MODE_NORMAL = "option_ringer_mode_normal"
27+
const val RINGER_MODE_VIBRATE = "option_ringer_mode_vibrate"
28+
const val RINGER_MODE_SILENT = "option_ringer_mode_silent"
29+
30+
val STREAMS = sequence {
31+
yieldAll(listOf(STREAM_ALARM,
32+
STREAM_DTMF,
33+
STREAM_MUSIC,
34+
STREAM_NOTIFICATION,
35+
STREAM_RING,
36+
STREAM_SYSTEM,
37+
STREAM_VOICE_CALL
38+
))
39+
40+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
41+
yield(STREAM_ACCESSIBILITY)
42+
}
43+
}.toList()
44+
45+
val OPTION_ID_SDK_ID_MAP = sequence {
46+
yieldAll(listOf(STREAM_ALARM to AudioManager.STREAM_ALARM,
47+
STREAM_DTMF to AudioManager.STREAM_DTMF,
48+
STREAM_MUSIC to AudioManager.STREAM_MUSIC,
49+
STREAM_NOTIFICATION to AudioManager.STREAM_NOTIFICATION,
50+
STREAM_RING to AudioManager.STREAM_RING,
51+
STREAM_SYSTEM to AudioManager.STREAM_SYSTEM,
52+
STREAM_VOICE_CALL to AudioManager.STREAM_VOICE_CALL,
53+
54+
RINGER_MODE_NORMAL to AudioManager.RINGER_MODE_NORMAL,
55+
RINGER_MODE_VIBRATE to AudioManager.RINGER_MODE_VIBRATE,
56+
RINGER_MODE_SILENT to AudioManager.RINGER_MODE_SILENT
57+
))
58+
59+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
60+
yield(STREAM_ACCESSIBILITY to AudioManager.STREAM_ACCESSIBILITY)
61+
}
62+
63+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
64+
yield(LENS_FRONT to CameraCharacteristics.LENS_FACING_FRONT)
65+
yield(LENS_BACK to CameraCharacteristics.LENS_FACING_BACK)
66+
}
67+
}.toMap()
68+
69+
/**
70+
* @return the [Extra] id for where the option is stored in the [Action]
71+
*/
72+
@ExtraId
73+
fun getExtraIdForOption(id: String): String {
74+
return when (id) {
75+
SystemAction.VOLUME_DECREASE_STREAM,
76+
SystemAction.VOLUME_INCREASE_STREAM -> Action.EXTRA_STREAM_TYPE
77+
78+
SystemAction.DISABLE_FLASHLIGHT,
79+
SystemAction.ENABLE_FLASHLIGHT,
80+
SystemAction.TOGGLE_FLASHLIGHT -> Action.EXTRA_LENS
81+
82+
SystemAction.CHANGE_RINGER_MODE -> Action.EXTRA_RINGER_MODE
83+
84+
else -> throw Exception("Can't find an extra id for that system action option $id")
85+
}
86+
}
87+
}

app/src/main/java/io/github/sds100/keymapper/SystemAction.kt

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package io.github.sds100.keymapper
22

3-
import android.os.Build
4-
import androidx.annotation.RequiresApi
5-
63
/**
74
* Created by sds100 on 04/08/2018.
85
*/
@@ -46,21 +43,19 @@ object SystemAction {
4643
const val DISABLE_AUTO_ROTATE = "disable_auto_rotate"
4744
const val PORTRAIT_MODE = "portrait_mode"
4845
const val LANDSCAPE_MODE = "landscape_mode"
46+
const val SWITCH_ORIENTATION = "switch_orientation"
4947

5048
//volume
5149
const val VOLUME_UP = "volume_up"
5250
const val VOLUME_DOWN = "volume_down"
5351
const val VOLUME_SHOW_DIALOG = "volume_show_dialog"
5452
const val VOLUME_DECREASE_STREAM = "volume_decrease_stream"
5553
const val VOLUME_INCREASE_STREAM = "volume_increase_stream"
54+
const val CYCLE_RINGER_MODE = "ringer_mode_cycle"
55+
const val CHANGE_RINGER_MODE = "ringer_mode_change"
5656

57-
@RequiresApi(Build.VERSION_CODES.M)
5857
const val VOLUME_UNMUTE = "volume_unmute"
59-
60-
@RequiresApi(Build.VERSION_CODES.M)
6158
const val VOLUME_MUTE = "volume_mute"
62-
63-
@RequiresApi(Build.VERSION_CODES.M)
6459
const val VOLUME_TOGGLE_MUTE = "volume_toggle_mute"
6560

6661
//status bar
@@ -74,6 +69,8 @@ object SystemAction {
7469
const val PLAY_PAUSE_MEDIA = "play_pause_media"
7570
const val NEXT_TRACK = "next_track"
7671
const val PREVIOUS_TRACK = "previous_track"
72+
const val FAST_FORWARD = "fast_forward"
73+
const val REWIND = "rewind"
7774

7875
//navigation
7976
const val GO_BACK = "go_back"
@@ -85,9 +82,14 @@ object SystemAction {
8582
const val ENABLE_FLASHLIGHT = "enable_flashlight"
8683
const val DISABLE_FLASHLIGHT = "disable_flashlight"
8784

85+
//NFC
86+
const val ENABLE_NFC = "nfc_enable"
87+
const val DISABLE_NFC = "nfc_disable"
88+
const val TOGGLE_NFC = "nfc_toggle"
89+
8890
//other
89-
@RequiresApi(Build.VERSION_CODES.P)
9091
const val SCREENSHOT = "screenshot"
92+
9193
const val OPEN_ASSISTANT = "open_assistant"
9294
const val OPEN_CAMERA = "open_camera"
9395
const val LOCK_DEVICE = "lock_device"
@@ -108,5 +110,6 @@ object SystemAction {
108110
const val CATEGORY_STATUS_BAR = "status_bar"
109111
const val CATEGORY_MEDIA = "media"
110112
const val CATEGORY_FLASHLIGHT = "flashlight"
113+
const val CATEGORY_NFC = "nfc"
111114
const val CATEGORY_OTHER = "other"
112115
}

0 commit comments

Comments
 (0)