Skip to content

Commit

Permalink
Merge pull request #187 from sds100/release/1.1.0
Browse files Browse the repository at this point in the history
merge Release/1.1.0 into master
  • Loading branch information
sds100 committed May 19, 2019
2 parents ad86cb7 + 1f37660 commit f3834d3
Show file tree
Hide file tree
Showing 119 changed files with 1,715 additions and 868 deletions.
20 changes: 9 additions & 11 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ apply plugin: 'io.fabric'

android {
compileSdkVersion 28
buildToolsVersion = "28.0.4"
buildToolsVersion = '28.0.3'

defaultConfig {
applicationId "io.github.sds100.keymapper"
minSdkVersion 19
targetSdkVersion 28
versionCode 12
versionName "1.1.0-beta.4"
versionCode 13
versionName "1.1.0-beta.5"
vectorDrawables.useSupportLibrary = true
}

Expand All @@ -27,8 +27,6 @@ android {
versionNameSuffix "-debug"
}
}

buildToolsVersion '28.0.3'
}

dependencies {
Expand All @@ -43,17 +41,17 @@ dependencies {
implementation 'com.hannesdorfmann:adapterdelegates4:4.0.0'
implementation 'com.github.mukeshsolanki:MarkdownView-Android:1.0.8'

implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
implementation 'androidx.core:core-ktx:1.0.1'
implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.fragment:fragment-ktx:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.preference:preference:1.1.0-alpha04'
implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha05'
implementation 'androidx.preference:preference:1.1.0-alpha05'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
implementation "androidx.room:room-runtime:$room_version"

implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
implementation 'com.google.firebase:firebase-core:16.0.9'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.0'

kapt "android.arch.lifecycle:compiler:1.1.1"
kapt "androidx.room:room-compiler:$room_version"
Expand Down
15 changes: 12 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<uses-permission
android:name="android.permission.WRITE_SETTINGS"
Expand Down Expand Up @@ -67,6 +69,10 @@
android:name=".activity.HelpActivity"
android:label="@string/title_help" />

<activity
android:name=".activity.LogActivity"
android:label="@string/title_log" />

<receiver android:name=".broadcastreceiver.KeyMapperBroadcastReceiver" />

<receiver android:name=".broadcastreceiver.BootBroadcastReceiver">
Expand All @@ -82,12 +88,15 @@
</intent-filter>
</receiver>

<receiver android:name=".DeviceAdmin" android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin"
<receiver
android:name=".DeviceAdmin"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin" />

<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>

Expand Down
68 changes: 52 additions & 16 deletions app/src/main/java/io/github/sds100/keymapper/Action.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package io.github.sds100.keymapper

import android.hardware.camera2.CameraCharacteristics
import android.media.AudioManager
import androidx.annotation.StringDef
import androidx.room.ColumnInfo
import io.github.sds100.keymapper.SystemAction.CATEGORY_VOLUME
import io.github.sds100.keymapper.data.KeyMapDao
import io.github.sds100.keymapper.util.ErrorCodeUtils
import io.github.sds100.keymapper.util.SystemActionUtils
import java.io.Serializable

/**
Expand Down Expand Up @@ -59,6 +59,7 @@ data class Action(
const val EXTRA_PACKAGE_NAME = "extra_package_name"
const val EXTRA_STREAM_TYPE = "extra_stream_type"
const val EXTRA_LENS = "extra_flash"
const val EXTRA_RINGER_MODE = "extra_ringer_mode"
}

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

fun getExtraData(extraId: String): Result<String> {
migrateExtra(extraId)

fun getExtraData(extraId: String) = extras.find { it.id == extraId }?.data.result(
ErrorCodeUtils.ERROR_CODE_ACTION_EXTRA_NOT_FOUND, extraId
)
return extras.find { it.id == extraId }?.data.result(
ErrorCodeUtils.ERROR_CODE_ACTION_EXTRA_NOT_FOUND, extraId
)
}

private fun migrateExtra(extraId: String) {
//migrate old system action options to new ones (SDK int to key mapper string id)
extras.find { it.id == extraId }?.data?.toIntOrNull().let { extraValueInt ->
when (data) {
SystemAction.VOLUME_DECREASE_STREAM, SystemAction.VOLUME_INCREASE_STREAM ->
when (extraValueInt) {
AudioManager.STREAM_ALARM -> Option.STREAM_ALARM
AudioManager.STREAM_DTMF -> Option.STREAM_DTMF
AudioManager.STREAM_MUSIC -> Option.STREAM_MUSIC
AudioManager.STREAM_NOTIFICATION -> Option.STREAM_NOTIFICATION
AudioManager.STREAM_RING -> Option.STREAM_RING
AudioManager.STREAM_SYSTEM -> Option.STREAM_SYSTEM
AudioManager.STREAM_VOICE_CALL -> Option.STREAM_VOICE_CALL
AudioManager.STREAM_ACCESSIBILITY -> Option.STREAM_ACCESSIBILITY
else -> null
}

SystemAction.TOGGLE_FLASHLIGHT, SystemAction.ENABLE_FLASHLIGHT, SystemAction.DISABLE_FLASHLIGHT ->
when (extraValueInt) {
CameraCharacteristics.LENS_FACING_FRONT -> Option.LENS_FRONT
CameraCharacteristics.LENS_FACING_BACK -> Option.LENS_BACK
else -> null
}

else -> null

}?.let { newExtraValue ->
extras.removeAll { it.id == extraId }
extras.add(Extra(extraId, newExtraValue))
}
}
}
}

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

if (type == ActionType.SYSTEM_ACTION) {
val isVolumeAction = SystemActionUtils.getSystemActionDef(data).handle(
onSuccess = { it.category == CATEGORY_VOLUME },
onFailure = { false }
)

return isVolumeAction
}

return false
}
return listOf(
SystemAction.VOLUME_DECREASE_STREAM,
SystemAction.VOLUME_INCREASE_STREAM,
SystemAction.VOLUME_DOWN,
SystemAction.VOLUME_UP,
SystemAction.VOLUME_MUTE,
SystemAction.VOLUME_TOGGLE_MUTE,
SystemAction.VOLUME_UNMUTE
).contains(data)
}
5 changes: 0 additions & 5 deletions app/src/main/java/io/github/sds100/keymapper/DeviceAdmin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package io.github.sds100.keymapper
import android.app.admin.DeviceAdminReceiver
import android.content.Context
import android.content.Intent
import org.jetbrains.anko.toast

/**
* Created by sds100 on 31/03/2019.
Expand All @@ -12,13 +11,9 @@ import org.jetbrains.anko.toast
class DeviceAdmin : DeviceAdminReceiver() {
override fun onEnabled(context: Context?, intent: Intent?) {
super.onEnabled(context, intent)

context?.toast("Enabled")
}

override fun onDisabled(context: Context?, intent: Intent?) {
super.onDisabled(context, intent)

context?.toast("disabled")
}
}
87 changes: 87 additions & 0 deletions app/src/main/java/io/github/sds100/keymapper/Option.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package io.github.sds100.keymapper

import android.hardware.camera2.CameraCharacteristics
import android.media.AudioManager
import android.os.Build

/**
* Created by sds100 on 14/04/2019.
*/

object Option {
//DONT CHANGE THESE IDS!
const val STREAM_ALARM = "option_stream_alarm"
const val STREAM_DTMF = "option_stream_dtmf"
const val STREAM_MUSIC = "option_stream_music"
const val STREAM_NOTIFICATION = "option_stream_notification"
const val STREAM_RING = "option_stream_ring"
const val STREAM_SYSTEM = "option_stream_system"
const val STREAM_VOICE_CALL = "option_stream_voice_call"

const val STREAM_ACCESSIBILITY = "option_stream_accessibility"

const val LENS_FRONT = "option_lens_front"
const val LENS_BACK = "option_lens_back"

const val RINGER_MODE_NORMAL = "option_ringer_mode_normal"
const val RINGER_MODE_VIBRATE = "option_ringer_mode_vibrate"
const val RINGER_MODE_SILENT = "option_ringer_mode_silent"

val STREAMS = sequence {
yieldAll(listOf(STREAM_ALARM,
STREAM_DTMF,
STREAM_MUSIC,
STREAM_NOTIFICATION,
STREAM_RING,
STREAM_SYSTEM,
STREAM_VOICE_CALL
))

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
yield(STREAM_ACCESSIBILITY)
}
}.toList()

val OPTION_ID_SDK_ID_MAP = sequence {
yieldAll(listOf(STREAM_ALARM to AudioManager.STREAM_ALARM,
STREAM_DTMF to AudioManager.STREAM_DTMF,
STREAM_MUSIC to AudioManager.STREAM_MUSIC,
STREAM_NOTIFICATION to AudioManager.STREAM_NOTIFICATION,
STREAM_RING to AudioManager.STREAM_RING,
STREAM_SYSTEM to AudioManager.STREAM_SYSTEM,
STREAM_VOICE_CALL to AudioManager.STREAM_VOICE_CALL,

RINGER_MODE_NORMAL to AudioManager.RINGER_MODE_NORMAL,
RINGER_MODE_VIBRATE to AudioManager.RINGER_MODE_VIBRATE,
RINGER_MODE_SILENT to AudioManager.RINGER_MODE_SILENT
))

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
yield(STREAM_ACCESSIBILITY to AudioManager.STREAM_ACCESSIBILITY)
}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
yield(LENS_FRONT to CameraCharacteristics.LENS_FACING_FRONT)
yield(LENS_BACK to CameraCharacteristics.LENS_FACING_BACK)
}
}.toMap()

/**
* @return the [Extra] id for where the option is stored in the [Action]
*/
@ExtraId
fun getExtraIdForOption(id: String): String {
return when (id) {
SystemAction.VOLUME_DECREASE_STREAM,
SystemAction.VOLUME_INCREASE_STREAM -> Action.EXTRA_STREAM_TYPE

SystemAction.DISABLE_FLASHLIGHT,
SystemAction.ENABLE_FLASHLIGHT,
SystemAction.TOGGLE_FLASHLIGHT -> Action.EXTRA_LENS

SystemAction.CHANGE_RINGER_MODE -> Action.EXTRA_RINGER_MODE

else -> throw Exception("Can't find an extra id for that system action option $id")
}
}
}
21 changes: 12 additions & 9 deletions app/src/main/java/io/github/sds100/keymapper/SystemAction.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package io.github.sds100.keymapper

import android.os.Build
import androidx.annotation.RequiresApi

/**
* Created by sds100 on 04/08/2018.
*/
Expand Down Expand Up @@ -46,21 +43,19 @@ object SystemAction {
const val DISABLE_AUTO_ROTATE = "disable_auto_rotate"
const val PORTRAIT_MODE = "portrait_mode"
const val LANDSCAPE_MODE = "landscape_mode"
const val SWITCH_ORIENTATION = "switch_orientation"

//volume
const val VOLUME_UP = "volume_up"
const val VOLUME_DOWN = "volume_down"
const val VOLUME_SHOW_DIALOG = "volume_show_dialog"
const val VOLUME_DECREASE_STREAM = "volume_decrease_stream"
const val VOLUME_INCREASE_STREAM = "volume_increase_stream"
const val CYCLE_RINGER_MODE = "ringer_mode_cycle"
const val CHANGE_RINGER_MODE = "ringer_mode_change"

@RequiresApi(Build.VERSION_CODES.M)
const val VOLUME_UNMUTE = "volume_unmute"

@RequiresApi(Build.VERSION_CODES.M)
const val VOLUME_MUTE = "volume_mute"

@RequiresApi(Build.VERSION_CODES.M)
const val VOLUME_TOGGLE_MUTE = "volume_toggle_mute"

//status bar
Expand All @@ -74,6 +69,8 @@ object SystemAction {
const val PLAY_PAUSE_MEDIA = "play_pause_media"
const val NEXT_TRACK = "next_track"
const val PREVIOUS_TRACK = "previous_track"
const val FAST_FORWARD = "fast_forward"
const val REWIND = "rewind"

//navigation
const val GO_BACK = "go_back"
Expand All @@ -85,9 +82,14 @@ object SystemAction {
const val ENABLE_FLASHLIGHT = "enable_flashlight"
const val DISABLE_FLASHLIGHT = "disable_flashlight"

//NFC
const val ENABLE_NFC = "nfc_enable"
const val DISABLE_NFC = "nfc_disable"
const val TOGGLE_NFC = "nfc_toggle"

//other
@RequiresApi(Build.VERSION_CODES.P)
const val SCREENSHOT = "screenshot"

const val OPEN_ASSISTANT = "open_assistant"
const val OPEN_CAMERA = "open_camera"
const val LOCK_DEVICE = "lock_device"
Expand All @@ -108,5 +110,6 @@ object SystemAction {
const val CATEGORY_STATUS_BAR = "status_bar"
const val CATEGORY_MEDIA = "media"
const val CATEGORY_FLASHLIGHT = "flashlight"
const val CATEGORY_NFC = "nfc"
const val CATEGORY_OTHER = "other"
}
Loading

0 comments on commit f3834d3

Please sign in to comment.