{"id":17158672,"url":"https://github.com/ukanth/android-lockpattern","last_synced_at":"2025-08-24T11:39:36.611Z","repository":{"id":136765944,"uuid":"582680809","full_name":"ukanth/android-lockpattern","owner":"ukanth","description":null,"archived":false,"fork":false,"pushed_at":"2023-03-07T01:53:43.000Z","size":1162,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T14:45:29.493Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ukanth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-27T15:05:49.000Z","updated_at":"2023-09-08T18:40:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"62c7a355-3f8a-4c02-92b1-9ab10eef731a","html_url":"https://github.com/ukanth/android-lockpattern","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/ukanth/android-lockpattern","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukanth%2Fandroid-lockpattern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukanth%2Fandroid-lockpattern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukanth%2Fandroid-lockpattern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukanth%2Fandroid-lockpattern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ukanth","download_url":"https://codeload.github.com/ukanth/android-lockpattern/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ukanth%2Fandroid-lockpattern/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271854475,"owners_count":24834453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-24T02:00:11.135Z","response_time":111,"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-10-14T22:12:15.923Z","updated_at":"2025-08-24T11:39:36.600Z","avatar_url":"https://github.com/ukanth.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# android-lockpattern\n\n- Version: [`12.0.0`](version-info.md) _(December 23rd, 2016)_\n    + _Starting from `8.0.0`, the library uses [Semantic Versioning 2.0.0]_\n- License: [Apache License v2.0](LICENSE)\n- Project page: \u003chttps://bitbucket.org/haibison/android-lockpattern\u003e\n- Demo: \u003chttps://play.google.com/store/apps/details?id=group.pals.android.lib.ui.lockpattern.demo\u003e\n- For developers: [Wiki], [API documentation].\n\n---\n\n## Features\n\n- Requires: Android 2.1+ (API 7+)\n- Supported IDE: Android Studio\n- _No run-time dependencies_\n- _Designed with developers in mind._ You can pick up a stranger and weird library like this one, then use it right away without worrying about\n  it invading your own [preferences][SharedPreferences], or breaking your app's resource names (or other libraries' resource names). Short\n  answer: it uses a UUID for its preference file name, and a CRC-32 string to prefix its resource names (see [FAQs]).\n- Designed for both _phones and tablets_\n- Stealth mode (invisible pattern)\n- Many built-in themes:\n    + Dark/Light\n    + Light with dark action bar (available from API 7+, but only works from API 14+)\n    + Dark/Light dialogs\n    + Dark/Light `DialogWhenLarge` (available from API 7+, but only works from API 11+)\n- Ability to generate and let the user verify CAPTCHA pattern\n\n\nIn short, you can use this library in your closed source/commercial apps with or without our knowledge. Hope you enjoy it  `:-)`\n\n---\n\n## Credits\n\nWe sincerely thank all of our friends -- who have been contributing to this project.  We hope this project will be always useful for everyone.\n\n* C\n* [Steven Byle](http://stackoverflow.com/users/1507439/steven-byle)\n* Thomas Breitbach\n* Yan Cheng Cheok (Project Admin of [JStock](http://jstock.sourceforge.net/))\n* [Damonzh](https://github.com/Damonzh)\n* [Nikita Osipov](https://github.com/nikkoss)\n* [cdotchen](https://bitbucket.org/cdotchen/)\n* [Andre Batista da Silva](https://bitbucket.org/andre_bts/)\n* And others\n\n---\n\n## History\n\n_For newer versions, please check file [`version-info.md`](version-info.md)._\n\n* ...\n\n* Version 7.0.0\n    + *Release: October 28th, 2015*\n    + Made dependency `support-annotations` always latest version.\n    + Removed `LoadingDialog`.\n\n* Version 6.0.0\n    + *Release: October 10th, 2015*\n    + `LockPatternActivity`: added `IntentBuilder`.\n    + Renamed package `haibison.android.lockpattern.util` to `haibison.android.lockpattern.utils`.\n    + Renamed interface `IEncrypter` to `Encrypter`.\n    + Added support library `support-annotations`, to decorate methods, parameters...\n\n* Version 5.0.1\n    + *Release: September 2nd, 2015*\n    + Declared `LockPatternActivity` in manifest.\n\n* Version 5.0.0\n    + *Release: September 2nd, 2015*\n    + Removed support for Eclipse IDE.\n    + Refactored some resource names.\n    + Updated helper method `LockPatternActivity#call_startActivityForResult()`.\n\n* Version 4.0.0\n    + *Release: June 20th, 2015*\n    + Switch to Gradle based (for Android Studio IDE).\n    + Update styles.\n    + Refactor some classes, resource names.\n\n* Version 3.2.1 beta (#46)\n    + *Initialize: January 23rd, 2015*\n\n* Version 3.2 (#45)\n    + *Release:* January 19th, 2015\n    + Update based code from AOSP Lollipop.\n    + Drop support for APIs \u003c 7.\n    + Add static helper methods for creating new `Intent`'s and calling `startActivityForResult(Intent, int)` from an\n      `Activity`, framework `Fragment` or support library `Fragment`.\n    + Rename `EXTRA_INTENT_ACTIVITY_FORGOT_PATTERN` to `EXTRA_PENDING_INTENT_FORGOT_PATTERN`. Note that its value type\n      is also changed from `Intent` to `PendingIntent`.\n    + Fix small issues.\n\n* Version 3.1.1 beta (#44)\n    + *Initialize:* April 04, 2014\n\n* Version 3.1 (#43)\n    + *Release:* March 10, 2014\n    + Change package name to `com.haibison.android.lockpattern`.\n    + Change prefixes:\n        - From `alp_` to `alp_42447968_`.\n        - From `Alp.` to `Alp.42447968.`.\n    + Optimize code and make some other minor changes.\n\n* Version 3.0.8 beta\n    + *Initialize:* February 26, 2014\n\n* Version 3.0.7\n    + *Release:* February 21, 2014\n    + Fix `NullPointerException` while loading settings from manifest.\n\n* Version 3.0.6\n    + *Release:* February 19, 2014\n    + Add support to directly configure settings via AndroidManifest.xml (tag `\u003cmeta-data\u003e`).\n\n* Version 3.0.6 beta\n    + *Initialize:* February 18, 2014\n\n* Version 3.0.5\n    + *Release:* Feburary 12, 2014\n    + Add `SimpleWeakEncryption`.\n    + Update `LockPatternView` to branch `kitkat-release` (commit: `c46c4a6765196bcabf3ea89771a1f9067b22baad`).\n    + Update Javadocs, some minor changes...\n\n* Version 3.0.5 beta\n    + *Initialize:* January 12, 2014\n\n* Version 3.0.4\n    + *Release:* January 12, 2014\n    + Refactor package `prefs` to a single class `util.Settings`.\n    + Add `LoadingDialog` for the case that implementation of `IEncrypter` takes lots of time to finish.\n\n* Version 3.0.4 beta\n    + *Initialize:* January 11, 2014\n\n* Version 3.0.3\n    + *Release:* December 18, 2013\n    + Optimize code.\n\n* Version 3.0.2\n    + *Release:* December 18, 2013\n    + Add theme light with dark action bar (for API 14+).\n\n* Version 3.0.1\n    + *Release:* October 10, 2013\n    + Use default icon set (from AOSP).\n\n* Version 3.0\n    + *Release:* September 15, 2013\n    + Upgrade IEncrypter.\n\n* Version 2.9\n    + *Release:* August 11, 2013\n    + Fix dialog themes in API 11.\n    + Optimize code.\n\n* Version 2.9 beta\n    + *Initialize:* July 05, 2013\n\n* Version 2.8\n    + *Release:* July 02, 2013\n    + Add new extra `EXTRA_INTENT_ACTIVITY_FORGOT_PATTERN` to help the user recover the pattern if he/ she forgot it.\n    + Change `char[] IEncrypter.encrypt(Context, char[])` to `char[] IEncrypter.encrypt(Context, List\u003cCell\u003e)`.\n    + Rename `EXTRA_OK_PENDING_INTENT`, `EXTRA_CANCELLED_PENDING_INTENT` to `EXTRA_PENDING_INTENT_OK` and\n      `EXTRA_PENDING_INTENT_CANCELLED`.\n    + Optimize code.\n    + Some minor changes...\n\n* Version 2.8 beta\n    + *Initialize:* June 20, 2013\n\n* Version 2.7\n    + *Release:* June 20, 2013\n    + Add new action `ACTION_VERIFY_CAPTCHA`.\n\n* Version 2.7 beta\n    + *Initialize:* May 28, 2013\n\n* Version 2.6\n    + *Release:* May 18, 2013\n    + Use `UPPER_CASE` for `static final` fields and enums;\n    + Move most of dynamic settings to `SharedPreferences`;\n    + Change `IEncrypter`;\n\n* Version 2.6 beta\n    + *Initialize:* May 15, 2013\n\n* Version 2.5.1\n    + *Release:* April 15, 2013\n    + Fix delivering result to `ResultReceiver`.\n\n* Version 2.5\n    + *Release:* April 15, 2013\n    + Upgrade UI;\n    + Add options:\n        - for setting minimum wired dots in mode creating pattern;\n        - for setting maximum tries and determining the number of tries that the user did in mode comparing patterns;\n        - thanks to David Myers for his feedbacks;\n    + Use fixed size for `LockPatternActivity` in large screens with dialog themes;\n    + Add options for sending result to a `PendingIntent` and/ or `ResultReceiver`;\n    + Fix minor bugs; optimize code;\n\n* Version 2.5 beta\n    + *Initialize:* March 18, 2013\n\n* Version 2.4\n    + *Release:* March 16, 2013\n    + Merge latest code from AOSP;\n    + Use action names instead of extra fields for different types of handlers:\n        - `_ActionCreatePattern`\n        - `_ActionComparePattern`\n    + Add built-in themes: default dark and dark dialog;\n    + Add stealth-mode;\n    + New icon set;\n    + Optimize code and UI; special thanks to [Steven Byle](http://stackoverflow.com/users/1507439/steven-byle):\n        - \u003chttp://stackoverflow.com/a/15424636/1521536\u003e\n\n* Version 2.3\n    + Update info: August 28, 2012\n    + The [serious bug](https://code.google.com/p/android-lockpattern/issues/detail?id=1) was invalid.\n\n* Version 2.3\n    + *Release:* August 28, 2012\n    + Fixed serious bug: key `_PaternSha1` is deprecated but is used to return the pattern;\n    + Removed all fields/ methods which were deprecated in old versions;\n\n* Version 2.2\n    + *Release:* August 17, 2012\n    + added: Spanish language; special thanks to C. - a kind friend who helped us translate the library into his mother\n      language;\n\n* Version 2.1\n    + *Release:* July 29, 2012\n    + turn off `AutoSave` by default;\n    + add new method `IEncrypter.encrypt(Context, String);`\n    + set method `IEncrypter.encrypt(String)` as deprecated;\n\n* Version 2.1 beta\n    + Initialization: July 21, 2012\n\n* Version 2\n    + *Release:* July 15, 2012\n    + add support for encryption;\n\n* Version 2 beta\n    + Initialization: July 12, 2012\n\n* Version 1.5.5\n    + *Release:* June 22, 2012\n    + set max width and height for `LockPatternView` to `400dp` for tablet;\n\n* Version 1.5.4\n    + *Release:* June 09, 2012\n    + Fix bug: in mode `CreatePattern`, `LockPatternActivity` recognized wrong the confirmed pattern;\n\n* Version 1.5.4 beta\n    + Initialization: June 07, 2012\n\n* Version 1.5.3\n    + *Release:* June 07, 2012\n    + ability to change theme in runtime;\n    + save and restore controls' state after screen orientation changed;\n\n* Version 1.5.3 beta\n    + Initialization: May 21, 2012\n    + make `LockPatternView`'s gravity center;\n\n* Version 1.5.2\n    + *Release:* May 21, 2012\n    + in landscape mode, move button `Cancel` to bottom;\n\n* Version 1.5.1\n    + *Release:* May 21, 2012\n    + set `LockPatternView`'s gravity center;\n\n* Version 1.5\n    + *Release:* May 21, 2012\n    + due to [this bug](https://code.google.com/p/android/issues/detail?id=30622), so we prefix all resource names with\n      `alp_`;\n    + add layout for landscape mode;\n    + update coding style:\n        - prefix global fields with `m`;\n        - prefix static final fields with `_`;\n\n* Version 1.4\n    + *Release:* April 29, 2012\n    + change UI;\n    + determine and use user's haptic feedback;\n\n* Version 1.2\n    + *Release:* March 09, 2012\n    + make sure `LockPatternUtils.patternToSha1()` returns lower case string;\n\n* Version 1.1\n    + *Release:* March 08, 2012\n    + fix security issue about using `SharedPreferences`;\n\n* Version 1.0\n    + *Release:* March 08, 2012\n    + first release;\n    + create pattern;\n    + compare to existing pattern;\n\n[Semantic Versioning 2.0.0]: http://semver.org/spec/v2.0.0.html\n[Wiki]: https://bitbucket.org/haibison/android-lockpattern/wiki/\n[FAQs]: https://bitbucket.org/haibison/android-lockpattern/wiki/FAQs\n[API documentation]: https://haibison.bitbucket.io/apidocs/android-lockpattern\n[SharedPreferences]: https://developer.android.com/reference/android/content/SharedPreferences.html","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fukanth%2Fandroid-lockpattern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fukanth%2Fandroid-lockpattern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fukanth%2Fandroid-lockpattern/lists"}