草庐IT

[触觉智能RK3568]修改屏幕 DPI(像素密度)

离北况归 2023-03-28 原文

想了解更多关于开源的内容,请访问:

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

  • 触觉智能RK3568购买链接如下:https://item.taobao.com/item.htm?spm=4645b.1.14.1.5c4a4a7dv1soeZ&id=658789039056&ns=1&abbucket=5#detail

一、OpenHarmony源码中DPI配置

  • 在源码foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml中有rk3568的默认配置
rk3568开发板默认的DPI配置为240,范围为80-640。

<!--Window display dpi, valid range is 80~640, use 0 if no configuration is requeired-->
<dpi>240</dpi>
以下为触觉智能开发板在不同DPI时屏幕的显示情况。

DPI为240时:

DPI为100时:

DPI为600时:

二、更改开发板的DPI

方法一:更改源码编译烧录固件

  • 在源码foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml文件中修改dpi,编译后烧录固件。
<!--Window display dpi, valid range is 80~640, use 0 if no configuration is requeired-->
<dpi>240</dpi>

方法二:发送display_manager_config.xml文件至设备etc/window/resources

  • OpenHarmony固件编译烧录进入设备后,display_manager_config.xml文件会被预编译打包至设备端etc/window/resources目录下,什么,为什么只有window/resources字段,因为ohos_prebuilt_etc就是把文件放进设备的etc文件夹。
foundation/window/window_manager/resources/config/BULID.gn文件如下,
下面代码的意思是源码foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml会真正安装在设备中的etc/window/resources文件位置,

ohos_prebuilt_etc("display_manager_config") {
if (device_name == "rk3568") {
source = "//foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml"
install_enable = true
···
···
relative_install_dir = "window/resources"
}
  • 步骤如下
# 进入sdk\版本号\toolchain输入cmd打开命令行,重新加载系统为可读写
D:\DevEco Studio\sdk\9\toolchains>hdc_std shell mount -o remount,rw /

# 替换/etc/window/resources中的display_manager_config.xml文件
D:\DevEco Studio\sdk\9\toolchains>hdc_std file send C:\Users\jjh\display_manager_config.xml /etc/window/resources

然后重启开发板让设置生效

知识点附送

为ohos_prebuilt_XXX类目标添加支持指定output属性的能力

  • 以该pr学习 https://gitee.com/openharmony/build/pulls/822/files 为ohos_prebuilt_XXX类目标添加支持指定output属性的能力。
  • ohos_prebuilt_XXX类目标是指ohos_prebuilt_executable、ohos_prebuilt_shared_library、ohos_prebuilt_static_library、ohos_prebuilt_etc。这类目标只支持指定source属性,拷贝到out目录时目标文件名与源文件名是一样的,无法另行指定名字。该pr解决了此限制,添加了output这个可选属性用于指定目标文件名,不指定的情况下默认与源文件名是一样的(与原逻辑保持一致)。
  • OpenHarmony编译构建子系统是基于Gn和ninja的,而gn本身是有原生模板(source_set,shared_library, static_library, action, executable,group)。gn也支持用户自定义编译模板,OpenHarmony编译子系统提供了一系列自定义的模板(ohos_shared_library、ohos_prebuilt_executable、ohos_prebuilt_shared_library等)
  • 自定义模板的源码位于 https://gitee.com/openharmony/build/tree/master/templates
  • ohos_prebuilt_executable、ohos_prebuilt_shared_library、ohos_prebuilt_static_library、ohos_prebuilt_etc预编译模板在prebuilt.gni中定义,它们通过调用ohos_copy模板实现。
  • ohos_copy模板实现了拷贝文件到设备具体位置的功能,它需要定义invoker.sources和invoker.outputs,即source和output属性。例如
  • ohos_prebuilt_executable、ohos_prebuilt_shared_library、ohos_prebuilt_static_library、ohos_prebuilt_etc(下面用ohos_prebuilt_xxx代指)添加支持指定output属性的能力的相关代码如下:
templates/common/copy.gni文件中:

template("ohos_copy") {
assert(defined(invoker.sources),
"sources must be defined for ${target_name}.")
assert(defined(invoker.outputs),
"outputs must be defined for ${target_name}.")
...
if (_is_prebuilt) {
_outputs = invoker.outputs
module_source = string_replace(_outputs[0], "${target_out_dir}/", "", 1)
}
prebuilt = _is_prebuilt
···
templates/cxx/prebuilt.gni文件中:
template("ohos_prebuilt_xxx") {
···
# 如果.gn文件中为ohos_prebuilt_xxx指定了out属性,文件名称被另外指定。没有则默认为原名称
if (defined(invoker.output)) {
_copy_output = "${target_out_dir}/${invoker.output}"
} else {
_copy_output = "${target_out_dir}/${invoker.source}"
}
···
outputs = [ _copy_output ]
}

使能/禁用selinux

  • 禁用selinux
hdc_std shell mount -o rw,remount /
hdc_std shell "sed -i 's/enforcing/permissive/g' /system/etc/selinux/config"
hdc_std shell "cat /system/etc/selinux/config |grep SELINUX="
# 重启设备
hdc_std shell reboot
  • 使能selinux
hdc_std shell mount -o rw,remount /
hdc_std shell "sed -i 's/permissive/enforcing/g' /system/etc/selinux/config"
hdc_std shell "cat /system/etc/selinux/config |grep SELINUX="
# 重启设备
hdc_std shell reboot
想了解更多关于开源的内容,请访问:

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

有关[触觉智能RK3568]修改屏幕 DPI(像素密度)的更多相关文章

  1. ruby-on-rails - 如何在 Rails Controller Action 上触发 Facebook 像素 - 2

    我有一个ruby​​onrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素

  2. 屏幕录制为什么没声音?检查这2项,轻松解决 - 2

    相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声

  3. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  4. ruby-on-rails - Ruby on Rails - 我可以在调用之前修改属性的值吗? - 2

    假设我有一个名为Product的模型,其中有一个名为brand的字段。假设brand的值以this_is_a_brand格式存储。我可以在模型(或其他任何地方)中定义一个方法,允许我在调用brand之前修改它的值吗?例如,如果我调用@product.brand,我想得到ThisisaBrand,而不是this_is_a_brand。 最佳答案 我建议使用方括号语法([]和[]=)而不是read_attribute和write_attribute。方括号语法更短并且designedtowraptheprotectedread/writ

  5. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

  6. 智能客服 | 浅谈人工智能聊天机器人ChatGPT - 2

    2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动

  7. ruby - 无论如何要在 REPL 中重新加载修改后的 gem 文件 - 2

    在尝试构建Rubygem(使用Bundler)时,我倾向于使用Bundler提供的REPL测试代码——可通过bundleconsole访问。有什么方法可以重新加载整个项目吗?我最终再次加载单个(更改的)文件以测试新更改。 最佳答案 以下hack适用于我的一个相对简单的gem和Ruby2.2.2。我很想看看它是否适合你。它做出以下假设:您具有传统的文件夹结构:一个名为lib/my_gem_name.rb的文件和一个文件夹lib/my_gem_name/,其中包含任何文件/文件夹结构。您要重新加载的所有类都嵌套在您的顶级模块MyGemN

  8. Centos7-yum安装mysql-修改密码-无密码登录-安全配置 - 2

    目录1、yum安装mysql修改密码(1)在mysql里面修改(2)第二种方式,利用mysqladmin修改密码2、没有密码,登录mysql修改密码3、mysql的安全设置1、yum安装mysql在CentOS中默认安装有MariaDB(MySQL的一个分支),安装完成之后可以直接覆盖MariaDB。rpm-qa|grepmariadb查询是否安装了mariadbrpm-e--nodepsmariadb-libs-5.5.60-1.el7_5.x86_64卸载mariadwgethttp://dev.mysql.com/get/mysql57-community-release-el7-11.

  9. ruby-on-rails - 如何仅修改内存中的 zip 文件? - 2

    我有一个Ruby应用程序,我需要修改现有的zip文件。我想在内存中构建zip文件并流回字节,而无需将文件写入文件系统。如果我最终在Heroku上托管它,我认为我无法写入文件系统。有谁知道这样做的方法吗?我看了Zip::ZipFile但看起来它总是想写入文件系统。我想“基于java实现”我将能够只获取压缩文件的字节,这可以在java中完成,但我看不到这样做的方法。编辑:我要问的与此基本相同,但针对Ruby而不是Python:Functiontocreatein-memoryzipfileandreturnashttpresponse 最佳答案

  10. ruby-on-rails - 检查模型是否在 before_save 事件中被修改或创建 - 2

    我想检查是否正在Rails的before_save回调中创建模型。我还想检查它是否已被修改(更新时)。谢谢 最佳答案 您可以使用new_record?看看你是否有一个全新的对象和changed?查看是否有任何变化:before_save:pancakesdefpancakesifnew_record?#Notinthedatabaseyet.elsifchanged?#Alreadyexistsbutithasunsavedchanges.endend 关于ruby-on-rails-检

随机推荐