smdtManager.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. // SMDT设备管理插件 JavaScript 使用示例
  2. // 获取插件实例
  3. const smdtManager = uni.requireNativePlugin('SmdtManager');
  4. // 检查插件是否加载成功
  5. if (!smdtManager) {
  6. console.error('SMDT Manager插件加载失败');
  7. }
  8. // 插件初始化检查和重试机制
  9. export const PluginManager = {
  10. // 检查插件是否已初始化
  11. async checkInitialization() {
  12. return new Promise((resolve) => {
  13. console.log("qxj smdtManager",smdtManager);
  14. smdtManager.isInitialized((res) => {
  15. console.log("qxj isInitialized",res);
  16. resolve(res.initialized || false);
  17. });
  18. });
  19. },
  20. // 重新初始化插件
  21. async initialize() {
  22. return new Promise((resolve, reject) => {
  23. smdtManager.initialize((res) => {
  24. if (res.error) {
  25. reject(res.error);
  26. } else {
  27. resolve(res);
  28. }
  29. });
  30. });
  31. },
  32. // 确保插件已初始化(带重试机制)
  33. async ensureInitialized(maxRetries = 3) {
  34. for (let i = 0; i < maxRetries; i++) {
  35. const isInitialized = await this.checkInitialization();
  36. if (isInitialized) {
  37. return true;
  38. }
  39. console.log(`插件未初始化,尝试重新初始化 (${i + 1}/${maxRetries})`);
  40. try {
  41. await this.reinitialize();
  42. // 等待一段时间后再检查
  43. await new Promise(resolve => setTimeout(resolve, 500));
  44. } catch (error) {
  45. console.error(`重新初始化失败:`, error);
  46. if (i === maxRetries - 1) {
  47. throw new Error('插件初始化失败,请检查设备兼容性');
  48. }
  49. }
  50. }
  51. return false;
  52. }
  53. };
  54. // 系统功能示例
  55. export const SystemAPI = {
  56. // 获取系统字体大小
  57. async getSystemFontSize() {
  58. try {
  59. // 确保插件已初始化
  60. await PluginManager.ensureInitialized();
  61. return new Promise((resolve, reject) => {
  62. smdtManager.getSystemFontSize((res) => {
  63. if (res.error) {
  64. reject(res.error);
  65. } else {
  66. resolve(res.fontSize);
  67. }
  68. });
  69. });
  70. } catch (error) {
  71. throw new Error(`获取系统字体大小失败: ${error.message}`);
  72. }
  73. },
  74. // 设置系统字体大小
  75. setSystemFontSize(fontSize) {
  76. return new Promise((resolve, reject) => {
  77. smdtManager.setSystemFontSize({ fontSize }, (res) => {
  78. if (res.error) {
  79. reject(res.error);
  80. } else {
  81. resolve(res.result);
  82. }
  83. });
  84. });
  85. },
  86. // 获取时间格式
  87. getTimeFormat() {
  88. return new Promise((resolve, reject) => {
  89. smdtManager.getTimeFormat((res) => {
  90. if (res.error) {
  91. reject(res.error);
  92. } else {
  93. resolve(res.timeFormat);
  94. }
  95. });
  96. });
  97. },
  98. // 设置时间格式 (1: 24小时制, 0: 12小时制)
  99. setTimeFormat(timeFormat) {
  100. return new Promise((resolve, reject) => {
  101. smdtManager.setTimeFormat({ timeFormat }, (res) => {
  102. if (res.error) {
  103. reject(res.error);
  104. } else {
  105. resolve(res.result);
  106. }
  107. });
  108. });
  109. },
  110. // 设置音量 (0-100)
  111. setVolume(volume) {
  112. return new Promise((resolve, reject) => {
  113. smdtManager.setVolume({ volume }, (res) => {
  114. if (res.error) {
  115. reject(res.error);
  116. } else {
  117. resolve(res.result);
  118. }
  119. });
  120. });
  121. },
  122. // 设置ADB调试
  123. setAdbDebug(enable) {
  124. return new Promise((resolve, reject) => {
  125. smdtManager.setAdbDebug({ enable }, (res) => {
  126. if (res.error) {
  127. reject(res.error);
  128. } else {
  129. resolve(res.result);
  130. }
  131. });
  132. });
  133. }
  134. };
  135. // 网络功能示例
  136. export const NetworkAPI = {
  137. // 获取WiFi信号强度
  138. getWifiRssi() {
  139. return new Promise((resolve, reject) => {
  140. smdtManager.getWifiRssi((res) => {
  141. if (res.error) {
  142. reject(res.error);
  143. } else {
  144. resolve(res.rssi);
  145. }
  146. });
  147. });
  148. },
  149. // 获取MAC地址
  150. getMacAddress() {
  151. return new Promise((resolve, reject) => {
  152. smdtManager.getMacAddress((res) => {
  153. if (res.error) {
  154. reject(res.error);
  155. } else {
  156. resolve(res.macAddress);
  157. }
  158. });
  159. });
  160. },
  161. // 获取IMEI号
  162. getImeiNumber() {
  163. return new Promise((resolve, reject) => {
  164. smdtManager.getImeiNumber((res) => {
  165. if (res.error) {
  166. reject(res.error);
  167. } else {
  168. resolve(res.imei);
  169. }
  170. });
  171. });
  172. },
  173. // 设置WiFi热点
  174. setWifiAp(ssid, password) {
  175. return new Promise((resolve, reject) => {
  176. smdtManager.setWifiAp({ ssid, password }, (res) => {
  177. if (res.error) {
  178. reject(res.error);
  179. } else {
  180. resolve(res.result);
  181. }
  182. });
  183. });
  184. }
  185. };
  186. // 显示功能示例
  187. export const DisplayAPI = {
  188. // 设置LCD背光亮度 (0-255)
  189. setLcdBackLight(brightness) {
  190. return new Promise((resolve, reject) => {
  191. smdtManager.setLcdBackLight({ brightness }, (res) => {
  192. if (res.error) {
  193. reject(res.error);
  194. } else {
  195. resolve(res.result);
  196. }
  197. });
  198. });
  199. },
  200. // 设置显示密度
  201. setDisplayDensity(density) {
  202. return new Promise((resolve, reject) => {
  203. smdtManager.setDisplayDensity({ density }, (res) => {
  204. if (res.error) {
  205. reject(res.error);
  206. } else {
  207. resolve(res.result);
  208. }
  209. });
  210. });
  211. }
  212. };
  213. // 硬件功能示例
  214. export const HardwareAPI = {
  215. // 设置LED灯状态
  216. setLedLighted(ledId, enable) {
  217. return new Promise((resolve, reject) => {
  218. smdtManager.setLedLighted({ ledId, enable }, (res) => {
  219. if (res.error) {
  220. reject(res.error);
  221. } else {
  222. resolve(res.result);
  223. }
  224. });
  225. });
  226. },
  227. // 获取LED状态
  228. getLedState(ledId) {
  229. return new Promise((resolve, reject) => {
  230. smdtManager.getLedState({ ledId }, (res) => {
  231. if (res.error) {
  232. reject(res.error);
  233. } else {
  234. resolve(res.state);
  235. }
  236. });
  237. });
  238. },
  239. // 获取SD卡路径
  240. getSDcardPath() {
  241. return new Promise((resolve, reject) => {
  242. smdtManager.getSDcardPath((res) => {
  243. if (res.error) {
  244. reject(res.error);
  245. } else {
  246. resolve(res.path);
  247. }
  248. });
  249. });
  250. },
  251. // 获取U盘路径
  252. getUdiskPath() {
  253. return new Promise((resolve, reject) => {
  254. smdtManager.getUdiskPath((res) => {
  255. if (res.error) {
  256. reject(res.error);
  257. } else {
  258. resolve(res.path);
  259. }
  260. });
  261. });
  262. },
  263. // 设置USB电源
  264. setUsbPower(enable) {
  265. return new Promise((resolve, reject) => {
  266. smdtManager.setUsbPower({ enable }, (res) => {
  267. if (res.error) {
  268. reject(res.error);
  269. } else {
  270. resolve(res.result);
  271. }
  272. });
  273. });
  274. }
  275. };
  276. // 使用示例
  277. export const UsageExamples = {
  278. // 系统设置示例
  279. async systemExample() {
  280. try {
  281. // 获取当前字体大小
  282. const fontSize = await SystemAPI.getSystemFontSize();
  283. console.log('当前字体大小:', fontSize);
  284. // 设置字体大小
  285. const result = await SystemAPI.setSystemFontSize(18);
  286. console.log('设置字体大小结果:', result);
  287. // 设置为24小时制
  288. await SystemAPI.setTimeFormat(1);
  289. console.log('时间格式设置为24小时制');
  290. // 设置音量为50%
  291. await SystemAPI.setVolume(50);
  292. console.log('音量设置为50%');
  293. } catch (error) {
  294. console.error('系统设置错误:', error);
  295. }
  296. },
  297. // 网络功能示例
  298. async networkExample() {
  299. try {
  300. // 获取WiFi信号强度
  301. const rssi = await NetworkAPI.getWifiRssi();
  302. console.log('WiFi信号强度:', rssi, 'dBm');
  303. // 获取MAC地址
  304. const macAddress = await NetworkAPI.getMacAddress();
  305. console.log('MAC地址:', macAddress);
  306. // 设置WiFi热点
  307. await NetworkAPI.setWifiAp('MyHotspot', '12345678');
  308. console.log('WiFi热点设置成功');
  309. } catch (error) {
  310. console.error('网络功能错误:', error);
  311. }
  312. },
  313. // 显示控制示例
  314. async displayExample() {
  315. try {
  316. // 设置屏幕亮度为50%
  317. await DisplayAPI.setLcdBackLight(128);
  318. console.log('屏幕亮度设置为50%');
  319. // 设置显示密度
  320. await DisplayAPI.setDisplayDensity(320);
  321. console.log('显示密度设置为320 DPI');
  322. } catch (error) {
  323. console.error('显示控制错误:', error);
  324. }
  325. },
  326. // 硬件控制示例
  327. async hardwareExample() {
  328. try {
  329. // 打开LED灯
  330. await HardwareAPI.setLedLighted(1, true);
  331. console.log('LED灯已打开');
  332. // 获取LED状态
  333. const ledState = await HardwareAPI.getLedState(1);
  334. console.log('LED状态:', ledState ? '开启' : '关闭');
  335. // 获取存储路径
  336. const sdPath = await HardwareAPI.getSDcardPath();
  337. console.log('SD卡路径:', sdPath);
  338. // 启用USB电源
  339. await HardwareAPI.setUsbPower(true);
  340. console.log('USB电源已启用');
  341. } catch (error) {
  342. console.error('硬件控制错误:', error);
  343. }
  344. }
  345. };
  346. // 导出插件实例供直接使用
  347. export default smdtManager;