{"id":19173887,"url":"https://github.com/navideck/gesturedeck-android","last_synced_at":"2026-06-17T04:31:39.949Z","repository":{"id":182229860,"uuid":"584719213","full_name":"Navideck/Gesturedeck-Android","owner":"Navideck","description":"Gesturedeck SDK - Android","archived":false,"fork":false,"pushed_at":"2023-11-13T13:51:17.000Z","size":53290,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-23T00:39:19.293Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://navideck.github.io/Gesturedeck-Android/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Navideck.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-01-03T10:41:24.000Z","updated_at":"2023-10-06T15:53:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"a46255d5-31ee-45c2-94bb-119bf94c79fd","html_url":"https://github.com/Navideck/Gesturedeck-Android","commit_stats":null,"previous_names":["navideck/gesturedeck-android"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/Navideck/Gesturedeck-Android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Navideck%2FGesturedeck-Android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Navideck%2FGesturedeck-Android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Navideck%2FGesturedeck-Android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Navideck%2FGesturedeck-Android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Navideck","download_url":"https://codeload.github.com/Navideck/Gesturedeck-Android/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Navideck%2FGesturedeck-Android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34434492,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T10:15:04.559Z","updated_at":"2026-06-17T04:31:39.936Z","avatar_url":"https://github.com/Navideck.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gesturedeck SDK - Android\n\n[![](https://jitpack.io/v/Navideck/Gesturedeck-Android.svg)](https://jitpack.io/#Navideck/Gesturedeck-Android)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://navideck.com/sites/navideck.com/files/2023-10/Gesturedeck%20SDK%20icon.png\" height=150 /\u003e\n\u003c/p\u003e\n\n## Overview\n\nRevolutionize your Android app's user experience with the extraordinary power of Gesturedeck! Seamlessly integrated into your Android application, Gesturedeck empowers users to effortlessly control their devices through intuitive touch gestures, without even needing to look at the screen.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://navideck.com/sites/navideck.com/files/2023-10/Gesturedeck%20touch%20gestures%20list.png\" height=300 /\u003e \u0026nbsp;\n  \u003cimg src=\"https://navideck.com/sites/navideck.com/files/2023-10/Gesturedeck%20volume%20gesture.png\" height=300 /\u003e \u0026nbsp;\n  \u003cimg src=\"https://navideck.com/sites/navideck.com/files/2023-10/Gesturedeck%20play%20pause%20gesture.png\" height=300 /\u003e\n\u003c/p\u003e\n\nImagine enhancing your app with the ability to adjust volume, skip tracks, and perform various actions effortlessly, making interactions smoother and more natural than ever before. Whether users are driving, biking, or engaged in any activity that demands their full attention, Gesturedeck ensures a seamless experience that enhances productivity and safety.\n\n## Key Features\n\n- Intuitive touch gestures for seamless device control.\n- Customizable gesture actions for enhanced user interactions.\n- Integrated GesturedeckMedia for media app controls with overlay UI support.\n- Support for volume key actions with GesturedeckMedia.\n- Sensitivity settings for fine-tuning gesture responsiveness.\n- Easy integration with UniversalVolume for unified volume control.\n- Does not require internet connectivity\n- Jetpack Compose / XML layout / Kotlin \u0026 Java support\n\n## Gesturedeck\n\nGesturedeck is the low-level API that allows you to build custom functionalities on top of Gesturedeck's gestures. Without introducing any additional UI, your app gains access to powerful gesture controls that redefine user interactions.\n\n## Getting Started with Gesturedeck\n\n### Add Gesturedeck SDK to your project\n\nGesturedeck SDK can be easily added to your Android project using Jitpack. Jitpack is a package repository service that allows you to use Git repositories as dependencies in your projects.\n\nTo add Gesturedeck SDK to your project, follow these steps:\n\n1. Open your project's `build.gradle` file.\n\n2. Add the Jitpack repository to the list of repositories:\n\n```groovy\nallprojects {\n    repositories {\n        // ... other repositories ...\n        maven { url 'https://jitpack.io' }\n    }\n}\n```\n\n3. Open your app module's `build.gradle` file.\n\n4. Add the Gesturedeck SDK dependency:\n\n```groovy\ndependencies {\n    implementation 'com.github.Navideck:Gesturedeck-Android:1.8.0'\n}\n```\n\n5. Make sure to add `appcompat` if it is missing. It should be added by default in new projects but might be missing in Jetpack Compose projects.\n\n```groovy\nimplementation 'androidx.appcompat:appcompat:1.6.1'\n```\n\n6. Sync your project with Gradle by clicking on \"Sync Now\" in Android Studio.\n\nNow, Gesturedeck SDK is successfully added to your project via Jitpack. You can start using the Gesturedeck API in your app as described in the previous sections.\n\nPlease note that Jitpack fetches the library directly from the GitHub repository, so you need an active internet connection while building your project. Also, ensure that you are using a version that is compatible with your app's requirements.\n\n### Import Gesturedeck\n\n```kotlin\nimport com.navideck.gesturedeck_android.Gesturedeck\n```\n\n### Initialize Gesturedeck\n\nTo have Gesturedeck working in your Android app, you have two options:\n\n#### Option 1: Subclass GesturedeckActivity\n\nYou can make your `MainActivity` subclass `GesturedeckActivity` to gain access to Gesturedeck functionality.\n\n```kotlin\nclass MainActivity : GesturedeckActivity()\n```\n\n#### Option 2: Manually initialize Gesturedeck\n\nIf you prefer manual control, you can manually initialize Gesturedeck. Follow these steps:\n\n1. Initialize Gesturedeck manually by passing the activity or context in the constructor:\n\n```kotlin\nclass MainActivity : AppCompatActivity() {\n\n    private lateinit var gesturedeck: Gesturedeck\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContentView(R.layout.activity_main)\n\n        gesturedeck = Gesturedeck(\n            this,\n            tapAction = { /* Handle tap gesture here */ },\n            swipeLeftAction = { /* Handle swipe left gesture here */ },\n            swipeRightAction = { /* Handle swipe right gesture here */ },\n            panAction = { /* Handle pan gesture here */ },\n            longPressAction = { /* Handle long press gesture here */ }\n        )\n    }\n}\n```\n\nTo feed touch events from specific view or activity use `observingRootView` parameter like this\n\n```kotlin\ngesturedeck = Gesturedeck(\n    observingRootView = false\n)\n\noverride fun dispatchTouchEvent(event: MotionEvent): Boolean {\n   // Feed all touchEvents to Gesturedeck\n   gesturedeck.onTouchEvent(event)\n   return super.dispatchTouchEvent(event)\n}\n```\n\nAlternatively, you can add this tag in the Manifest file:\n\n```xml\n\u003capplication android:name=\"com.navideck.gesturedeck_android.global_activity.GlobalApplication\" /\u003e\n```\n\nand initialize without passing the activity:\n\n```kotlin\ngesturedeck = Gesturedeck(\n    tapAction = { /* Handle tap gesture here */ },\n    swipeLeftAction = { /* Handle swipe left gesture here */ },\n    swipeRightAction = { /* Handle swipe right gesture here */ },\n    panAction = { /* Handle pan gesture here */ },\n    longPressAction = { /* Handle long press gesture here */ }\n)\n```\n\n### Start and Stop Gesturedeck\n\nTo start and stop Gesturedeck's gesture detection, you can call the `start()` and `stop()` methods respectively.\n\n```kotlin\n// Start gesture detection\ngesturedeck.start()\n\n// Stop gesture detection\ngesturedeck.stop()\n```\n\n## Listen to Individual Gestures\n\nTo listen to individual gestures, you can use the properties `tapAction`, `swipeLeftAction`, `swipeRightAction`, `panAction`, and `longPressAction` in GesturedeckMedia's constructor.\n\n```kotlin\ngesturedeckMedia.tapAction = { /* Handle tap gesture here */ }\ngesturedeckMedia.swipeLeftAction = { /* Handle swipe left gesture here */ }\ngesturedeckMedia.swipeRightAction = { /* Handle swipe right gesture here */ }\ngesturedeckMedia.panAction = { /* Handle pan gesture here */ }\ngesturedeckMedia.longPressAction = { /* Handle long press gesture here */ }\n```\n\nFor detailed API reference, visit [Gesturedeck API Reference](https://navideck.github.io/Gesturedeck-Android/gesturedeck-android/com.navideck.gesturedeck_android/-gesturedeck/index.html).\n\n## Customize Sensitivity\n\nTo manage the sensitivity of the pan gesture, you can pass the `PanSensitivity` enum to the constructor. The default sensitivity level is `PanSensitivity.MEDIUM`.\n\n```kotlin\ngesturedeck = Gesturedeck(\n    this,\n    panSensitivity = PanSensitivity.MEDIUM,\n    tapAction = { /* Handle tap gesture here */ },\n    swipeLeftAction = { /* Handle swipe left gesture here */ },\n    swipeRightAction = { /* Handle swipe right gesture here */ },\n    panAction = { /* Handle pan gesture here */ },\n    longPressAction = { /* Handle long press gesture here */ }\n)\n```\n\n## GesturedeckMedia - Media Controls\n\nGesturedeckMedia is a specialized implementation built on top of Gesturedeck, tailored specifically for media apps. It provides default gesture actions that can be customized to suit your app's requirements.\nIf your app is a media app, you can use GesturedeckMedia instead of Gesturedeck.\n\n### Getting Started with GesturedeckMedia\n\nTo use GesturedeckMedia for showing media controls UI, follow these steps:\n\n1. Import GesturedeckMedia\n\n```kotlin\nimport com.navideck.gesturedeck_android.GesturedeckMedia\nimport com.navideck.gesturedeck_android.GesturedeckMediaOverlay\n```\n\n2. Initialize `GesturedeckMedia` with `GesturedeckMediaOverlay`:\n\n```kotlin\nval gesturedeckMedia = GesturedeckMedia(\n    context = this,\n    gesturedeckMediaOverlay = GesturedeckMediaOverlay(\n        activity = this@MainActivity,\n    ),\n    tapAction = { /* Handle tap gesture here */ },\n    swipeLeftAction = { /* Handle swipe left gesture here */ },\n    swipeRightAction = { /* Handle swipe right gesture here */ },\n    panAction = { /* Handle pan gesture here */ },\n    longPressAction = { /* Handle long press gesture here */ }\n)\n```\n\n#### Customize Overlay Background\n\nBy default, GesturedeckMedia will render UI elements with a blur background. If you want to customize the GesturedeckMedia overlay background, you can pass your root view (`YOUR_VIEW_GROUP`) in `GesturedeckMediaOverlay`. The SDK will only render the relevant UI elements (e.g., volume bar and icons) without any background color on top of your own view. It is generally a good idea to set a semi-transparent color as the background.\n\n```kotlin\nval gesturedeckMedia = GesturedeckMedia(\n    context = this,\n    gesturedeckMediaOverlay = Gesturedeck\n\nMediaOverlay(\n        activity = this@MainActivity,\n        rootView = YOUR_VIEW_GROUP,\n    ),\n    tapAction = { /* Handle tap gesture here */ },\n    swipeLeftAction = { /* Handle swipe left gesture here */ },\n    swipeRightAction = { /* Handle swipe right gesture here */ },\n    panAction = { /* Handle pan gesture here */ },\n    longPressAction = { /* Handle long press gesture here */ }\n)\n```\n\n### Handling Volume Key Action\n\nTo handle the device's volume key action with GesturedeckMedia, feed key events as well:\n\n```kotlin\nclass MainActivity : AppCompatActivity() {\n\n    override fun dispatchKeyEvent(event: KeyEvent): Boolean {\n        // To hide the device's native volume Dialog and show only Gesturedeck UI\n        return gesturedeckMedia?.onKeyEvents(event) ?: false\n\n        // To show both the device's native dialog and Gesturedeck UI\n        // gesturedeck?.onKeyEvents(event)\n        // return false\n    }\n}\n```\n\nFor detailed API reference, visit [GesturedeckMedia API Reference](https://navideck.github.io/Gesturedeck-Android/gesturedeck-android/com.navideck.gesturedeck_android/-gesturedeck-media/index.html).\n\n## Java\n\nGesturedeck is fully compatible with `Java`. When using Java you can initialize Gesturedeck or GesturedeckMedia using:\n\n```java\nGesturedeck gesturedeck = new Gesturedeck(context);\n```\n\nYou need to pass touch events to Gesturedeck using:\n\n```java\n@Override\npublic boolean onTouchEvent(MotionEvent event) {\n    if (event != null) gesturedeck.onTouchEvent(event);\n    return super.onTouchEvent(event);\n}\n```\n\n## UniversalVolume - Unified Volume Control\n\nAn Android library for easy volume control on different devices. Integrates smoothly with GesturedeckMedia for intuitive volume adjustment across all devices.\n\nYou can use [UniversalVolume](https://github.com/Navideck/Universal-Volume) with GesturedeckMedia. Simply import UniversalVolume, and GesturedeckMedia will automatically use UniversalVolume for changing volume on pan gestures.\n\n## Free to Use\nGesturedeck SDK is free to use, providing you with the full functionality of the SDK without any time limitations. You are welcome to integrate it into both personal and commercial projects. When using Gesturedeck SDK for free, a watermark will be presented during runtime. It is strictly prohibited  to hide, remove, or alter in any way the watermark from the free version of Gesturedeck SDK.\n\n### Activation Key and Watermark Removal\nFor those who wish to remove the watermark from their app, we offer an activation key that allows you to use the SDK without any watermarks. However, please be aware that the watermark-free version is not available for free and requires a purchase.\n\nTo inquire about purchasing an activation key or if you have any other questions related to licensing and usage, please contact us at team@navideck.com. We will be happy to assist you with the process and provide you with the necessary information.\n\n## Contact\n\nFor questions or support, please contact us at team@navideck.com. Thank you for choosing Gesturedeck SDK!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnavideck%2Fgesturedeck-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnavideck%2Fgesturedeck-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnavideck%2Fgesturedeck-android/lists"}