在我们的Scope PreviewWidget,我们可以利用audio PreviewWidget来播放我们的音乐。这对一些音乐的Scope来说,非常中要。在今天的练习中,我们来利用这个它来在我们的Scope中来试听我们的音乐。

首先我们来利用我们已经做好的Scope。我们可以下载我们先前做好的Scope:

https://github.com/liu-xiao-guo/scopetemplates

在我们的query.cpp中,我们来添加如下的项:

query.cpp

void Query::pushResult(sc::SearchReplyProxy const& reply,const string renderer, int i) {stringstream ss;ss << i;string str = ss.str();auto cat = reply->register_category( "id" + str, "Template " + str ,"", sc::CategoryRenderer(renderer) );sc::CategorisedResult r(cat);r.set_uri( URI.toStdString() );r.set_art( images_[0].toStdString() );r["subtitle"] = "Subtitle " + str;r.set_title("Title " + str);r["summary"] = "Summary: " + str;r["fulldesc"] = "fulldesc: " + str;r["mascot"] = icons_[0].toStdString();r["emblem"] = icons_[1].toStdString();r["background"] = background_.toStdString();r["overlay-color"] = "#FF0000";QString likes = QString("%1 %2").arg(qstr(u8"\u261d "), "100");QString views = QString("%1 %2").arg(qstr(u8"   \u261f "), "99");std::string both = qstr("%1 %2").arg(likes,views).toStdString();sc::VariantBuilder builder;builder.add_tuple({{"value", Variant(both)}});builder.add_tuple({{"value", Variant("")}});r["attributes"] = builder.end();r["musicSource"] = "http://qqmp3.djwma.com/mp3/魔音神据极品私货这锯子拉的耳膜都要碎了.mp3";if (!reply->push(r))return;
}

上面的“musicSource”是我们新添加的项。我们必须指出的是,“musicSource”不是我们标准的模版中的项,那么我们怎么在我们的Preview中利用这个项呢?

preview.cpp

void Preview::run(sc::PreviewReplyProxy const& reply) {// Support three different column layoutssc::ColumnLayout layout1col(1), layout2col(2), layout3col(3);// We define 3 different layouts, that will be used depending on the// device. The shell (view) will decide which layout fits best.// If, for instance, we are executing in a tablet probably the view will use// 2 or more columns.// Column layout definitions are optional.// However, we recommend that scopes define layouts for the best visual appearance.// Single column layoutlayout1col.add_column( { "image", "header", "summary", "tracks" });// Two column layoutlayout2col.add_column( { "image" });layout2col.add_column( { "header", "summary", "tracks" });// Three cokumn layoutlayout3col.add_column( { "image" });layout3col.add_column( { "header", "summary", "tracks" });layout3col.add_column( { });// Register the layouts we just createdreply->register_layout( { layout1col, layout2col, layout3col });// Define the header sectionsc::PreviewWidget header("header", "header");// It has title and a subtitle propertiesheader.add_attribute_mapping("title", "title");header.add_attribute_mapping("subtitle", "subtitle");// Define the image sectionsc::PreviewWidget image("image", "image");// It has a single source property, mapped to the result's art propertyimage.add_attribute_mapping("source", "art");// Define the summary sectionsc::PreviewWidget description("summary", "text");// It has a text property, mapped to the result's description propertydescription.add_attribute_mapping("text", "description");Result result = PreviewQueryBase::result();PreviewWidget listen("tracks", "audio");{VariantBuilder builder;builder.add_tuple({{"title", Variant("This is the song title")},{"source", Variant(result["musicSource"].get_string().c_str())}});listen.add_attribute_value("tracks", builder.end());}if ( result["musicSource"].get_string().length() != 0 ) {qDebug() << "it is not null";// Push each of the sectionsreply->push( { image, header, description, listen });} else {// Push each of the sectionsreply->push( { image, header, description });}

} 在这里,我们可以看到:

   Result result = PreviewQueryBase::result();PreviewWidget listen("tracks", "audio");{VariantBuilder builder;builder.add_tuple({{"title", Variant("This is the song title")},{"source", Variant(result["musicSource"].get_string().c_str())}});listen.add_attribute_value("tracks", builder.end());}if ( result["musicSource"].get_string().length() != 0 ) {qDebug() << "it is not null";// Push each of the sectionsreply->push( { image, header, description, listen });} else {// Push each of the sectionsreply->push( { image, header, description });}

我们可以通过“result()”的方法来得到result。我们同时创建了一个叫做listen的PreviewWidget。我们利用他来创建我们所需要的项。

运行我们的Scope:

  

我们可以点击上面的按钮来播放我们的音乐来试听!

整个项目的源码在: https://github.com/liu-xiao-guo/scopetemplates_audio.git

利用audio PreviewWidget在Scope中来播放音乐相关推荐

  1. android中服务播放音乐,为什么我们需要Android中的服务?音乐播放也可以通过后台线程完成...

    采访中有人问我这个问题.我不确定这是否是问这个问题的合适论坛,因为它不涉及任何代码,而是对android概念的理解. 问题是"当所有事情都可以通过Android中的后台线程完成时,为什么我们 ...

  2. Delphi中TMediaPlayer播放音乐出现no MCI device open的错误的解决方法

    最近用DELPHI的TMediaPlayer写了一个音乐控制软件,用到了TMediaPlayer控件,播放音乐时总是出现no MCI device open的错误.查了半天资料终于找到原因. 我原来是 ...

  3. linux中网页播放音乐,Linux_在Linux系统下播放网页中的背景音乐技巧,在Linux中的firefox浏览许多网页 - phpStudy...

    在Linux系统下播放网页中的背景音乐技巧 在Linux中的firefox浏览许多网页时,很多使用了基于WMP的背景音乐播放器,如部份baidu空间.但firefox默认不支持播放. 在LINUX的源 ...

  4. android中服务播放音乐,android中用Service播放音乐

    一般的Android应用程序的音乐可以分为背景音乐和点击各种控件时的音效,前者一般为比较大的音乐文件,后者一般为比较小的音乐.在Android中一般用MediaPlayer类处理比较大的音频文件,用S ...

  5. 如何在html中自动播放音乐,如何使音乐在打开页面时自动播放

    你好朋友, 给你一个自动播放的背景音乐代码: 第一步.进入新浪博客,输入"登录名""密码"和"验证码"后点击"登入". ...

  6. Android中MediaPlayer播放音乐时自动中断的解决办法

    今天尝试在一个有SurfaceView持续绘图的程序里加入背景音乐,遇到一个故障: 音乐播10几秒就中止了,此后再无声响. 尝试更换为其他mp3文件,无果. 尝试将播放操作由子线程转到主线程,依然不行 ...

  7. mt6735 [Audio Speech]如何在通话中播放音乐/通话背景音

    [DESCRIPTION] MT6735默认的架构下,通话过程中不能播放音乐,也没有实现通话背景音,如何实现? [SOLUTION] 1.修改AudioService.java,实现通话中播放音乐 p ...

  8. 如何在PowerPoint演示文稿中使用iTunes音乐

    One of PowerPoint's charms is its ability to play music during the presentation. Adding music to you ...

  9. Arduino红外遥控无源蜂鸣器播放音乐

    Arduino红外遥控无源蜂鸣器播放音乐/模拟电子琴 简介 关于频谱 实验材料 接线 实验代码 模拟电子琴 接线 代码 总结 原文链接:https://www.yourcee.com/newsinfo ...

最新文章

  1. 5G产业发展最新进展深度解析(144页PPT)
  2. ECMAScript5.1的运算符、类型转换总结
  3. javascript第三天(2)
  4. mysql的安装备份恢复_安装使用Percona XtraBackup来备份恢复MySQL的教程
  5. jdbc mysql user_tab_comments_MySQL学习(五)——使用JDBC完成用户表CRUD的操作
  6. Python基础项目实践之:面向对象方法实现模拟银行管理系统
  7. GitHub 下架 Youtube-dl 遭粉丝疯狂上传源码报复,开源者的权益谁来维护?
  8. 中国水稻大省创新大米销售模式 启动2019首场拍卖
  9. J1939广播DM1报文
  10. 软件测试全套教程,软件测试自学线路图
  11. 速腾(Robosense) M1激光雷达ip配置
  12. 搭建 Extmail企业邮件服务
  13. 看书和写书,简单而复杂的反思-读书分享会感悟
  14. CNtV电视直播解析PHP,电视直播
  15. PhotoShop中合并形状颜色会变化的问题
  16. PSAM 卡的应用 操作方法
  17. 国内洗地机品牌排行榜前十名有哪些?洗地机十大品牌排行榜介绍
  18. CSS实现立体字的效果
  19. Linux ALSA 之九:ALSA ASOC Codec Driver
  20. NOIp2016 题解

热门文章

  1. 众筹,帮创业者跨过“死亡之谷”
  2. 统计学原理 合理使用图表
  3. 作为计算机专业学生,最应该学习的课程前五位是什么?【知乎】
  4. windows生成文件MD5值
  5. python 12306登录 2019_python爬虫--模拟12306登录
  6. 机器学习——决策树算法
  7. 宏分析(李逵和李鬼)
  8. 小家电小功率AC220v转DC12v芯片
  9. 中国首台自主超级计算机,6亿元能打造出一台怎样的计算机?
  10. 基于javaweb的图书馆图书管理借阅书籍管理系统(java+ssm+jsp+html+mysql)