Android内置音频文件

1、在vendor/Tecnon_BuildIn下新建preloadfiles文件夹,里面放置要内置的音频文件和copy脚本,copytosystem.mk脚本如下:

LOCAL_PATH:= vendor/Tecnon_BuildIn/preloadfiles

PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/music/Go_On.mp3:system/preloadmusic/Go_On.mp3 \
    $(LOCAL_PATH)/music/Red.mp3:system/preloadmusic/Red.mp3 \
    $(LOCAL_PATH)/music/Salamalekun.mp3:system/preloadmusic/Salamalekun.mp3

preloadfiles文件夹的Android.mk编译脚本为:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := preloadfile.sh
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
LOCAL_SRC_FILES := preloadfile.sh
include $(BUILD_PREBUILT)

preloadfiles.sh脚本为:

#!/system/bin/sh
PRELOAD_DEST=/storage/sdcard0
#preload video
PRELOADVIDEO_DEST=${PRELOAD_DEST}/Movies
PRELOADVIDEO_FLAG=${PRELOADVIDEO_DEST}/.videocopied
PRELOADVIDEO_SRC=/system/preloadvideo

if [ ! -d ${PRELOADVIDEO_DEST} ]
then
    mkdir -p ${PRELOADVIDEO_DEST}
fi

if [ ! -f ${PRELOADVIDEO_FLAG} ]
then
    files=$(ls ${PRELOADVIDEO_SRC}/)
    for i in ${files};do
        cat  ${PRELOADVIDEO_SRC}/${i} > ${PRELOADVIDEO_DEST}/${i}
    done
    echo "aaaa" > ${PRELOADVIDEO_FLAG}
fi

#preload music
PRELOADMUSIC_DEST=${PRELOAD_DEST}/Music
PRELOADMUSIC_FLAG=${PRELOADMUSIC_DEST}/.musiccopied
PRELOADMUSIC_SRC=/system/preloadmusic

if [ ! -d ${PRELOADMUSIC_DEST} ]
then
    mkdir -p ${PRELOADMUSIC_DEST}
fi

if [ ! -f ${PRELOADMUSIC_FLAG} ]
then
    files=$(ls ${PRELOADMUSIC_SRC}/)
    for i in ${files};do
        cat  ${PRELOADMUSIC_SRC}/${i} > ${PRELOADMUSIC_DEST}/${i}
    done
    echo "aaaa" > ${PRELOADMUSIC_FLAG}
fi

#preload picture
PRELOADPIC_DEST=${PRELOAD_DEST}/Pictures
PRELOADPIC_FLAG=${PRELOADPIC_DEST}/.piccopied
PRELOADPIC_SRC=/system/preloadpic

if [ ! -d ${PRELOADPIC_DEST} ]
then
    mkdir -p ${PRELOADPIC_DEST}
fi

if [ ! -f ${PRELOADPIC_FLAG} ]
then
    files=$(ls ${PRELOADPIC_SRC}/)
    for i in ${files};do
    cat  ${PRELOADPIC_SRC}/${i} > ${PRELOADPIC_DEST}/${i}
    done
    echo "aaaa" > ${PRELOADPIC_FLAG}
fi

preloadfiles.te策略文件路径:device\mediatek\common\sepolicy\basic

# ==============================================
# Policy File of /system/xbin/preloadfile Executable File

# ==============================================
# Type Declaration
# ==============================================
type preloadfile_exec , exec_type, file_type;
type preloadfile ,domain;


# ==============================================
# MTK Policy Rule
# ==============================================
init_daemon_domain(preloadfile)

#binder_use(preloadfile)
#binder_service(preloadfile)

# permission for android N policy
allow preloadfile toolbox_exec:file {rx_file_perms};

# purpose: allow preloadfile to access storage in N version
allow preloadfile media_rw_data_file:dir {create_dir_perms};
allow preloadfile media_rw_data_file:file  { create_file_perms };
allow preloadfile mnt_user_file:dir {create_dir_perms};
allow preloadfile mnt_user_file:lnk_file {create_file_perms };
allow preloadfile fuse:dir {create_dir_perms};
allow preloadfile fuse:file {create_file_perms};
allow preloadfile sdcardfs:dir {create_dir_perms};
allow preloadfile sdcardfs:file {create_file_perms};
allow preloadfile shell_exec:file {rx_file_perms};
allow preloadfile storage_file:lnk_file {create_file_perms };
allow preloadfile tmpfs:dir{create_dir_perms};
allow preloadfile tmpfs:file{create_file_perms};
allow preloadfile system_file:dir{read open};
allow preloadfile system_file:file{read open};

在te策略文件同级路径下的file_contexts文件里添加如下一行:

/system/xbin/dingyufile.sh u:object_r:dingyufile_exec:s0

把这个mk文件和sh脚本添加到device.mk文件中:device\mediatek\common\device.mk

$(call inherit-product-if-exists, vendor/Tecnon_BuildIn/preloadfiles/copytosystem.mk)
PRODUCT_PACKAGES += preloadfile.sh

2、在init.project.rc文件中添加:

service preloadfile /system/xbin/preloadfile.sh
    class main
    oneshot
    disabled
    seclabel u:r:preloadfile:s0

3、frameworks\base\services\core\java\com\android\server\MountService.java类的MountServiceHandler中H_VOLUME_BROADCAST选项下添加:

android.os.SystemProperties.set("ctl.start", "preloadfile");


加载内置存储的时候运行service preloadfile,就可以把音频复制到内部存储中

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值