安卓源码中添加can工具

1. 添加文件

待添加的文件我放到了文章的最后
板子是rk356的,系统是安卓11版本的

  • 首先将can-utils文件夹添加到device/rockchip/rk356x/rk66_tms(这里根据你个人的项目来确定,这里是我copy的一个工程目录用的是,拷贝的是rk3566_r然后进行添加自己的工程的)下
  • 你可以在在源码顶层目录下进行source、lunch后再进入到can-utils使用mm命令进行单独编译。
  • 编译好后会在源码顶层目录out/target/product/rk66_tms/system/bin/下生成can-utils目录下Android.mk文件指定生成的命令,这里以candump为例子:
#
# candump
#

include $(CLEAR_VARS)

LOCAL_SRC_FILES := candump.c
LOCAL_MODULE := candump
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_LIBRARIES := libcan
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/
LOCAL_CFLAGS := $(PRIVATE_LOCAL_CFLAGS)

include $(BUILD_EXECUTABLE)

这里的LOCAL_MODULE就是指定生成的MODULE,编译后就被拷贝到源码顶层目录out/target/product/rk66_tms/system/bin/下面。然后可以通过adb push命令将命令push到启动后的板子上,然后就可以在adb shell终端上使用该命令了

adb push candump /system/bin/
  • 如果需要在编译源码的时候就把编好的MODULE放在system/bin/下,可以修改device/rockchip/rk356x/rk66_tms下的rk66_tms.mk(这个文件也是在添加工程时复制后更改名字了的,它会被device/rockchip/rk356x下的AndroidProducts.mk包含),关于AndroidProducts.mk包含rk66_tms.mk如下:
#
# Copyright 2014 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.A
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

PRODUCT_MAKEFILES := \
        $(LOCAL_DIR)/rk3566_rgo/rk3566_rgo.mk \
	...
	$(LOCAL_DIR)/rk66_tms/rk66_tms.mk

COMMON_LUNCH_CHOICES := \
    rk3566_32bit-userdebug \
    rk3566_32bit-user \
    ...
	rk66_tms-userdebug \
    rk66_tms-user

rk66_tms.mk添加MODULE放在system/bin/的修改如下:

  PRODUCT_PACKAGES += canplayer \
                      candump \
                      cansend   

这上面的candump和cansend都是can-utils目录下的Android.mk文件中LOCAL_MODULE指定的,添加修改并编译后将镜像烧录到板子上就可以使用这些命令了.

文件:can收发工具

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 12 ,锁屏界面添加充电图标的实现方式与之前的版本略有不同,需要通过在 KeyguardStatusViewManager 注册一个 StatusBarPlugin 并在其回调方法更新充电图标。 首先,在 KeyguardStatusViewManager 注册一个 StatusBarPlugin: ```java private StatusBarPlugin mStatusBarPlugin; private void registerStatusBarPlugin() { mStatusBarPlugin = (StatusBarPlugin) Dependency.get(StatusBarPlugin.class); mStatusBarPlugin.addKeyguardStateCallback(mKeyguardStateCallback); } ``` 注册后,需要实现一个 KeyguardStateCallback,该接口包含了锁屏状态的回调方法。 ```java private final StatusBarPlugin.KeyguardStateCallback mKeyguardStateCallback = new StatusBarPlugin.KeyguardStateCallback() { @Override public void onShowingStateChanged(boolean showing) { updateChargingIndicator(); } @Override public void onKeyguardFadingAwayChanged() { updateChargingIndicator(); } }; ``` 在回调方法,通过 updateChargingIndicator() 方法来更新充电图标的显示状态。 ```java private void updateChargingIndicator() { if (mStatusBarPlugin == null) { return; } boolean isCharging = mStatusBarPlugin.isKeyguardShowingChargingAnimation(); if (isCharging) { // 显示充电图标 mChargingIndicator.setVisibility(View.VISIBLE); } else { // 隐藏充电图标 mChargingIndicator.setVisibility(View.GONE); } } ``` 在 updateChargingIndicator() 方法,通过调用 mStatusBarPlugin.isKeyguardShowingChargingAnimation() 方法获取当前是否正在显示充电动画,如果正在充电,则显示充电图标,否则隐藏充电图标。 最后,在布局文件添加充电图标的 View: ```xml <ImageView android:id="@+id/charging_indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_battery_charging" android:visibility="gone" /> ``` 通过上述步骤,就可以在 Android 12 的锁屏界面添加充电图标了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值