{"id":13894464,"url":"https://github.com/timnew/AndroidInfrared","last_synced_at":"2025-07-17T09:32:54.031Z","repository":{"id":11742685,"uuid":"14270830","full_name":"timnew/AndroidInfrared","owner":"timnew","description":null,"archived":false,"fork":false,"pushed_at":"2023-06-04T16:40:10.000Z","size":8096,"stargazers_count":120,"open_issues_count":5,"forks_count":41,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-11-19T09:56:48.762Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timnew.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}},"created_at":"2013-11-10T04:36:33.000Z","updated_at":"2024-10-04T10:11:02.000Z","dependencies_parsed_at":"2022-08-20T09:01:08.661Z","dependency_job_id":null,"html_url":"https://github.com/timnew/AndroidInfrared","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timnew%2FAndroidInfrared","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timnew%2FAndroidInfrared/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timnew%2FAndroidInfrared/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timnew%2FAndroidInfrared/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timnew","download_url":"https://codeload.github.com/timnew/AndroidInfrared/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226248363,"owners_count":17595158,"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","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-08-06T18:01:34.650Z","updated_at":"2024-11-24T23:30:57.609Z","avatar_url":"https://github.com/timnew.png","language":"CSS","funding_links":[],"categories":["CSS"],"sub_categories":[],"readme":"AndroidInfrared\n===============\n\nAndroid Infrared is a infrared library drives IR LED built in Samsung devices, such as S4, Note 3.\n\nProtocol Supported\n-------------------\n\nAndroid Infrared supports most of popular protocols avaiable nowadays, including:\n\n* NEC\n* Sony\n* RC5\n* RC6\n* DISH\n* Sharp\n* Panasonic\n* JVC\n\n\nCode Sample\n------------\n\n```java\n\n        // Create ConsumerIrManager instance, which provides the unified and enhanced API across Samsung private API and KitKat API.\n        ConsumerIrManager manager = ConsumerIrManager.getSupportConsumerIrManager(context);\n\n        // Check whether IrEmitter is avaiable on the device.\n        if (!manager.hasIrEmitter()) {\n            Log.e(\"AndroidInfraredDemo\", \"Cannot found IR Emitter on the device\");\n        }\n\n        // Build IR Command with predefined schemes.\n        IrCommand necCommand = IrCommand.NEC.buildNEC(32, 0x723F);\n        manager.transmit(necCommand);\n\n        // Build IR Command from Pronto code\n        IrCommand prontoCommand = IrCommand.Pronto.buildPronto(\"0000 0067 0000 0015 0060 0018 0018 0018 0030 0018 0030 0018 0030 0018 0018 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0030 0018 0030 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 03f6\");\n        manager.transmit(prontoCommand);\n\n        int FREQUENCY = 38028;  // T = 26.296 us\n        int HDR_MARK = 342;\n        int HDR_SPACE = 171;\n        int BIT_MARK = 21;\n        int ONE_SPACE = 60;\n        int ZERO_SPACE = 21;\n\n        // Build IR Command with Builder\n        IrCommandBuilder builder = IrCommandBuilder.irCommandBuilder(NEC_FREQUENCY); // Static factory method\n        IrCommand builderCommand = builder\n                .pair(HDR_MARK, HDR_SPACE)  // Lead-in sequence\n                .pair(BIT_MARK, ONE_SPACE)  // 1\n                .pair(BIT_MARK, ONE_SPACE)  // 1\n                .pair(BIT_MARK, ONE_SPACE)  // 1\n                .pair(BIT_MARK, ONE_SPACE)  // 1\n                .pair(BIT_MARK, ONE_SPACE)  // 1\n                .pair(BIT_MARK, ONE_SPACE)  // 1\n                .pair(BIT_MARK, ZERO_SPACE) // 0\n                .pair(BIT_MARK, ZERO_SPACE) // 0\n                .mark(BIT_MARK)             // lead-out sequence\n                .build();\n\n        // Simplify Sequence building process by using Sqeuence Definition\n        IrCommandBuilder.SequenceDefinition necSequence = IrCommandBuilder.simpleSequence(BIT_MARK, ONE_SPACE, BIT_MARK, ZERO_SPACE);\n        IrCommandBuilder sequenceBuilder = IrCommandBuilder.irCommandBuilder(NEC_FREQUENCY); // Static factory method\n        IrCommand sequenceCommand = builder\n                .pair(HDR_MARK, HDR_SPACE)  // Lead-in sequence\n                .sequence(necSequence, 8, 0xFC000000) // As same as previous one\n                .mark(BIT_MARK)             // lead-out sequence\n                .build();\n\n        // Build IR Command from Raw Data\n        int[] sequence = IrCommandBuilder.buildRawSequence(\n            HDR_MARK, HDR_SPACE,  // Lead-in sequence\n            BIT_MARK, ONE_SPACE,  // 1\n            BIT_MARK, ONE_SPACE,  // 1\n            BIT_MARK, ONE_SPACE,  // 1\n            BIT_MARK, ONE_SPACE,  // 1\n            BIT_MARK, ONE_SPACE,  // 1\n            BIT_MARK, ONE_SPACE,  // 1\n            BIT_MARK, ZERO_SPACE, // 0\n            BIT_MARK, ZERO_SPACE, // 0\n            BIT_MARK              // lead-out sequence\n        );\n        manager.transmit(40000, sequence);\n        \n```\n\nSister Project\n---------------\n\nTo decode and record the ir code from a existing remote control, such as TV remote or AirCon Remote, you can try [IRRecorder](https://github.com/timnew/IRRecorder). \n\n\u003cdel\u003eKnown Issue\u003c/del\u003e\n---------------\n\n\u003cdel\u003eAndroid Infrared uses the Samsung customized IR Blast API, and doesn't compatible with Android 4.4 KitKat standard `ConsumerIrManager`. \u003c/del\u003e\n\u003cdel\u003eThe Adpoting to support KitKat standard API process is already in progress.\u003c/del\u003e\n\nRoad Map\n-----------\n\n* \u003cdel\u003eSupport Android 4.4 KitKat `ConsumerIrManager` API\u003c/del\u003e\n* \u003cdel\u003eAuto adpative between KitKat API and Samsung API\u003c/del\u003e\n* \u003cdel\u003eSupport Proto code\u003c/del\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimnew%2FAndroidInfrared","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimnew%2FAndroidInfrared","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimnew%2FAndroidInfrared/lists"}