`
mmdev
  • 浏览: 13148964 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

在windows mobile上必硬(bing)

阅读更多

在windows mobile上必硬(bing)

Freesc Huang

http://fox23.cnblogs.com

摘要:前一阵子,bing一直是很火的话题, 其市场占有率最高日一度超过18%,不仅因为微软强大的宣传攻势,也有"AV门"("必硬"的由来???)等因素的影响. 尽管对其搜索质量褒贬不一, bing提供的门类越发丰富的bing API还是值得期待的。如果你对bing API还没有概念,建议先阅读马宁童鞋的此文。本文将演示如何在移动设备使用bing API 2.x打造一个简易的新闻搜索。

一. bing的移动版本

bing的移动版本已经上线。你可以在手机浏览器地址栏输入m.bing.com访问其web版本:

你也可以下载bing for windows mobile客户端,通过http://mobile.search.live.com/client/download_manual.aspx

其效果如下图所示:

不过目前大多数服务只在美国,英国,日本等处开放,中文版本的还需等待。

二. 在Windows Mobile 应用中使用bing API

在一切开始之前,首先你得去申请一个AppID(http://www.bing.com/developers/createapp.aspx),并妥善保存。bing目前已经提供了众多门类的API服务(SourceTypes),包括网页,广告,图片,视频,新闻,电话薄,翻译,拼写检查等等。每一个门类都是一个相对独立的垂直搜索。你可以在应用程序中利用这些SourceTypes中的一个或者一些来构造一个自定义的搜索相关应用。

这里我希望编写一个简单的新闻搜索,其基本功能如下:

1.每次返回查询的前10条记录

2.给出相关搜索

3.可以查看搜索结果的发布时间和新闻选段等信息。

其界面主要由一个搜索框(tbSearchString),一个用来显示相关查询的ComboBox(cbRelated),一个用来显示结果的ListView(lvResult)和两个Softkey Button组成,如图所示:

ok, 接下来我们先添加一个对bing Web Service的引用, 服务URL为:http://api.search.live.net/search.wsdl

在Search按钮按下时,执行以下代码:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->//清理listview和combBox
listView1.Items.Clear();
listView1.Tag
=null;
cbRelated.Items.Clear();

using(LiveSearchServiceservice=newLiveSearchService())
{
//BuildRequest用来配置我们的查询请求.别急,马上会提到
SearchRequestrequest=BuildRequest();
SearchResponseresponse
=service.Search(request);

//DisplayResponse用来组织显示查询结果
DisplayResponse(response);
}

BuildRequest定义如下:

BuildRequest
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->privateSearchRequestBuildRequest()
{
SearchRequestsearchReq
=newSearchRequest();

//注意这里AppId请自行修改
searchReq.AppId=Properties.Resources.AppId;
searchReq.Query
=tbSearchString.Text;

//sourcetype决定了本次查询的类型
searchReq.Sources=newSourceType[]{SourceType.News,SourceType.RelatedSearch};
searchReq.Market
="en-US";

//配置新闻的数目,排序方式等
searchReq.News=newNewsRequest();
searchReq.News.Count
=10;
searchReq.News.CountSpecified
=true;
searchReq.News.SortBy
=NewsSortOption.Relevance;
searchReq.News.SortBySpecified
=true;

returnsearchReq;
}

接下来,为了方便安全地按照我们的需要保存查询结果,我们添加一个类MyNewsResult:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->publicclassMyNewsResult
{
publicstringDate{get;set;}//日期
publicstringTitle{get;set;}//标题
publicstringSnippet{get;set;}//新闻选段
}

然后,我们来关注一下DisplayResponse函数:

DisplayResponse
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->privatevoidDisplayResponse(SearchResponseresponse)
{
if(response.News!=null&&
response.News.Results
!=null&&
response.News.Results.Length
>0)
{
//提取我们需要的信息,以MyNewsResult的形式存放每条结果
varresults=frombingResultsinresponse.News.Results
select
newMyNewsResult(){Date=bingResults.Date,
Title
=bingResults.Title,
Snippet
=bingResults.Snippet}
;

//将结果保存到listview的tag中以便继续使用
lvResult.Tag=results.ToArray();

//将相关新闻查询保存至ComboBox
if(response.News.RelatedSearches!=null&&
response.News.RelatedSearches.Length
>0)
{
foreach(varrsinresponse.News.RelatedSearches)
{
cbRelated.Items.Add(rs.Title);
}

}

//将我们需要的结果标题添加到ListView
foreach(varrin(MyNewsResult[])lvResult.Tag)
{
lvResult.Items.Add(
newListViewItem(r.Title.ToString()));
}

}

}

最后,我希望在选中listView中的某一项的时候能够显示该新闻的日期和新闻选段。于是在lvResult的ItemActivate事件处理函数中我们添加如下代码:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->MyNewsResult[]nr=(MyNewsResult[])lvResult.Tag;
if(nr!=null)
{
MessageBox.Show(nr[lvResult.SelectedIndices[
0]].Snippet,
nr[lvResult.SelectedIndices[
0]].Date);
}

到此,主要的工作我们已经完成了(完整的代码文章末尾有下载)。不妨来看看运行效果:

相关搜索:

完整的代码 点击此处下载

最后出个练习题给有兴趣的朋友:

如何利用bing打造一个基于GPS的垂直搜索?

(提示1:SearchRequest有经纬度属性)

(提示2:可以参考bing map sdkhttp://msdn.microsoft.com/en-us/library/dd877180.aspx

(提示3:我没有现成的代码,要靠各位自己)

去试试吧;-)

分享到:
评论

相关推荐

    Windows Mobile上的服务程序

    在Windows Mobile平台上,服务程序是操作系统的核心组成部分,它们在系统启动时自动运行,提供后台支持,无需用户直接交互。服务程序在Windows Mobile上的工作原理和桌面版Windows有所不同,但核心概念相似,即通过...

    windows mobile 软件my mobile

    本文将深入探讨这款软件的特性、用途及其在Windows Mobile平台上的应用。 "My Mobile"是一款专为Windows Mobile设备设计的软件,它的核心功能是帮助用户管理和优化他们的移动设备。此应用旨在提升设备的效率,增强...

    Windows Mobile设备中心(64位)

    这种同步方式不仅可以备份手机数据,也可以在电脑上编辑内容后更新到手机,实现双端信息的一致性。 其次,共享网络功能允许Windows Mobile手机作为移动热点,为电脑提供互联网接入。当用户的手机支持数据连接但电脑...

    Windows mobile 6.5常用软件

    在Windows Mobile 6.5操作系统中,用户可以找到一系列实用的软件来提升设备的使用体验。这个压缩包包含了几个常见的应用程序,旨在帮助用户更高效地管理和利用他们的Windows Mobile设备。 首先,"任务管理1.exe"和...

    Windows Mobile 6.5 for iPAQ 114

    尽管现在Windows Mobile已被新的操作系统如Windows Phone和Android取代,但Windows Mobile 6.5在当时的影响力不容忽视,它为移动设备的操作系统设定了标准,并且在iPAQ 114这样的设备上展现了其强大的生命力。

    Windows Mobile windows7设备中心下载

    众所周知,在windows7操作系统中已经不需要安装active sync 手机同步软件,那么我想在win7系统中手机同步pc机信息,该如何操作呢?清您下载windows mobile center for windows7(vista也是如此)软件,然后将手机与电脑连接...

    windows mobile 6 里的QR条形码(源程序)

    在Windows Mobile 6平台上开发QR条形码应用是一项常见的任务,尤其对于那些希望在移动设备上集成快速数据传输功能的开发者来说。QR(Quick Response)条形码是一种二维条形码,它能存储比传统一维条形码更多且更复杂...

    windows mobile 6.0 基于WebService方式与PC Server通讯的demo

    在本文中,我们将深入探讨如何在Windows Mobile 6.0平台上使用WebService技术实现与个人计算机(PC)服务器的通信。Windows Mobile 6.0是微软为掌上设备开发的一个操作系统,它提供了丰富的功能和API,使得移动设备...

    Windows Mobile开发Windows Mobile开发Windows Mobile开发Windows Mobile开发

    Windows Mobile开发是一个涵盖广泛的主题,主要涉及在微软的Windows Mobile操作系统上构建移动应用程序的过程。Windows Mobile曾经是智能手机和平板电脑的主流平台之一,为开发者提供了丰富的API和工具来创建功能...

    Windows Mobile 经典源码

    Windows Mobile是一款由微软公司开发的移动操作系统,它曾经在智能手机领域占据重要地位,为开发者提供了丰富的平台来构建移动应用程序。本资料集中的"WindowsMobile5 金典源码"是研究Windows Mobile系统内核、应用...

    Windows Mobile开发实验

    - 在微软官网下载ActiveSync 4.0,并在PC机上完成安装。 - 安装完成后,任务栏会出现ActiveSync的图标。 2. **连接Smartphone与PC** - 使用设备附带的数据线将Smartphone与PC连接。 - 连接后,ActiveSync会自动...

    windows mobile6.1主题

    这款系统在2009年发布,是Windows Mobile 6系列的一部分,它在用户界面和功能上进行了许多改进,以提供更好的用户体验。Windows Mobile 6.1的主题系统是其个性化设置的关键部分,允许用户自定义设备的外观和感觉,...

    创建能在各式设备上运行的Windows Mobile应用程序(Code)

    本主题将深入探讨如何创建能在各种设备上运行的Windows Mobile应用,并通过实际的代码示例提供指导。 首先,我们需要理解Windows Mobile操作系统。Windows Mobile是微软为便携式设备如智能手机和平板电脑设计的操作...

    Windows Mobile编程起步

    2. **Windows Mobile 5.0 Smartphone SDK**:包含Windows Mobile 5.0操作系统的所有开发工具和文档,是必不可少的开发包,可从微软官方网站免费下载。 3. **ActiveSync 4.1**:用于同步PC与Windows Mobile设备的数据...

    PockePc QQ例子 windows mobile

    为了满足用户在移动设备上进行即时通讯的需求,开发人员设计出了适用于Windows Mobile系统的Pocket PC版QQ。这个应用为用户带来了与桌面版QQ类似的体验,使得在小巧的Pocket PC上也能轻松实现社交互动。 首先,我们...

    WindowsMobile5.0三十几个经典手机软件开发源码WindowsMobile5.0

    首先,Windows Mobile 5.0在技术上是对前一版本的重大升级,引入了诸多新特性和改进。它支持.NET Compact Framework 2.0,这是专门为嵌入式设备设计的.NET框架,让开发者能够利用C#、VB.NET或C++等.NET语言编写应用...

Global site tag (gtag.js) - Google Analytics