0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于迅为RK3568开发板全国产平台,快速实现APP开机自启动技术分享

北京迅为电子 2024-11-21 13:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

应用场景:

在一些场景中需要系统启动以后就让应用程序运行起来,如闸机打卡系统,智能点餐系统,广告机系统等等。这个需求叫做自启动。

除全国产版本核心板以外,RK3568核心板还有工业级,商业级,连接器和邮票孔多种版本。全国产版本核心板与其他版本核心板完全兼容。可以支持国产和非国产核心板的无缝切换,助力产品升级和国产化项目落地。

wKgaoWc-y6eANjZGAANgikMPd7w660.png

RK3568 Android11实现APP自启动技术分享

平台:迅为iTOP-3568开发板

第一步:添加自启服务

修改RK3568 Android11源码frameworks\base\core\java\com\android\internal\app\ResolverActivity.java文件,添加如下蓝色字体的代码。

import java.util.Objects;

import java.util.Set;

import java.util.concurrent.Executor;

import java.util.function.Consumer;

import android.os.SystemProperties;

import android.app.role.RoleManager;

/**

* This activity is displayed when the system attempts to start an Intent for

@@ -341,6 +345,18 @@ public class ResolverActivity extends Activity implements

protected void onCreate(Bundle savedInstanceState, Intent intent,

CharSequence title, int defaultTitleRes, Intent[] initialIntents,

List rList, boolean supportsAlwaysUseOption) {

String LauncherPkg = SystemProperties.get("persist.sys.def_launherpag");



if(LauncherPkg!=null/* && !isDefaultLauncher(this,LauncherPkg)*/){

Log.v("defaultLauncher","-----found default launcher pkg:"+LauncherPkg);

setDefaltLauncher(this,LauncherPkg);

startDefaultLauncher(this,LauncherPkg);

finish();

return;

}

setTheme(appliedThemeResId());

super.onCreate(savedInstanceState);

@@ -433,6 +449,47 @@ public class ResolverActivity extends Activity implements

intent.getAction() + ":" + intent.getType() + ":"

+ (categories != null ? Arrays.toString(categories.toArray()) : ""));

}

public void setDefaltLauncher(Context context, String packageName) {

String roleName = "android.app.role.HOME";

boolean add = true;

int flags = 0;

UserHandle user = android.os.Process.myUserHandle();

RoleManager roleManager = context.getSystemService(RoleManager.class);

Executor executor = context.getMainExecutor();

Consumer< Boolean > callback = successful -> {

if (successful) {

Log.v("defaultLauncher","set Defalt Launcher successful" );

} else {

Log.v("defaultLauncher","set Defalt Launcher failed ");

}

};

roleManager.addRoleHolderAsUser(roleName, packageName, flags, user, executor, callback);

}

public void startDefaultLauncher(Context context, String packageName) {

Intent intent = new Intent();

PackageManager pm = context.getPackageManager();

intent = pm.getLaunchIntentForPackage(packageName);

if (intent != null)

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

try {

context.startActivity(intent);

} catch (Exception e) {

Log.v("defaultLauncher","start Default Launcher failed,not find package:"+packageName );

}

}

public boolean isDefaultLauncher(Context context,String launcherPkg){

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_HOME);

ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);

String currentHomePackage = resolveInfo.activityInfo.packageName;

Log.v("defaultLauncher","-currentHomePackage:"+currentHomePackage);

return launcherPkg.equals(currentHomePackage);

}

private boolean isIntentPicker() {

return getClass().equals(ResolverActivity.class);

■第二步:添加APP

接下来将需要自启动的APP放到device/rockchip/rk356x/rk3568_r/preinstall_del/目录下,如果没有preinstall_del目录的话需要手动新建一个preinstall_del目录即可,然后添加以下文件Android.mk,xxx.apk(APP),preinstall.mk这三个文件。

Android.mk文件内容如下所示:

include $(call all-subdir-makefiles)

preinstall.mk文件内容:

PRODUCT_PACKAGES += xxx

xxx为APP名字,例如demo.apk。这份目录不仅是APK的预装指定位置,当您希望新增APK进行预装时,可将该APK文件复制至“preinstall_del/”目录下,并随后将APK的名称增补至“preinstall.mk”配置文件中,以完成预安装的准备工作。这样的操作确保了APK能够按照预期被系统识别并预装至目标设备中。

第三步:添加APP包名

修改RK3568Android11源码文件device/rockchip/rk356x/rk3568_r/rk3568_r.mk,例如包名为:com.example.demo,在rk3568_r.mk中下面蓝色字体代码。

PRODUCT_PROPERTY_OVERRIDES += persist.sys.timezone=Asia/Shanghai

PRODUCT_PROPERTY_OVERRIDES += ro.vendor.hdmirotationlock=true

#PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=HDMI-A-1

PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=DSI

PRODUCT_PROPERTY_OVERRIDES += persist.sys.def_launherpag=com.example.demo

修改完毕之后,保存修改的文件,重新编译Android源码,然后烧写Android镜像进行测试。

E

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    26

    文章

    6433

    浏览量

    121042
  • RK3568
    +关注

    关注

    5

    文章

    655

    浏览量

    8123
  • 迅为电子
    +关注

    关注

    0

    文章

    98

    浏览量

    406
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电子RK3568+RK3588开发板资料焕新升级!多维度优化助力开发者效率提升

    电子RK3568+RK3588开发板资料焕新升级!多维度优化助力开发者效率提升
    的头像 发表于 03-26 15:06 535次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>电子<b class='flag-5'>RK3568+RK</b>3588<b class='flag-5'>开发板</b>资料焕新升级!多维度优化助力<b class='flag-5'>开发</b>者效率提升

    技术分享 | RK3568 Android11 如何实现自启动应用

    随着Android版本的不断升级,对于应用权限的管理会更加苛刻。我司IAC-RK3568-Kit开发板默认搭载Android11,相比较之前RK3288的产品安卓版本变更较大,有些客户反馈之前
    的头像 发表于 02-05 17:26 693次阅读
    <b class='flag-5'>技术</b>分享 | <b class='flag-5'>RK3568</b> Android11 如何<b class='flag-5'>实现</b><b class='flag-5'>自启动</b>应用

    驱动开发实战:iTOP-RK3568开发板eDP屏幕移植全攻略

    驱动开发实战:iTOP-RK3568开发板eDP屏幕移植全攻略
    的头像 发表于 12-30 15:42 1288次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>驱动<b class='flag-5'>开发</b>实战:iTOP-<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>eDP屏幕移植全攻略

    工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解

    工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:
    的头像 发表于 11-21 13:25 1673次阅读
    【<b class='flag-5'>迅</b><b class='flag-5'>为</b>工业<b class='flag-5'>RK3568</b>稳定可靠】itop-<b class='flag-5'>3568</b><b class='flag-5'>开发板</b>Linux驱动<b class='flag-5'>开发</b>实战:<b class='flag-5'>RK3568</b>内核模块符号导出详解

    RK3568开发板NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用

    RK3568开发板NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用
    的头像 发表于 11-11 14:21 1550次阅读
    【<b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用

    工业RK3568稳定可靠】itop-3568开发板驱动开发第4章驱动模块传参实验

    工业RK3568稳定可靠】itop-3568开发板驱动开发第4章驱动模块传参实验
    的头像 发表于 11-06 14:25 543次阅读
    【<b class='flag-5'>迅</b><b class='flag-5'>为</b>工业<b class='flag-5'>RK3568</b>稳定可靠】itop-<b class='flag-5'>3568</b><b class='flag-5'>开发板</b>驱动<b class='flag-5'>开发</b>第4章驱动模块传参实验

    避坑指南!RK3568开发板选型,这5点没看清千万别下手!(附驱动开发指南资源)

    避坑指南!RK3568开发板选型,这5点没看清千万别下手!(附驱动开发指南资源)
    的头像 发表于 10-30 15:49 1098次阅读
    避坑指南!<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>选型,这5点没看清千万别下手!(附<b class='flag-5'>迅</b><b class='flag-5'>为</b>驱动<b class='flag-5'>开发</b>指南资源)

    iTOP-RK3568人工智能开发板mobilenet图像分类模型推理测试

    快速验证MobileNet图像分类模型的实际运行效果?iTOP-RK3568人工智能开发板,让模型推理测试高效又省心。
    的头像 发表于 08-28 15:53 1564次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>iTOP-<b class='flag-5'>RK3568</b>人工智能<b class='flag-5'>开发板</b>mobilenet图像分类模型推理测试

    RK3568开发板模型推理测试实战LPRNet 车牌识别

    RK3568开发板模型推理测试实战LPRNet 车牌识别
    的头像 发表于 08-25 14:55 1571次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>模型推理测试实战LPRNet 车牌识别

    rk3568快速开机 快速启动实现

    想了解下rk官方目前对rk3568快速开机实现有哪些,是否有成熟的方案。在官方文档上看到rv1126方案,不知道可否应用在
    发表于 08-07 08:37

    RK3568 重制版RK3568驱动指南全面升级

    RK3568 重制版RK3568驱动指南全面升级
    的头像 发表于 07-28 15:25 3651次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b> 重制版<b class='flag-5'>RK3568</b>驱动指南全面升级

    技术分享 | RK3568开发板如何将 Linux 板卡虚拟成U盘

    技术分享 | RK3568开发板如何将 Linux 板卡虚拟成U盘
    的头像 发表于 06-04 10:57 1349次阅读
    <b class='flag-5'>技术</b>分享 | <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>如何将 Linux 板卡虚拟成U盘

    RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入

    RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入
    的头像 发表于 05-29 14:05 1204次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>驱动指南GPIO子系统GPIO子系统API函数的引入

    RK3568驱动指南GPIO子系统 GPIO操作函数实验

    电子RK3568开发板驱动指南GPIO子系统 GPIO操作函数实验
    的头像 发表于 05-28 15:24 1527次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b>驱动指南GPIO子系统 GPIO操作函数实验

    RK3568开发板驱动指南GPIO子系统三级节点操作函数实验

    RK3568开发板驱动指南GPIO子系统三级节点操作函数实验
    的头像 发表于 05-26 15:39 1684次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>驱动指南GPIO子系统三级节点操作函数实验