RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于迅為RK3568開(kāi)發(fā)板全國(guó)產(chǎn)平臺(tái),快速實(shí)現(xiàn)APP開(kāi)機(jī)自啟動(dòng)技術(shù)分享

北京迅為電子 ? 2024-11-21 13:58 ? 次閱讀

應(yīng)用場(chǎng)景:

在一些場(chǎng)景中需要系統(tǒng)啟動(dòng)以后就讓?xiě)?yīng)用程序運(yùn)行起來(lái),如閘機(jī)打卡系統(tǒng),智能點(diǎn)餐系統(tǒng),廣告機(jī)系統(tǒng)等等。這個(gè)需求叫做自啟動(dòng)。

除全國(guó)產(chǎn)版本核心板以外,RK3568核心板還有工業(yè)級(jí),商業(yè)級(jí),連接器和郵票孔多種版本。全國(guó)產(chǎn)版本核心板與其他版本核心板完全兼容??梢灾С謬?guó)產(chǎn)和非國(guó)產(chǎn)核心板的無(wú)縫切換,助力產(chǎn)品升級(jí)和國(guó)產(chǎn)化項(xiàng)目落地。

wKgaoWc-y6eANjZGAANgikMPd7w660.png

RK3568 Android11實(shí)現(xiàn)APP自啟動(dòng)技術(shù)分享

平臺(tái):迅為iTOP-3568開(kāi)發(fā)板

第一步:添加自啟服務(wù)

修改RK3568 Android11源碼frameworks\base\core\java\com\android\internal\app\ResolverActivity.java文件,添加如下藍(lán)色字體的代碼。

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

接下來(lái)將需要自啟動(dòng)的APP放到device/rockchip/rk356x/rk3568_r/preinstall_del/目錄下,如果沒(méi)有preinstall_del目錄的話需要手動(dòng)新建一個(gè)preinstall_del目錄即可,然后添加以下文件Android.mk,xxx.apk(APP),preinstall.mk這三個(gè)文件。

Android.mk文件內(nèi)容如下所示:

include $(call all-subdir-makefiles)

preinstall.mk文件內(nèi)容:

PRODUCT_PACKAGES += xxx

xxx為APP名字,例如demo.apk。這份目錄不僅是APK的預(yù)裝指定位置,當(dāng)您希望新增APK進(jìn)行預(yù)裝時(shí),可將該APK文件復(fù)制至“preinstall_del/”目錄下,并隨后將APK的名稱增補(bǔ)至“preinstall.mk”配置文件中,以完成預(yù)安裝的準(zhǔn)備工作。這樣的操作確保了APK能夠按照預(yù)期被系統(tǒng)識(shí)別并預(yù)裝至目標(biāo)設(shè)備中。

第三步:添加APP包名

修改RK3568Android11源碼文件device/rockchip/rk356x/rk3568_r/rk3568_r.mk,例如包名為:com.example.demo,在rk3568_r.mk中下面藍(lán)色字體代碼。

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源碼,然后燒寫(xiě)Android鏡像進(jìn)行測(cè)試。

E

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97371
  • RK3568
    +關(guān)注

    關(guān)注

    4

    文章

    514

    瀏覽量

    5031
  • 迅為電子
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    26
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    [RK3568開(kāi)發(fā)板]非科班也能玩轉(zhuǎn)Android應(yīng)用,體驗(yàn)QT跨平臺(tái)能力

    [RK3568開(kāi)發(fā)板]非科班也能玩轉(zhuǎn)Android應(yīng)用,體驗(yàn)QT跨平臺(tái)能力
    的頭像 發(fā)表于 12-18 16:41 ?211次閱讀
    [<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)板</b>]非科班也能玩轉(zhuǎn)Android應(yīng)用,體驗(yàn)QT跨<b class='flag-5'>平臺(tái)</b>能力

    電子】叮!您的RK3568開(kāi)發(fā)板系統(tǒng)鏡像備份方法請(qǐng)查收

    電子】叮!您的RK3568開(kāi)發(fā)板系統(tǒng)鏡像備份方法請(qǐng)查收
    的頭像 發(fā)表于 11-27 14:02 ?292次閱讀
    【<b class='flag-5'>迅</b><b class='flag-5'>為</b>電子】叮!您的<b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)板</b>系統(tǒng)鏡像備份方法請(qǐng)查收

    】瑞芯微RK3588開(kāi)發(fā)板RK3568開(kāi)發(fā)板區(qū)別及優(yōu)勢(shì)

    RK3568開(kāi)發(fā)板
    的頭像 發(fā)表于 11-18 14:19 ?343次閱讀
    【<b class='flag-5'>迅</b><b class='flag-5'>為</b>】瑞芯微<b class='flag-5'>RK</b>3588<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)板</b>區(qū)別及優(yōu)勢(shì)

    RK3588開(kāi)發(fā)板Android12動(dòng)態(tài)替換開(kāi)機(jī)logo

    RK3588開(kāi)發(fā)板Android12動(dòng)態(tài)替換開(kāi)機(jī)logo
    的頭像 發(fā)表于 11-15 15:04 ?477次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK</b>3588<b class='flag-5'>開(kāi)發(fā)板</b>Android12動(dòng)態(tài)替換<b class='flag-5'>開(kāi)機(jī)</b>logo

    開(kāi)發(fā)更便利!RK3568/RK3588 定制分區(qū)鏡像發(fā)布

    開(kāi)發(fā)更便利!RK3568/RK3588 定制分區(qū)鏡像發(fā)布
    的頭像 發(fā)表于 11-11 14:00 ?434次閱讀
    <b class='flag-5'>開(kāi)發(fā)</b>更便利!<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b>/<b class='flag-5'>RK</b>3588 定制分區(qū)鏡像發(fā)布

    能力再次提升! RK3588/RK3568開(kāi)發(fā)板&amp;amp;核心新增定制分區(qū)鏡像

    能力再次提升! RK3588/RK3568開(kāi)發(fā)板&核心新增定制分區(qū)鏡像
    的頭像 發(fā)表于 11-06 15:11 ?430次閱讀
    能力再次提升! <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK</b>3588/<b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)板</b>&amp;amp;核心<b class='flag-5'>板</b>新增定制分區(qū)鏡像

    RK3568開(kāi)發(fā)板支持銀河麒麟和開(kāi)放麒麟系統(tǒng)

    RK3568開(kāi)發(fā)板移植了銀河麒麟和開(kāi)放麒麟系統(tǒng)HOT 新增RT-Thread系統(tǒng) iTOP-RK3568
    發(fā)表于 11-06 14:44

    iTOP-RK3568/RK3588開(kāi)發(fā)板獲麒麟軟件適配認(rèn)證

    iTOP-RK3568/RK3588開(kāi)發(fā)板獲麒麟軟件適配認(rèn)證
    的頭像 發(fā)表于 10-18 14:56 ?513次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b>iTOP-<b class='flag-5'>RK3568</b>/<b class='flag-5'>RK</b>3588<b class='flag-5'>開(kāi)發(fā)板</b>獲麒麟軟件適配認(rèn)證

    北京RK3568開(kāi)發(fā)板嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)全新更新-CAN+

    北京RK3568開(kāi)發(fā)板嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)全新更新-CAN+
    的頭像 發(fā)表于 09-04 15:29 ?494次閱讀
    北京<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)板</b>嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)全新更新-CAN+

    RK3568 開(kāi)發(fā)板賦能數(shù)字廣告,推動(dòng)智能化使用北京RK3568核心作為廣告機(jī)主控

    需求定制底板。 如需定制logo和開(kāi)機(jī)動(dòng)畫(huà),并自啟動(dòng)Android APP播放視頻,可參考《itop-3568開(kāi)發(fā)板android系統(tǒng)和應(yīng)用
    發(fā)表于 09-04 11:17

    RK3568 開(kāi)發(fā)板賦能數(shù)字廣告,推動(dòng)智能化新時(shí)代

    需求定制底板。 如需定制logo和開(kāi)機(jī)動(dòng)畫(huà),并自啟動(dòng)Android APP播放視頻,可參考《itop-3568開(kāi)發(fā)板android系統(tǒng)和應(yīng)用
    發(fā)表于 08-08 11:29

    鴻蒙OpenHarmony南向/北向快速開(kāi)發(fā)教程-RK3568開(kāi)發(fā)板

    大家期待已久的RK3568開(kāi)發(fā)板終于迎來(lái)了鴻蒙4.1系統(tǒng)的強(qiáng)勢(shì)支持!想知道如何實(shí)現(xiàn)快速
    發(fā)表于 07-23 10:44

    RK3568開(kāi)發(fā)板支持AMP雙系統(tǒng)

    RK3568開(kāi)發(fā)板支持AMP雙系統(tǒng)
    的頭像 發(fā)表于 06-04 15:33 ?706次閱讀
    <b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)板</b>支持AMP雙系統(tǒng)

    RK3568開(kāi)發(fā)板驅(qū)動(dòng)開(kāi)發(fā)指南-輸入子系統(tǒng)

    RK3568開(kāi)發(fā)板驅(qū)動(dòng)開(kāi)發(fā)指南-輸入子系統(tǒng)
    的頭像 發(fā)表于 02-23 15:11 ?860次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)板</b>驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>指南-輸入子系統(tǒng)

    RK3568開(kāi)發(fā)板助力智能車(chē)載產(chǎn)業(yè)快速發(fā)展

    RK3568開(kāi)發(fā)板助力智能車(chē)載產(chǎn)業(yè)快速發(fā)展
    的頭像 發(fā)表于 01-23 13:59 ?565次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開(kāi)發(fā)板</b>助力智能車(chē)載產(chǎn)業(yè)<b class='flag-5'>快速</b>發(fā)展
    RM新时代网站-首页