知识库
标题: SD5360-660-M1麦当劳 [打印本页]
作者: King 时间: 2022-7-14 20:25
标题: SD5360-660-M1麦当劳
本帖最后由 King 于 2024-10-8 13:53 编辑
个人:锁定竖屏可能会导致 其他接口输出扁平化,局部触摸失效等
[attach]398[/attach]
黑屏问题依然没有解决
app默认获取所有权限无需动态获取,暂时需动态获取(远程工具、麦当劳等少了无弹窗)
ro.serial无法设置,当时设置的是和家里一致的位置。
wm size 第一次需要设置1080*1920,之后 adb reboot不影响
静默安装对应安装含McDonald's 关键字的app 可以实现静默安装
07142242- 去掉远程弹窗。
660仍然存在的问题如下:
1、通知栏菜单,开关设置无效。(通知栏状态栏需同时打开,逻辑上无状态栏就无通知栏)
2、主屏旋转角度默认0度,修改无效。(7.16 可以支持旋转)
3、升级后(或恢复出厂设置),分辨率不正确,需要adb修改。
4.定时开关机,时间节点。(批量出货之后方可实现)
静默安装,上层调用方式,rom 实现
val intent = Intent("android.intent.action.SILENT_PACKAGE_INSTALL")
intent.component =ComponentName("com.android.packageinstaller",
"com.android.packageinstaller.SilentInstallerReceiver")
intent.putExtra("silent_install_file", file.absolutePath)
sendBroadcast(intent,null) |
|
|
要求全量包升级 |
提供给上层调用的唯一识别码
获取设备唯一序列号,序列号和pc 外面贴的标签一致
如:上层调用方式:
Settings.Global.getString(context.getContentResolver(), "ro_serial") |
1)系统设置增加以太网设置菜单,支持dhcp和静态IP设置;
2)静态 ip 配置
上层调用方式如下,rom实现
Intent intent = new Intent("android.net.action.ETHERNET_IP_CHANGED");
intent.putExtra("netMode", "static");
intent.putExtra("ipaddr",xx.xx.xx.xx);
//static 配置中子网掩码可能为空,接口里面拿到子网掩码进行配置
intent.putExtra("netMask", xxx.xxx.xxx.xx);
intent.putExtra("gateway",xxx.xxx.xx.xx);
intent.putExtra("dns1", xxx.xxx.xx.xx);
intent.putExtra("dns2", xxx.xxx.xx.xx);
intent.setComponent(new ComponentName("com.android.settings",
"com.android.settings.ethernet. EthernetBroadcastReceiver"));
context.sendBroadcast(intent,null);
3)切为动态 dhcp 增加动态配置的方式,广播只传入配置方式 netMode 为 dhcp,其他内容为空。
Intent intent = new Intent("android.net.action.ETHERNET_IP_CHANGED");
intent.putExtra("netMode", "dhcp");
intent.setComponent(new ComponentName("com.android.settings",
"com.android.settings.ethernet.EthernetBroadcastReceiver"));
context.sendBroadcast(intent,null);
查询webview 版本
app 管理里查看,version 93.0.4577.62
adb shell dumpsys webview | grep "WebViewFactory" |
作者: King 时间: 2022-7-15 16:46
本帖最后由 King 于 2024-10-28 16:37 编辑
ro_serial 关联 ro.serial
或者将ro_serial 放在固定不可重置区域。
设置
adb shell am broadcast -a com.android.serial --es set CJAM1012345
adb shell "am broadcast -a com.android.serial --es set 12345678"
获取
Settings.Global.getString(context.getContentResolver(), "ro_serial")
settings get global ro_serial
adb shell settings get global ro_serial
adb shell "am broadcast -a com.android.serial --es set CJAM1010000000J23010037"
广播写入一次后,可以用settings put global ro_serial 12345678 写入
adb shell dumpsys display | grep "mDisplayId"
多屏操作:adb shell dumpsys display
scrcpy.exe --display 10 (错误后,可查看当前可用屏幕)
scrcpy 目录下执行
scrcpy.exe --display 0 主屏
scrcpy.exe --display 1 副屏
# 基本语法
scrcpy --display <display-id>
# 示例:控制显示ID为1的屏幕
scrcpy --display 1
# 同时控制多个显示
scrcpy --display 0 & scrcpy --display 1
# 列出所有显示设备详细信息
adb shell dumpsys display | grep -A 20 "Display Devices"
# 查看当前活跃的显示
adb shell dumpsys display | grep "mCurrentDisplayRect"
# 查看显示状态
adb shell dumpsys display | grep "Display Power"
# 实时监控显示状态变化
adb shell dumpsys display | grep -E "mDisplayId|mState" --line-buffered
# 或使用watch命令
watch -n 1 "adb shell dumpsys display | grep mDisplayId"
作者: King 时间: 2022-7-18 11:00
本帖最后由 King 于 2024-11-13 17:35 编辑
远程使用时,副屏跟随旋转要关掉,远程才能正常全屏V1 签名JAVA_HOME:C:\Program Files\Java\jre1.8.0_333
JAVA_HOME:C:\Program Files\Java\jre1.8.0_333
D:\Tools\signapk
java -jar signapk.jar platform.x509.pem platform.pk8 MCD.apk MCD_signed.apk
JAVA_HOME:C:\Program Files\Java\jdk-20
v1 v2 v3签名
C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\33.0.0
$ apksigner sign --key platform.pk8 --cert platform.x509.pem --out MCD_signed.apk MCD.apk
centos环境
devops/apksign
使用java 配置 sudo update-alternatives --config java ,java-1.8.0
使用source profile 配置
#set java environment
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
export JRE_HOME=/usr/lib/jvm/jre
export CLASSPATH=.JAVA_HOME/lib/dt.jarJAVA_HOME/lib/tools.jarJAVA_HOME/jre/lib/rt.jar
export PATH=$PATHJAVA_HOME/bin
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.xml.bind'
export ANDROID_HOME=/var/lib/jenkins/android-sdk/tools/bin
export PATH=$PATHANDROID_HOME/cmdline-tools/latest/bin
找到libconscrypt_openjdk_jni.so 库 修改可执行权限 执行 ldd libcon……即可解决 Failed to load any of the given libraries: [conscrypt_openjdk_jni-linux-x86_64,问题
java -jar -Djava.library.path=. signapk.jar platform.x509.pem platform.pk8 MCD.apk MCD_Signed.apk
java -jar -Djava.library.path=. signapk.jar platform.x509.pem platform.pk8 MCD.apk MCD_Signed.apk
查看前面SHA-1值
keytool -printcert -jarfile C:\Users\Administrator\Desktop\CashBoxService.apk
1.252平台签名
java -jar -Djava.library.path=. signapk.jar platform.x509-5360.pem platform-5360.pk8 app-release.apk app-release-signed.apk
作者: King 时间: 2022-7-20 14:25
竖屏固件调整横屏后恢复出厂,开机logo 不全屏
竖屏倒向 90度,刷机,logo正向竖屏,动画倒向。
作者: King 时间: 2022-10-17 20:53
本帖最后由 King 于 2022-10-19 15:32 编辑
cat /sys/devices/virtual/thermal/thermal_zone5/temp
这个是核心模组里面的温度
[backcolor=var(--im_chat_message_bg_color,#c9e7ff)]adb shell cat /proc/meminfo
[backcolor=var(--im_chat_message_bg_color,#c9e7ff)]查看内存使用情况
cat /proc/stat 或者 dumpsys cpuinfo
查看CPU占用情况
[color=var(--common_level2_base_color,rgba(23,26,29,0.6))]
[color=var(--common_level2_base_color,rgba(23,26,29,0.6))]
_________________________________________________________________________________________________________________
打开
1111111 -> 周一/.../周日
关闭
0000000 -> 周一/.../周日
adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es power_time 15:22 --es shut_time 15:18 --es week 1111111 --ez effective true"
——————————————————————————————————————————————————————————————————————
打开(不加--es week是星期全打开)
1111111 -> 周一/.../周日
关闭
0000000 -> 周一/.../周日
单独设置开机时间/星期
adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es power_time 15:22 --es week 1111111 --ez effective true"
单独设置关机时间/星期
adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es shut_time 15:18 --es week 1111111 --ez effective true"
同时设置时间/星期(星期在开机和关机上同时生效)
adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es power_time 15:22 --es shut_time 15:18 --es week 1111111 --ez effective true"
张健:
这个参数必须7个,同时设置。打开设置1,关闭设置0
少了参数,不加参数,默认星期全设置
————————————————————————————————————————————————————
打开(不加--es week是星期全打开)
1111111 -> 周一/.../周日
关闭
0000000 -> 周一/.../周日
单独设置开机时间/星期
scrcpy.adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es power_time 15:22 --es week 1111111 --ez effective true"
单独设置关机时间/星期
scrcpy.adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es shut_time 15:18 --es week 1111111 --ez effective true"
同时设置时间/星期(星期在开机和关机上同时生效)
scrcpy.adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es power_time 15:22 --es shut_time 15:18 --es week 1111111 --ez effective true"
作者: King 时间: 2022-11-10 09:13
本帖最后由 King 于 2024-10-24 11:30 编辑
一个只刷Android,一个全文件刷,你们用的是Android部分的,在那个Android的xml里面。。除了Android还有3g/4g的代码,以及供电部分代码和其他部分的,我这边为了方便就一起刷的。
sadb shell am force-stop com.mcdonalds.sok.cn
关闭 麦当劳 进程
adb shell am start -n com.mcdonalds.sok.cn/.activity.LaunchActivity
am start -n com.oray.sunlogin.customize/com.oray.sunlogin.application.Main
拉起麦当劳app 到最顶层
setprop persist.sys.apk_install_auto_start true //开(默认)
setprop persist.sys.apk_install_auto_start false //关
660平台开发的功能,目的给用户APP自动升级用的,升级完拉起自己。
adb shell getprop persist.sys.apk_install_auto_start 应为false
作者: King 时间: 2022-12-2 14:08
本帖最后由 King 于 2023-3-31 16:59 编辑
adb shell "am broadcast -n com.system.ota/com.system.ota.OtaUpdateReceiver -a zysj.remote.update.system"
《adb shell am broadcast -a zysj.remote.update.system》仅添加,上面是adb指令
将update.zip 放在storage/emulated/0 下面
sadb push H:\Downloads\update.zip /sdcard
sadb logcat | grep "ota" 查看进度
03-31 16:50:45.640 3331 3344 D ota : onStatusUpdate status: 3
03-31 16:50:45.642 3331 3344 D ota : update progress: 91
03-31 16:50:47.727 3331 3344 D ota : onStatusUpdate status: 3
03-31 16:50:47.729 3331 3344 D ota : update progress: 92
03-31 16:50:49.309 3331 3344 D ota : onStatusUpdate status: 3
03-31 16:50:49.315 3331 3344 D ota : update progress: 93
03-31 16:51:01.384 3331 3344 D ota : onStatusUpdate status: 3
03-31 16:51:01.388 3331 3344 D ota : update progress: 94
03-31 16:51:06.432 3331 3344 D ota : onStatusUpdate status: 3
03-31 16:51:06.434 3331 3344 D ota : update progress: 95
03-31 16:51:07.564 3331 3344 D ota : onStatusUpdate status: 3
03-31 16:51:07.566 3331 3344 D ota : update progress: 96
03-31 16:51:07.792 3331 3344 D ota : onStatusUpdate status: 3
03-31 16:51:07.794 3331 3344 D ota : update progress: 97
03-31 16:51:07.987 3331 3344 D ota : onStatusUpdate status: 3
03-31 16:51:07.990 3331 3344 D ota : update progress: 98
03-31 16:51:08.175 3331 3344 D ota : onStatusUpdate status: 3
03-31 16:51:08.177 3331 3344 D ota : update progress: 99
03-31 16:51:09.058 3331 3344 D ota : onStatusUpdate status: 5
03-31 16:51:23.929 3331 3344 D ota : onStatusUpdate status: 5
03-31 16:51:23.949 3331 3344 D ota : onStatusUpdate status: 6
03-31 16:51:23.949 3331 3344 D ota : onPayloadApplicationComplete errorCode=0
03-31 16:51:23.953 3331 3344 D ota : UPDATE SUCCESS!
03-31 16:51:23.968 1037 1037 I update_engine: [0331/165123.968887:INFO:metrics_reporter_android.cc(29)] uploading 1 to histogram for metric ota_update_engine_attempt_number
03-31 16:51:23.969 1037 1037 I update_engine: [0331/165123.969088:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_attempt_payload_type
03-31 16:51:23.969 1037 1037 I update_engine: [0331/165123.969166:INFO:metrics_reporter_android.cc(29)] uploading 3 to histogram for metric ota_update_engine_attempt_duration_boottime_in_minutes
03-31 16:51:23.969 1037 1037 I update_engine: [0331/165123.969232:INFO:metrics_reporter_android.cc(29)] uploading 3 to histogram for metric ota_update_engine_attempt_duration_monotonic_in_minutes
03-31 16:51:23.969 1037 1037 I update_engine: [0331/165123.969295:INFO:metrics_reporter_android.cc(29)] uploading 605 to histogram for metric ota_update_engine_attempt_payload_size_mib
03-31 16:51:23.969 1037 1037 I update_engine: [0331/165123.969357:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_attempt_result
03-31 16:51:23.969 1037 1037 I update_engine: [0331/165123.969718:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_attempt_error_code
03-31 16:51:24.002 1037 1037 I update_engine: [0331/165124.002054:INFO:metrics_reporter_android.cc(29)] uploading 634524960 to histogram for metric ota_update_engine_attempt_current_bytes_downloaded_mib
03-31 16:51:24.024 1037 1037 I update_engine: [0331/165124.024065:INFO:metrics_reporter_android.cc(29)] uploading 1 to histogram for metric ota_update_engine_successful_update_attempt_count
03-31 16:51:24.024 1037 1037 I update_engine: [0331/165124.024291:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_successful_update_payload_type
03-31 16:51:24.024 1037 1037 I update_engine: [0331/165124.024412:INFO:metrics_reporter_android.cc(29)] uploading 605 to histogram for metric ota_update_engine_successful_update_payload_size_mib
03-31 16:51:24.024 1037 1037 I update_engine: [0331/165124.024524:INFO:metrics_reporter_android.cc(29)] uploading 605 to histogram for metric ota_update_engine_successful_update_total_bytes_downloaded_mib
03-31 16:51:24.024 1037 1037 I update_engine: [0331/165124.024632:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_successful_update_download_overhead_percentage
03-31 16:51:24.024 1037 1037 I update_engine: [0331/165124.024741:INFO:metrics_reporter_android.cc(29)] uploading 3 to histogram for metric ota_update_engine_successful_update_total_duration_in_minutes
03-31 16:51:24.024 1037 1037 I update_engine: [0331/165124.024848:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_successful_update_reboot_count
03-31 16:51:25.497 3331 3344 E ota : rebootNow
升级完成后 直接重启,没有提示,检测版本号后面有-OTA 表示升级成功。
升级完成后,根目录 update.zip 删除
作者: King 时间: 2022-12-6 09:34
本帖最后由 King 于 2022-12-13 17:13 编辑
$ sadb shell
sdm660_64:/ $ settings list global | grep ntp
ntp_server=ntp1.aliyun.com
ntp_server_2=persist.vendor.ntp.svr_2
$ adb shell settings put global ntp_server asia.pool.ntp.org
# test
$ adb shell settings get global ntp_server
> asia.pool.ntp.org
1、设置时间adb shell "date 07010101.00"
设置时间格式为MMDDHHM.00,不能设置年
慧为:
adb shell date 022520402021.59 set
adb shell su -c date 022520402021.59 set 加su 权限
2、读取时间
adb shell "date"
3、设置时区
adb shell "setprop persist.sys.timezone Pacific/Midway"
Pacific/Midway为设置的时区
4、读取时区
adb shell "getprop persist.sys.timezone"
[backcolor=transparent !important]第一的, adb shell settings put global auto_time 1
(打开自动日期和时间)
第二,adb shell date '0739010002017.00'
(设定你想要的时间)
第三,adb shell settings put global auto_time 0
(关闭自动日期和时间)
更改日期与系统相同
adb shell [color=var(--highlight-literal)]date -s `[color=var(--highlight-literal)]date +%G%m%d.%H%M%S`将日期更改为明天:
adb shell [color=var(--highlight-literal)]date -s `[color=var(--highlight-literal)]date --[color=var(--highlight-literal)]date=[color=var(--highlight-variable)]'1 day' +%G%m%d.%H%M%S`将日期更改为明天凌晨 12 点
adb shell [color=var(--highlight-literal)]date -s `[color=var(--highlight-literal)]date --[color=var(--highlight-literal)]date=[color=var(--highlight-variable)]'1 day' +%G%m%d.000000`将日期更改为昨天
adb shell [color=var(--highlight-literal)]date -s `[color=var(--highlight-literal)]date --[color=var(--highlight-literal)]date=[color=var(--highlight-variable)]'1 day ago' +%G%m%d.%H%M%S`将日期更改为一周前
adb shell [color=var(--highlight-literal)]date -s `[color=var(--highlight-literal)]date --[color=var(--highlight-literal)]date=[color=var(--highlight-variable)]'1 week ago' +%G%m%d.%H%M%S`
扩展 @uval 的答案,您可以使用以下内容根据 Windows 机器上的时间更新 Android 设备上的日期和时间:adb shell su -c date %dateMM%%dateDD%%timeHH%%timeMM%%dateYYYY%.%timeSS%
adb shell su -c am broadcast -a android.intent.action.TIME_SET
使用adb修改屏幕像素密度 (此命令针对全志开发板子)
adb shell am display-density 120
{以下命令针对高通的开发板子}
获取Android设备屏幕分辨率:
adb shell wm size
获取android设备屏幕密度:
adb shell wm density
修改屏幕像素密度
adb shell wm resize 1920*1080
adb shell wm size 540×960
重置屏幕尺寸大小
adb shell wm size reset
设置屏幕dpi (常用的dpi有160mdpi, 240hdpi, 320xhdpi, 480xxhdpi)
adb shell wm density 320
重置可用dpi如下命令
adb shell wm density reset
作者: King 时间: 2023-1-5 17:17
本帖最后由 King 于 2024-1-24 13:44 编辑
先进入adb shell , dumpsys | grep "DUMP OF SERVICE"就可以看哪些service可以dump
dumpsys | grep "DUMP OF SERVICE"
adb shell service list
service list | grep "network_time_update_service"
要简单检查特定服务是否正在运行,请使用:
adb shell service check <service>例如,adb shell service check media.player赋予Service media.player: found如果它的运行和Service media.player: not found其他.
如果您需要更多细节,请尝试dumpsys <service>.例如,adb shell dumpsys media.player返回有关media.player客户端,打开文件等的信息.
最后,如果您真的需要认真的调试细节,请尝试从adb shell dumpsys activity services哪个角度展示正在发生的事情ActivityManager.这包括有关意图,创建时间,上次活动时间,绑定等的信息等.如果要存储输出以供以后查看/搜索,可以重定向输出.它通常相当冗长.
查看设备运行时间
adb shell dumpsys | grep "uptime"
Current stats (from -28m0s673ms to now, +28m0s673ms uptime):
Runtime uptime (elapsed): +28m2s395ms
Runtime uptime (uptime): +28m2s395ms
作者: King 时间: 2023-1-9 17:27
本帖最后由 King 于 2024-10-30 13:23 编辑
关闭 麦当劳
adb shell "ps|grep com.mcdonalds.sok.cn"
u0_a57 3092 903 4458936 86420 0 0 S com.mcdonalds.sok.cn.dev:remote
system 3482 904 1184380 44500 0 0 S com.qualcomm.qti.smcinvokepkgmgr
radio 3502 903 3871356 51532 0 0 S com.qualcomm.simcontacts
u0_a57 3672 903 4793788 203704 0 0 S com.mcdonalds.sok.cn.dev
adb root
adb shell " kill -9 3092"
adb shell " am force-stop com.mcdonalds.sok.cn.dev"
kill 用于终止进程kill
有十几种控制进程的方法,下面是一些常用的方法:
kill -STOP [pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
kill -CONT [pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程。
kill -KILL [pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
kill -9 -1
终止你拥有的全部进程。
SIGKILL 和 SIGSTOP 信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。
ps -ef | grep 包名、进程名
ps -ef | grep kafka
top -u 包名、进程名
cat /proc/meminfo
proc/meminfo 机器的内存使用信息
/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。
/proc/pid/statm 进程所占用的内存
查看机器可用内存
/proc/28248/>free
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。
如果直接用ps命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。
ps auxw | head -1;ps auxw | sort -rn -k4 | head -5 查看内存占用前5进程
ps auxw | head -1;ps auxw | sort -rn -k3 | head -3
查看CPU 占用前3 进程
[attach]331[/attach]
快捷键 adb 指令发送
可以使用adb shell命令来发送返回桌面的指令。具体指令如下:
adb shell input keyevent 3
这个指令模拟按下home键的操作,可以将焦点切换到桌面。
返回桌面(home)指令:
- adb shell input keyevent 3
菜单指令:
- adb shell input keyevent 82
返回指令:
- adb shell input keyevent 4
- 打开通知面板:adb shell input keyevent 226
- 打开快捷设置面板:adb shell input keyevent 239
- 打开最近任务列表:adb shell input keyevent 19
- 打开音量调整滑块:adb shell input keyevent 200
- 减小音量:adb shell input keyevent 203
- 增大音量:adb shell input keyevent 205
- 静音/取消静音:adb shell input keyevent 164
- 锁屏:adb shell input keyevent 264
- 亮屏:adb shell input keyevent 224
安卓系统底部的三个按键依次是“返回键”、“主页键”、“多任务键”。其中,“返回键”通常位于左侧,“主页键”位于中间,“多任务键”通常位于右侧。
使用adb发送指令到安卓设备时,可以通过输入相应的adb shell命令来模拟按下这些按键的操作。具体指令如下:
模拟按下返回键:
- adb shell input keyevent KEYCODE_BACK
模拟按下主页键:
- adb shell input keyevent KEYCODE_HOME
模拟按下多任务键:
- adb shell input keyevent KEYCODE_ RecentApps
# 短按power键
adb shell input keyevent 26 # KEYCODE_POWER
# 或
adb shell input keyevent KEYCODE_POWER
# 长按power键(模拟按下和抬起)
adb shell "input keyevent --longpress 26"
# 或
adb shell "input keyevent --longpress KEYCODE_POWER"
# 查找power键对应的输入设备
adb shell getevent -l | grep -i power
# 发送按键事件(示例路径,实际设备可能不同)
adb shell sendevent /dev/input/event0 1 116 1 # 按下
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 116 0 # 释放
adb shell sendevent /dev/input/event0 0 0 0
# 触发关机对话框
adb shell service call power 7
# 模拟power键按下
adb shell service call power 2
# 强制关机
adb shell reboot -p
可以使用adb shell命令来发送切换任务的指令。具体指令如下:
adb shell am start -n com.android.deskclock/.AlarmClock
这个指令会启动一个名为AlarmClock的应用,并将焦点切换到该应用。你可以将com.android.deskclock和.AlarmClock替换为你想要切换到的应用包名和活动名。
另外,如果你想要发送其他切换任务的指令,可以使用adb shell dumpsys activity命令来获取当前运行的应用和活动信息,然后根据需要编写相应的adb shell命令来模拟用户操作。
01-26 15:43:39.493 452 530 D WindowManager: interceptKeyTi keyCode=3 down=false repeatCount=0 keyguardOn=false mHomePressed=true canceled=false |
win=Window{37e28b1 u0 com.hezheng.pos/com.hezheng.hkpos.ui.activity.trade.goods.GoodsActivity}:指定了与事件相关的窗口,其中 com.hezheng.pos 是应用程序的包名,com.hezheng.hkpos.ui.activity.trade.goods.GoodsActivity 是活动的类名。
action=1:指定按键事件的动作。在这里,1 表示按下动作。
flags=40:标志位,以十进制表示。在这里,40 的二进制表示是 101000,表明事件可能具有一些特殊标志。
keyCode=82:按键码,这里是 82,表示 Menu 键。
scanCode=0:扫描码,这里是 0。
metaState=0:元状态,这里是 0,表示没有按下任何修饰键(如 Shift、Ctrl、Alt 等)。
repeatCount=0:重复次数,这里是 0,表示这是按键的第一次触发。
policyFlags=1795162112:策略标志,以十进制表示。在这里,1795162112 的二进制表示是 1101010100000000100101000100000,这可能包含一些窗口管理器的策略信息。
keyCode=3:按键码,这里是 3,通常对应于 Home 键。
down=false:指示按键事件的动作,这里是 false,表示按键被释放(抬起)。
repeatCount=0:重复次数,这里是 0,表示这是按键的第一次触发。
keyguardOn=false:指示键盘锁是否打开,这里是 false,表示键盘锁未打开。
mHomePressed=true:指示 Home 键是否被按下,这里是 true,表示 Home 键被按下。
canceled=false:指示按键事件是否被取消,这里是 false,表示按键事件未被取消。
因此,这条日志的含义是窗口管理器拦截了一个 Home 键的释放事件,并且当前 Home 键处于按下状态,未被键盘锁锁定,且按键事件未被取消。这可能反映了系统处理 Home 键事件的一些状态和逻辑。
在Android系统中,system分区默认情况下是只读文件系统。这是为了保证系统的稳定性和安全性,防止未经授权的修改。然而,在某些情况下,可能需要对system分区进行写操作。
要对system分区进行写操作,首先需要重新挂载system分区为可读写模式。这通常涉及到系统级别的权限和复杂的操作,因为直接修改system分区可能会对系统稳定性和安全性造成严重影响。
在Android中,应用程序通常没有直接访问设备存储的写入权限。如果应用程序需要写入外部存储,它需要在AndroidManifest.xml文件中声明写入权限(如<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>),并在运行时检查用户是否已授予该权限。
关于A/B分区,它是一种特殊的文件系统结构,将系统分区分成了A和B两个槽(slot)。这种结构的主要作用是实现无缝升级。当系统需要更新时,可以在一个槽(如B槽)中下载并安装新版本的系统,而用户仍然可以在另一个槽(如A槽)中继续使用当前版本的系统。一旦B槽中的新系统安装完成,系统会提示用户重启,并在重启后自动切换到B槽的新版本系统。这样,用户在整个升级过程中几乎不会感知到中断,从而实现了无缝升级。
A/B分区结构与system分区有关联,因为A/B分区实际上是将system分区分成了两个独立的槽。平时系统工作在一个槽(如A槽),而OTA(Over-The-Air,空中下载技术)升级则在另一个槽(如B槽)进行。这种结构使得系统可以在不影响用户当前使用的情况下进行升级,提高了系统的可用性和稳定性。
1、uiautomatorviewer: android-sdk自带。需要android开发环境。手机上打开对应页面,在终端输入uiautomatorviewer即可。
Write automated tests with UI Automator
2、Android Studio中的LayoutInspector:IDE带的,可以实时查看布局层级信息。通过adb连接上手机,然后在Android Studio中打开LayoutInspector,即可查看手机上的实时布局信息。
如果页面复杂,会卡顿。
Layout Inspector
3、stecho: facebook的开源库,可以在浏览器中查看布局信息。在项目中依赖stetho三方库,运行到手机上之后,在浏览器中可查看。
stetho
4、dumpsys通过adb shell dumpsys activity top命令,拿到当前activity的快照,内部包含布局信息。
最稳定、靠谱。
adb shell dumpsys activity top
作者: King 时间: 2023-1-17 09:35
本帖最后由 King 于 2024-10-25 10:44 编辑
按行解析,以这种形式
white_list.txt
com.mcdonalds.sok.cn
com.mcdonalds.sok.cn.dev
com.mcdonalds.rom.test
再就是 我们内置那几个包名。
新增的话,远程添加,远程添加,你们是通过 远程app,接收白名单,发广播的形式么?
一个做到系统里面,一个做到data分区里面。action加到data里面去。io.appium.uiautomator2.server.test
io.appium.uiautomator2.server
io.appium.settings
adb shell am broadcast -a cn.mcd.system_pkg.setting_action --es install_pwd "520*#06#Mcd"(20240627,去掉广播修改白名单密码)
广播口令验证adb shell am broadcast -a cn.mcd.system_pkg.setting_action --es install_pwd "520*#06#Mcd" --es install_pkg ""
sadb shell am broadcast -a cn.mcd.system_pkg.setting_action --es install_pwd "520*#06#Mcd" --es install_pkg "ua.com.streamsoft.pingtools"
sadb shell am broadcast -a cn.mcd.system_pkg.setting_action --es install_pwd "520*#06#Mcd" --es install_pkg "com.ayst.stresstest"
sadb shell am broadcast -a cn.mcd.system_pkg.setting_action --es install_pwd "520*#06#Mcd" --es install_pkg "com.ccl.factoryapp"
adb shell am broadcast -a cn.mcd.system_pkg.setting_action --es install_pwd "520*#06#Mcd" --es install_pkg "com.ccl.updater"
adb shell am broadcast -a cn.mcd.system_pkg.setting_action --es install_pwd "520*#06#Mcd" --es install_pkg "com.tananaev.logcat"
io.appium.uiautomator2.server.test
io.appium.settings
io.appium.uiautomator2.server
{}{}{}{}{}
if [[ $(adb shell dumpsys window | grep mCurrentFocus) != *"com.ccl.factoryapp"* ; then adb shell monkey -p com.ccl.factoryapp -c android.intent.category.LAUNCHER 1; fi
#!/bin/bash
# 获取顶层应用包名
TOP_APP=$(adb shell dumpsys window | grep mCurrentFocus | cut -d'/' -f1 | rev | cut -d' ' -f1 | rev)
# 目标应用包名
TARGET_APP="com.ccl.factoryapp"
# 检查是否是目标应用
if [[ $TOP_APP != *"$TARGET_APP"* ]]; then
echo "目标应用不在前台,正在启动..."
# 启动应用
adb shell monkey -p $TARGET_APP -c android.intent.category.LAUNCHER 1
else
echo "目标应用已在前台运行"
fi
- 如果需要获取应用的启动Activity,可以使用:
bash
adb shell dumpsys package com.ccl.factoryapp | grep -A 1 "android.intent.action.MAIN:"
- 然后用 am start 命令启动具体Activity:
bash
adb shell am start -n com.ccl.factoryapp/com.ccl.factoryapp.MainActivity
bash
while truedo TOP_APP=$(adb shell dumpsys window | grep mCurrentFocus | cut -d'/' -f1 | rev | cut -d' ' -f1 | rev) if [[ $TOP_APP != *"com.ccl.factoryapp"* ]]; then echo "重新启动应用..." adb shell monkey -p com.ccl.factoryapp -c android.intent.category.LAUNCHER 1 fi sleep 5 # 每5秒检查一次done
monkey命令可能会产生随机事件,生产环境建议使用 am start
{}{}{}{}{}{}{}{}
包名添加
/system/etc/white_list.txt
/data/custom/white_list.txt
麦当劳应用每1分钟自己拉向顶层一次,系统检测后台没有麦当劳进程也会拉起麦当劳进程
(1)、BOOT COMPLETED对应的action和uses-permission没有一起添加需要三方应用在AndroidManifest.xml 中写入2)、应用安装到了sd卡内,安装在sd卡内的应用是收不到BOOT COMPLETED广播的.(概率出现)(3)、对于android3.1以后版本,如果要应用接收开机广播有两种方法:a).将应用预置到/system/app/目录。
b).安装应用后先启动一次,适用于有Activity的应用
注释:
)OT COMPLETED这个广播比特殊,预置到system/app下面的aok才会通过android intent action.BOOT COMPLETED来开机自
而预置到data/app.vendor/app下面的三方apk,若安装从来没有启动过和被用户手动强制停止它就是处于“stopped state"此应用的信息保存在/datalsystem/users/0/package-restictions.xml中),它的接收器将会无法接收任何广播,无法开机之后自动启动。但是安装这个应用之后只要是有手动去点击下这个apk,下次开机就肯定是会自动启动起来的,也是接收这
个BOOT COMPLETED广播。
2、与此同时系统增加了2个Flag: FLAG INCLUDE STOPPED PACKAGES和FLAG EXCLUDE STOPPED PACKAGES,来标识人intent是否激活处于“stoppedstate”的应用
3、Google允许应用和和后台服务通过给广播intent设置
FLAG INCLUDE STOPPED PACKAGES来唤醒处于“stopped state"的程序,也就是用户自己写的广播inten可以控制这个机制,但是系统自带的广播intent默认都是FLAG EXCLUDE STOPPED PACKAGES,由于不能修改,所以就没法通过系统广播自启动了。
远程工具需要申请SU权限,su已改成ubiot
date 获取当前时间
设置时间
adb shell su 0 date -u 091512342023.56
[backcolor=rgba(0,0,0,var(--tw-bg-opacity))]adb shell su 0 date -u [MMDDhhmm[[CC]YY][.ss]]
其中,MM表示月份,DD表示日期,hh表示小时,mm表示分钟,CC表示世纪(通常为20),YY表示年份,.ss表示秒(可选)。
例如,要将时间设置为2023年9月15日12点34分56秒,你可以运行以下命令:
[backcolor=rgba(0,0,0,var(--tw-bg-opacity))][color=rgba(217,217,227,var(--tw-text-opacity))][backcolor=rgba(52,53,65,var(--tw-bg-opacity))][size=0.75]bashCopy code
adb shell su 0 date -u 091512342023.56
[backcolor=rgba(0,0,0,var(--tw-bg-opacity))]adb shell am broadcast -a android.intent.action.TIME_SET
这个命令会发送一个广播,模拟用户手动设置时间,从而触发系统检查并同步时间。请注意,这只是一种模拟,它不会自动确定时区。系统仍然需要有网络连接来自动同步时间,而且这个命令的效果可能因设备和Android版本而异。
作者: King 时间: 2023-3-9 10:59
本帖最后由 King 于 2024-10-25 10:51 编辑
adb shell am broadcast -a com.operation.debug --es debug_key "520*#06#Mcd" --es debug_pwd "xxxx"
修改运营调试密码为:520*#06#Mcd
默认密码ccl123456
点击事件,只支持触摸。其他输入设备不支持
状态栏隐藏方式为限制高度为0,修改动态开关状态栏后,需重启生效。判断应用不在前端,拉起到前端
[attach]406[/attach]
[attach]405[/attach]
作者: King 时间: 2023-3-9 13:24
本帖最后由 King 于 2023-3-15 17:00 编辑
20230309版本
0.更新内置麦当劳版本
1. 开机启动后,cclup/远程 没有自启动,只有McDonald自启动了,需要点击一次之后再自启。
2.系统运维界面没有恢复,只能重启恢复限制,本身进入调试模式后,再次连点会laucher崩溃。
3.误触或进入debug界面后,未知密码或密码错误后,要有个返回桌面按钮,调整为中文<运维或>者<DevOps>~
4.麦当劳应用 应为内置可卸载,或者更新可覆盖,目前不可覆盖。因此最好设置为可卸载。
5.白名单添加失败,无法安装应用,
6.app 静默安装失效(白名单原因)
su 权限 换成了 ubiot
dumpsys package p > /sdcard/xxx.log远程控制用了系统的UID,所以要一起改,和系统保持一致,所以要添加64位的库
不一致,UID容易混掉,32位/64位的不能互用,我需要试试看。
作者: King 时间: 2023-3-21 16:45
与麦当劳确认的问题:
1,进程已经拉起,但麦当劳应用并未将自己拉到最前端[attach]315[/attach]
2.麦当劳后期会用什么方式推送远程升级。
已内置远程升级广播指令
作者: King 时间: 2023-4-11 15:42
本帖最后由 King 于 2023-5-16 14:51 编辑
adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png D:\ShortCut
cclup 与 cclremote 需要签名且 高版本才能覆盖安装。0104 McDonald 在签名版下有可能有画
adb shell am broadcast -a cn.mcd.system_pkg.op_debug --es switch on/off
打开调试模式
作者: King 时间: 2023-11-20 13:38
本帖最后由 King 于 2023-11-20 13:40 编辑
adb shell getprop | grep -E "ro.product.model|ro.build.display.id|ro.build.version.release|ro.sf.lcd_density|ro.build.version.release|ro.build.type"
一句指令 通查
作者: King 时间: 2024-1-3 11:25
端口占用查找进程
Open command prompt as admin
C:\WINDOWS\system32>netstat -ano | findstr :7895
*** Repeat step 2 until there are no more child process
C:\WINDOWS\system32>wmic process where (ParentProcessId=1091 ) get Caption,ProcessId
Caption ProcessId
cmd.exe 1328
2.a. C:\WINDOWS\system32>wmic process where (ParentProcessId=1328) get Caption,ProcessId
Caption ProcessId
conhost.exe 1128
2.b. repeat this until no further child processes found
-- Then kill all child processes
C:\WINDOWS\system32>taskkill /F /PID 1128 SUCCESS: The process with PID 9500 has been terminated.
netstat -ano | findstr "5037"
wmic process where (ParentProcessId=20816) get Caption,ProcessId
作者: King 时间: 2024-1-16 10:50
要通过ADB设置Android设备的静态IP,可以按照以下步骤进行操作:
确保你的电脑已经安装了ADB工具,并且设备已经开启了USB调试模式。
连接设备到电脑,并在命令行终端中输入以下命令来获取当前网络设置:
adb shell settings get global dhcp_eth0
如果返回值为“1”,表示设备当前使用动态IP地址。如果返回值为“0”,表示设备当前使用静态IP地址。
3. 如果设备当前使用动态IP地址,可以通过以下命令将其设置为静态IP地址:
arduino
adb shell settings put global dhcp_eth0 0
接下来,你需要手动配置静态IP地址。首先,通过以下命令查看物理网卡名称:
bash
adb shell ifconfig
通常,物理网卡名称是“eth0”。
5. 使用以下命令配置IP和子网掩码:
bash
adb shell ifconfig eth0 <IP地址>/<子网掩码位数> up
请将“<IP地址>/<子网掩码位数>”替换为你想要设置的静态IP地址和子网掩码。例如,如果你的静态IP地址为192.168.1.111,子网掩码为24位,则命令如下:
arduino
adb shell ifconfig eth0 192.168.1.111/24 up
配置网关:
bash
adb shell busybox route add default gw <默认网关>
将“<默认网关>”替换为你的默认网关地址。例如:
arduino
adb shell busybox route add default gw 192.168.1.1
如果需要配置DNS服务器,可以使用以下命令进行设置:
bash
adb shell busybox route add dns <DNS服务器地址>
将“<DNS服务器地址>”替换为你想要设置的DNS服务器地址。你可以根据需要添加多个DNS服务器地址,用空格分隔。例如:
作者: King 时间: 2024-1-18 14:04
[attach]350[/attach][attach]349[/attach][attach]348[/attach][attach]347[/attach][attach]346[/attach]
作者: King 时间: 2024-1-24 15:45
本帖最后由 King 于 2024-2-27 14:05 编辑
编译 可执行文件
pyinstaller -F -i D:\Tools\logo.png adbreboot.py
查看app 主activity
adb shell dumpsys activity recents | findstr "intent={"
查看内存
[backcolor=rgba(27, 31, 35, 0.05)]adb shell dumpsys meminfo
[backcolor=rgba(27, 31, 35, 0.05)]查看系统版本名
[backcolor=rgba(27, 31, 35, 0.05)]adb shell getprop ro.build.display.id
[backcolor=rgba(27, 31, 35, 0.05)]
[backcolor=rgba(27, 31, 35, 0.05)]查看 app 版本号
[color=rgba(0, 0, 0, 0.85)]adb shell dumpsys package <package_name> | grep versionName
[color=rgba(0, 0, 0, 0.85)]adb shell dumpsys package <package_name> | findstr versionName
getprop ro.build.date.utc
查询设备编译时间
python systrace.py -b 32768 -t 150 -o mytrace.html gfx input view webview wm am sm audio video camera hal app res dalvik rs bionic
power sched irq freq idle disk mmc load sync workq memreclaim regulators com.hezheng.pos
trace Android 性能
查询设备 mac地址
[color=rgba(0, 0, 0, 0.85)]adb shell cat /sys/class/net/eth0/address
[color=rgba(0, 0, 0, 0.85)]adb shell cat /sys/class/net/wlan0/address
[color=rgba(0, 0, 0, 0.85)]
作者: King 时间: 2024-3-12 14:57
本帖最后由 King 于 2024-3-12 16:05 编辑
//硬件序列号 public static final String SERIAL = getString("ro.serialno");
mac 地址:public static String getEthernetMac(){
String ethernetMac = null;
try {
NetworkInterface NIC = NetworkInterface.getByName("eth0");
byte[] buf = NIC.getHardwareAddress();
ethernetMac = byteHexString(buf);
} catch (Exception e) {
e.printStackTrace();
}
return ethernetMac;
}获取Android设备的IMEI(国际移动设备身份码)
public static String getIMEI(Context context) {
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = tm.getDeviceId();
if (deviceId == null) {
return "UnKnown";
} else {
return deviceId;
}
作者: King 时间: 2024-3-15 09:19
错误 INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113 通常出现在尝试在Android设备上安装APK文件时,尤其是当APK包含为特定应用二进制接口(ABI)编译的本地库(如.so文件)时。ABI定义了操作系统和应用软件之间的底层接口,它决定了应用如何与处理器交互。
这个错误表明,APK中包含的本地库与设备支持的ABI不兼容。换句话说,APK是为不同的处理器架构(如armeabi-v7a, arm64-v8a, x86, x86_64等)编译的,而你的设备并不支持这些架构。
res=-113 是一个错误代码,通常用于指示一个通用的“不支持”或“不匹配”的情况。
要解决这个问题,你可以尝试以下步骤:
确认设备ABI:首先,你需要知道你的设备支持哪些ABI。这通常可以在设备的开发者选项或系统设置中查看,或者使用ADB工具(Android Debug Bridge)运行 adb shell getprop ro.product.cpu.abi 或 adb shell getprop ro.product.cpu.abilist 命令。
检查APK支持的ABI:确认APK是为哪些ABI编译的。这通常需要解压APK文件并检查lib目录下的内容。如果APK仅包含与你的设备不兼容的ABI的库,则无法安装。
获取正确的APK版本:如果可能,获取一个与你的设备ABI兼容的APK版本。这通常意味着从应用开发者或应用商店获取一个为不同架构编译的版本。
使用兼容的设备:如果你无法获取与你的设备ABI兼容的APK版本,你可能需要使用一个具有兼容ABI的不同设备来安装和运行该应用。
编译本地库:如果你有访问应用的源代码和编译工具,你可以尝试为你的设备ABI编译本地库,并重新打包APK。
请注意,处理这类问题时,了解Android的ABI和架构是非常重要的。如果你不熟悉这些概念,可能需要查阅更多关于Android开发、架构和ABI的文档和教程。
作者: King 时间: 2024-3-15 09:49
本帖最后由 King 于 2024-5-28 17:03 编辑
只有 调试版 固件才能打开串口调试
麦当劳固件 240301 日志控制大小与覆盖
以个数和总大小控制150个 ,每个 30M
机器内部断电,然后再上电,从外壳的缝隙看下红灯和蓝灯的状态;主板供电正常,红灯常亮;系统开机过程中蓝色会闪烁两次,系统开机后如果网络正常,蓝灯会一直闪烁。
app签名了就是系统应用
q:
右上角点9下
q:
然后长按这
[attach]373[/attach]
q:
切换环境
q:
输入门店号,点击uat环境保存就行
主要是测试不是你们做啊 那你就用1450997 UAT门店 520mcd
[attach]374[/attach]
作者: King 时间: 2024-6-6 15:48
本帖最后由 King 于 2024-7-19 15:31 编辑
getprop ro.build.version.security_patch
获取安全补丁版本
USB 红黑短路可能会影响系统启动,另外同时HDMI 接入后 可能会影响系统启动。
点对点(P2P)模式允许两个NFC设备之间建立通信链接并交换数据,与读写器、卡模式不一样的就是,P2P模式下数据交互是双向的。
P2P遵循ISO18092规范,建立链接后使用NDEF(NFC Data Exchange Format)格式进行数据传输。此模式下最先发起通信的一方称为Initiator,另一方则称为Target。
4.LLCP(Logic Link Control Protocol,逻辑链路控制协议)
该协议用于管理ISO 18092的NFC设备之间逻辑连接的标准,主要用于P2P模式。
5.NFC Forum Protocol Bindings
P2P模式下,高层数据传递采用的是集成传统的IP(Internet Protocol,网络之间互连的协议)、OBEX(Object Exchange,对象交换)等来实现设备间数据的传递。
基于ST25R3911B高性能HF读写器/NFC发起器,输出功率为1.4W,支持VHBR和AAT- ISO 18092 (NFCIP-1) 主动 P2P
- ISO14443A、ISO14443B 和 FeliCa™
- ISO15693
- 支持 VHBR(3.4 Mbit/s PICC 到 PCD 成帧、6.8 Mbit/s AFE 和 PCD 到 PICC 成帧)
DP1363F芯片特性
• 高射频输出功率的前端IC,传输速度高达848 kbit/s
• 支持ISO/IEC 14443A/MIFARE,ISO/IEC 14443B和FeliCa
• 相符于ISO/IEC 18092的P2P被动发起方模式
华翔天诚购买的智能读卡器读写器产品---ACR1251U-M1
DP1332E多协议高度集成非接触式读写芯片
DP1363F高度集成的非接触读写芯片
ST25R3911B-DISCO
作者: King 时间: 2024-7-18 11:01
NFC无线通讯13.56M非接触式射频国产DP5321兼容P2P进口PN5321
NFC(Near Field Communication)近场通信,这个技术由非接触式射频识别(RFID)演变而来,由飞利浦半导体(现恩智浦半导体公司)、诺基亚和索尼共同研制开发,其基础是RFID及互连技术。NFC是一种短距离高频的无线电技术,在13.56Mhz频率运行于20cm距离内。其传输速度有106Kbit/s、212Kbit/s或者424Kbit/s三种。目前近场通信已通过并成为ISO/IEC IS 18092国际标准、ECMA-340标准与ETSI TS 102 190标准。
NFC的工作模式有卡模式、读写器模式和点对点模式三种:
卡模式:这个模式其实就是相当于一张采用RFID技术的IC卡。可以替代大量的IC卡(包括信用卡)场合商场刷卡、公交卡、门禁管制,车票,门票等等。此种方式下,有一个极大的优点,那就是卡片通过非接触读卡器的RF域来供电,即便是寄主设备(如手机)没电也可以工作。
读写器模式:这个模式可以模拟读读卡器功能,读取MIFARE和FeliCa卡的信息
点对点模式:这个模式和红外线差不多,可用于数据交换,只是传输距离较短,传输创建速度较快,传输速度可快些,功耗低(蓝牙也类似)。将两个具备NFC功能的设备链接,能实现数据点对点传输,如下载音乐、交换图片或者同步设备地址簿。一次通过NFC,多个设备如数码相机、PDA、计算机和手机之间都可以交换资料或者服务。
NFC与RFID的区别有如下三点:
NFC将非接触读卡器、非接触卡和点对点功能整合进一块单芯片,而rfid必须有阅读器和标签组成。RFID只能实现信息的读取以及判定,而NFC技术则强调的是信息交互。通俗的说NFC就是RFID的演进版本,双方可以近距离交换信息。NFC手机内置NFC芯片,组成RFID模块的一部分,可以当作RFID无源标签使用进行支付费用;也可以当作RFID读写器,用作数据交换与采集,还可以进行NFC手机之间的数据通信
NFC传输范围比RFID小,RFID的传输范围可以达到几米、甚至几十米,但由于NFC采取了独特的信号衰减技术,相对于RFID来说NFC具有距离近、带宽高、能耗低等特点
应用方向不同。NFC看更多的是针对于消费类电子设备相互通讯,有源RFID则更擅长在长距离识别。
PN532芯片是一款高度集成的非接触式通讯收发模块,基于8051单片机核心。它支持6个不同的操作模式:ISO/IEC14443A/MIFARE 读/写器、FeliCa 读/写器、ISO/IEC 14443B 读/写器、ISO/IEC14443A MIFARE卡模拟模式、FeliCa卡模拟模式、ISO/IEC 18092 ECMA 340点对点;这款芯片提供3种和主机通信的接口:SPI\I2C\USART。
由于近几年进口的经常缺货还有涨价,下面介绍一款兼容P2P直接替换的给各位做备选:
DP5321是基于80C51微控制器核,13.56Mhz高度集成的非接触式读写器芯片。 PIN对PIN替代PN5321(PN5321A3HN/C106),软硬件兼容
DP5321芯片特性:
· 带40kB ROM和1kB RAM的80C51微控制器内核
· 高度集成的模拟电路,解调和译码响应
· 输出缓冲驱动器通过最少量的外部无源器件连接天线
· 集成了RF场检测器
· 集成了数据模式检测器
· 支持ISO/IEC14443A/MIFARE
· 只在读写器模式中支持ISO/IEC14443B
· 在读写器模式中典型工作距离超过50mm,具体距离由天线尺寸、调谐和电源决定
· 在NFCIP-1模式下工作距离高达50mm,具体视天线的尺寸、调谐以及电源而定
· 在卡操作模式中典型工作距离约为100mm,具体距离由天线尺寸、调谐和外部场强度决定
· 在读写器模式中,支持MifareClassic加密,可支持212kbit/s和424kbit/s两种更高数据传输速率
· FeliCa模式下,支持106kbit/s、212kbit/s和424kbit/s的通信波特率
· 集成了NFCIP-1的RF接口,传输速率高达424kbit/s
· 灵活的中断模式
· 低功耗模式一硬件掉电模式一软件掉电模式
· 当器件处于掉电模式时能够通过I2C、HSU和SPI接口自动唤醒
· 可编程定时器
· 石英晶体振荡器
· 2.7V~5.5V的电源
· 支持主机接口:
-SPI接口
-I2C接口
-串行UART
工作模式:
· 读写器模式,支持ISO/IEC14443A/MIFARE®机制
· 读写器模式,支持ISO/IEC14443B机制
· 读写器模式,支持FeliCa机制
· 卡操作模式,支持ISO14443A/MIFARE®机制
· 卡操作模式,FeliCa机制
· 支持ISO/IEC18092,ECM340点对点
作者: King 时间: 2024-8-16 14:11
adb shell settings put global verifier_verify_adb_installs 0
adb shell settings put global package_verifier_enable 0
关闭签名验证
欢迎光临 知识库 (http://jonpin.com/) |
Powered by Runo R&D |