WP7 空闲检测 当手机处理锁屏状态时 如何让程序继续运行 如 在锁屏状态下继续录音。

我们都知道,当手机锁屏后,我们的app 会自动进行休眠或是说墓碑状态。也就是说app已经空闲,这样最大的好处是省电。关于些可以在MSDN上找到非常详细的说明:http://msdn.microsoft.com/zh-cn/library/ff941090(v=vs.92).aspx

我这里要描述的是如何使用它,并且符合Microsoft Marketplace的认证要求。

1,首先 我们要定义两个变量,一个用于记录用户是否第一次使用你开发的App, 另一个是记录当前的用户是否启用空闲了机制。

2,我以MSDN上的录音示例为例子,进行修改。请参考:https://skydrive.live.com/redir.aspx?cid=e9cdb6cae9924e0a&resid=E9CDB6CAE9924E0A!451&parid=E9CDB6CAE9924E0A!448  

 

 IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;


if (!settings.Contains("firstTime"))
{

MessageBoxResult mbr = MessageBox.Show("您是第一次使用本App,是否开启锁屏录间", "Welcome", MessageBoxButton.OKCancel);
//handle result
if (mbr == MessageBoxResult.OK)
{
settings["allowIdleRecord"] = true;
}
else
{
settings["allowIdleRecord"] = false;
}

settings["firstTime"] = false;

settings.Save();
}

if (bool.Parse(settings["allowIdleRecord"].ToString()))
{
PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;
}
else
{
PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Enabled;
}



posted @ 2012-02-17 17:37 Stephen Ding 阅读(189) 评论(0) 编辑

WP7 Bing Map 显示中文地图

关于如何实现在WP7显示中文言语的地图:目前Bing Map还没有开放中文的地图,但我们可以把Bing Map控件的地图的图片源换成Google Map的,但请注意,如果您是商业用途请慎用。实现的原理就是重载Microsoft.Phone.Controls.Maps.GetUri方法。

 

这里有一个例子,您可以下载:https://skydrive.live.com/redir.aspx?cid=e9cdb6cae9924e0a&resid=E9CDB6CAE9924E0A!438&parid=E9CDB6CAE9924E0A!437

posted @ 2012-02-16 14:52 Stephen Ding 阅读(415) 评论(4) 编辑

WP7 ContextMenu 缩短出现时间或是延迟时间

我们在使用ContextMenu控件时,有时需要它快点出现。

首先ContextMenu没有提供设置如delay延迟多长时间出现的属性。但根据我的理解,ContextMenu并不是VS自带的控件,是Silverlight for Windows Phone Toolkit中的一个控件,它的源代码都是开放的。如果要实现短时间内弹出ContextMenu的话,必定需要修改源代码。这有一个例子可以参考:WP7 Context Menu Hidden Delay Found。注意如果delay过短的话,那就跟一般的点击效果一样,这违背了ContextMenu设计的初衷。

posted @ 2012-02-16 14:27 Stephen Ding 阅读(715) 评论(0) 编辑

WP7 如何禁用WebBrowser 控件缩放和左右移动

我认为有两种方法可以实现。

1, WebBrowser 是基于IE 9的,所以WebBrowser 也是支持最新的HTML5标准。然而在HTML中有许多控件是通过Browser的 pan 和zoom等手持行为起作用的,您可以设置HTML中的 viewport metadata 元素来实现。如:将下面的HTML代码加入到您的HTML文件头上。

<meta name="viewport" content="user-scalable=no" />

 

2, WebBroswer控件的组成是一棵树型结构如下图:

 

\-WebBrowser
  \-Border
    \-Border
      \-PanZoomContainer
        \-Grid
          \-Border (*)
            \-ContentPresenter
              \-TileHost

 

其中 TileHost 就是原始的IE9组件,TileHost 不处理所有的manipulation相关的事件,而是由PanZoomContainer来处理,将这些事件转换成手持,然后将结果传输到TileHost。

换句话说我们可以中断相关的manipulationg事件传输到PanZoomContainer。当这些事件还未bubble up到PanZoomContainer时,当这些事件设置为已经处理过。

这个方法的关键步骤有2步:

1, 需要从WebBroswer组件树中找到Border控件。请参考:http://www.scottlogic.co.uk/blog/colin/2010/03/linq-to-visual-tree/

2, 处理manipulation相关的事件,并设置该事件已经处理过 e.Handled = true;。

 

例如:

using LinqToVisualTree;

public class WebBrowserHelper

    {

        public  WebBrowser _browser;

 

        /// <summary>

        /// Gets or sets whether to suppress the scrolling of

        /// the WebBrowser control;

        /// </summary>

        public bool ScrollDisabled { get; set; }

 

        public WebBrowserHelper(WebBrowser browser)

        {

            _browser = browser;

            browser.Loaded += new RoutedEventHandler(browser_Loaded);

        }

 

        private void browser_Loaded(object sender, RoutedEventArgs e)

        {

            var border = _browser.Descendants<Border>().Last() as Border;

 

            border.ManipulationDelta += Border_ManipulationDelta;

            border.ManipulationCompleted += Border_ManipulationCompleted;

        }

 

        private void Border_ManipulationCompleted(object sender,

                                                  ManipulationCompletedEventArgs e)

        {

            // suppress zoom

            if (e.FinalVelocities.ExpansionVelocity.X != 0.0 ||

                e.FinalVelocities.ExpansionVelocity.Y != 0.0)

                e.Handled = true;

        }

 

        private void Border_ManipulationDelta(object sender,

                                              ManipulationDeltaEventArgs e)

        {

            // suppress zoom

            if (e.DeltaManipulation.Scale.X != 0.0 ||

                e.DeltaManipulation.Scale.Y != 0.0)

                e.Handled = true;

 

            // optionally suppress scrolling

            if (ScrollDisabled)

            {

                if (e.DeltaManipulation.Translation.X != 0.0 ||

                  e.DeltaManipulation.Translation.Y != 0.0)

                    e.Handled = true;

            }

        }

    }

 

posted @ 2012-02-16 14:20 Stephen Ding 阅读(292) 评论(6) 编辑

HTC WP7 发送手机彩信时提示“Can't send”

针对这个问题,我们可以通过如下方式来解决。

1,请确保Settings -> mobile network -> Data connection  已经打开。 

2,Marketplace -> HTC Apps ->下载 Connection Setup -> 设置好国家和网络->重启手机。

posted @ 2011-12-18 12:12 Stephen Ding 阅读(39) 评论(0) 编辑

希望与大家分享新的技术

希望与大家分享新的技术 :)

posted @ 2011-12-17 23:19 Stephen Ding 阅读(9) 评论(0) 编辑
仅列出标题  

公告

统计