爱智EdgerOS之深入解析EdgerOS中应用Display投屏模块

一、Display 的功能

  • 在日常应用开发中,需要开发者获取显示器的相关信息以此来进行后续相关业务的开发,比如投屏等。基于这种需求,EdgerOS 提供了 Display 模块,方便开发者可以在应用开发中便捷的获取显示器的相关信息。
  • 需要注意的是这个模块只有在 EdgerOS 1.8.0 及以上版本才会提供,并且需要给予显示权限才能使用。

① 引入模块:

const Display = require('display');

② 实例化:

  • new Display(channel)
    • channel {Integer} 显示设备信息通道标识数字
    • Returns: {Object} Display 对象
const display = new Display(0);

③ 显示列表

  • Display.list()
    • Returns: {Array} 合法的显示设备信息通道标识数字集合
console.log(Display.list());
// [0:0]
  • 获取有效的 display 通道标识数字。

④ 设备信息

  • display.info():Returns: {Object} 显示设备信息
  • 获取显示设备的相关信息,可以包含以下内容;
    • width {Integer} 水平像素宽度
  • -high {Integer} 垂直像素宽度
  • -color {Integer} 色彩深度位
  • -linked {Boolean} 显示器是否已连接
  • -busy {Boolean} 是否占用
const info = display.info();
if (info.linked) {
        console.log(info.width, 'X', info.high);
}

二、示例

  • 假设我们有投屏类似的需求,就可以借助 Display 模块获取显示设备的相关信息,本示例就是实现将广告图片投到显示设备上。在此示例中,首先使用了 Display 模块获取到了显示设备的分辨率信息, 并依赖上文提及的 ImageCodec 模块将图片进行重新编码,将广告图片的分辨率大小和显示设备的分辨率修改到一致,最后使用了 MediaDecoder 模块的 previewFormat 方法,将修改后的图片投到显示设备上。
  • 示例代码如下:
const MediaDecoder = require('mediadecoder');
const Display = require('display');
const imagecodec = require('imagecodec');
const iosched = require('iosched');

// 获取设备信息
const display = new Display(0);
const info = display.info();
const wid = info.width;
const hig = info.high;
display.close()
// 图片重新编码
const imageFile = imagecodec.decode('./test.bmp');
let newImage = imagecodec.resize(imageFile , {
  width: wid,
  height: hig,
  components: imageFile.components
});
imagecodec.encode(newImage, './temp.bmp', { quality: 80 });
// 投屏
let image = new MediaDecoder().open('file://./temp.bmp');
if (image == undefined) {
    console.error('Can not open image file!');
    return;}
image.destVideoFormat({width: 240, height: 240, fps: 1, pixelFormat: MediaDecoder.PIX_FMT_RGB24, noDrop: false, disable: false});
image.destAudioFormat({disable: true});
image.previewFormat({enable: true, fb: 0, fps: 25});
let quited = false;
 image.on('video', (video) => {
          console.log('get video frame');
          // do something
  });
 image.on('eof', () => {
          quited = true;
  });
 image.start();
 while (!quited) {
          iosched.poll(); 
          // Event poll.
 }
 image.close();
  • 在不同的场景下我们可以利用 Display 模块进行不同的业务开发,投屏仅是其中一部分的用途,只要需求有关于获取显示设备的信息,都可以考虑使用 Display 模块。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

╰つ栺尖篴夢ゞ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值