- 以 D:\SmartSenior 生产工程为源,纳入 AppScope、entry、cjagent、hvigor 及根配置 - 移除 build-profile.json5 的 signingConfigs(p12/p7b/cer 路径与加密口令)及 products.signingConfig 引用 - 不纳入本地与开发产物:local.properties、.idea、.hvigor、.codegenie、demo、backup_a2a_native、SESSION_LOG.md、build_err.txt、build/、oh_modules - .gitignore 追加 .codegenie 与密钥文件通配(*.p12/*.p7b/*.cer/*.jks/*.keystore/*.pem)
90 lines
2.9 KiB
TypeScript
90 lines
2.9 KiB
TypeScript
// 全局字体缩放工具(ArkTS 严格类型,无 any)
|
|
// 用于老人端大字显示:存 preferences + AppStorage
|
|
import { preferences } from '@kit.ArkData';
|
|
import { common } from '@kit.AbilityKit';
|
|
import { accessibility } from '@kit.AccessibilityKit';
|
|
|
|
const FONT_PREFS = 'FontPrefs';
|
|
const FONT_KEY = 'fontScale';
|
|
|
|
export type FontScaleLevel = 'system' | 'small' | 'normal' | 'large' | 'xlarge';
|
|
|
|
// 字体缩放选项
|
|
export interface FontScaleOption {
|
|
level: FontScaleLevel;
|
|
label: string;
|
|
}
|
|
|
|
// 各档位缩放倍数(system 表示跟随系统,用 fp 单位不额外缩放)
|
|
export const FONT_SCALE_MAP: Record<FontScaleLevel, number> = {
|
|
system: 1.0,
|
|
small: 1.0,
|
|
normal: 1.15,
|
|
large: 1.5,
|
|
xlarge: 1.9,
|
|
};
|
|
|
|
// 档位中文名
|
|
export const FONT_SCALE_LABELS: Array<FontScaleOption> = [
|
|
{ level: 'system', label: '跟随系统' },
|
|
{ level: 'small', label: '小' },
|
|
{ level: 'normal', label: '标准' },
|
|
{ level: 'large', label: '大' },
|
|
{ level: 'xlarge', label: '特大' },
|
|
];
|
|
|
|
// 读取当前缩放档位(默认跟随系统)
|
|
export async function loadFontScale(context: common.UIAbilityContext): Promise<FontScaleLevel> {
|
|
try {
|
|
const prefs = await preferences.getPreferences(context, FONT_PREFS);
|
|
const value = await prefs.get(FONT_KEY, 'system');
|
|
const level = typeof value === 'string' ? value as FontScaleLevel : 'system';
|
|
AppStorage.setOrCreate<FontScaleLevel>('fontScale', level);
|
|
return level;
|
|
} catch (err) {
|
|
return 'system';
|
|
}
|
|
}
|
|
|
|
// 设置缩放档位并持久化
|
|
export async function setFontScale(context: common.UIAbilityContext, level: FontScaleLevel): Promise<void> {
|
|
try {
|
|
const prefs = await preferences.getPreferences(context, FONT_PREFS);
|
|
await prefs.put(FONT_KEY, level);
|
|
await prefs.flush();
|
|
} catch (err) {
|
|
// ignore
|
|
}
|
|
AppStorage.setOrCreate<FontScaleLevel>('fontScale', level);
|
|
}
|
|
|
|
// 获取当前缩放倍数(同步,供页面文字应用)
|
|
export function getFontScale(): number {
|
|
const level = AppStorage.get<FontScaleLevel>('fontScale');
|
|
if (level && FONT_SCALE_MAP[level]) {
|
|
return FONT_SCALE_MAP[level];
|
|
}
|
|
return 1.0;
|
|
}
|
|
|
|
// 退出登录时恢复运行时字体为跟随系统(不清除持久化设置,老人重新登录后自动恢复)
|
|
export function resetFontScaleRuntime(): void {
|
|
AppStorage.setOrCreate<FontScaleLevel>('fontScale', 'system');
|
|
}
|
|
|
|
// 关怀模式:系统无障碍(读屏/TalkBack 类)开启时自动生效
|
|
// 初始化在 EntryAbility.onCreate 调用;组件用 @StorageProp('careMode') 响应
|
|
export function refreshCareMode(): boolean {
|
|
let care = false;
|
|
try {
|
|
care = accessibility.isOpenAccessibilitySync();
|
|
} catch (err) {
|
|
care = false;
|
|
}
|
|
AppStorage.setOrCreate<boolean>('careMode', care);
|
|
return care;
|
|
}
|
|
|
|
// 关怀模式额外字号加成倍数(在 FONT_SCALE_MAP 之上再乘)
|
|
export const CARE_MODE_EXTRA_SCALE = 1.2;
|