积极答复者
关于phone7的闪光灯控制

问题
-
刚刚入门phone7学习,想试着开发一个手机电筒,但是遇到一点问题,希望坛友们不吝赐教
在xaml中画了一个butCol按钮,双击它进入butCol_Click()方法..
语句如下
using System.Windows; using Microsoft.Devices; using Microsoft.Phone.Controls; namespace light { public partial class MainPage : PhoneApplicationPage { public MainPage() { InitializeComponent(); } private void butCol_Click(object sender, RoutedEventArgs e) { PhotoCamera cam = new PhotoCamera(); if (string.Equals(butCol.Content, "开灯")) { cam.FlashMode = FlashMode.On; butCol.Content = "关灯"; } else { cam.FlashMode = FlashMode.Off; butCol.Content = "开灯"; } } } }
但是在模拟器中打开,单击按钮,程序就退出了.应该是代码有问题吧.PhotoCamera cam = new PhotoCamera();
这段代码应该在哪里实例化呢?
非常感谢
答案
-
你好
或者你可以嘗試一下我的Sample 看看是不是結果一樣 WP7MangoSample
https://skydrive.live.com/?cid=66398506b8d4b8bf&sc=documents&uc=1&nl=1&id=66398506B8D4B8BF%21176#
我在電腦/手機上測過.. 沒大問題出現
如果你想令到 閃光燈亮起來你可以嘗試 用cam.Focus(). 這個動作..可惜只會亮800 MS的
要使用FLASHLIGHT 做小電筒..看來還未可以直接用API做到
Please correct me if my concept is wrong
Chi- 已建议为答案 XuesongGaoModerator 2011年7月7日 5:16
- 已标记为答案 天使坠Moderator 2011年7月11日 5:13
-
你好
或者你可以嘗試 COPY 這個MAINPAGE.XAML 和 CSHARP 檔便可以了..
E.G. CREATE 一個新PROJECT 之後加入這2個檔案試試看
我的開發機是 SAMSUNG OMINA 7
Chi- 已标记为答案 天使坠Moderator 2011年7月11日 5:13
全部回复
-
你好
看來是沒有完全初始化 這個 PhotoCamera cam這個元件所以造成的
或者你可以參考以下這個Code [可以令到程式不會退出..但是我不懂怎樣可以做到把閃光燈做成小電筒這個動作]
你需要在你的XAML 上加入一個 Rectangle 在Rectangle入面 加入VIDEOBRUSH
E.G
<Rectangle Width="320" Height="240" HorizontalAlignment="Left" x:Name="viewfinderContainer"> <Rectangle.Fill> <VideoBrush x:Name="viewfinderBrush" /> </Rectangle.Fill> </Rectangle>
之後以下的Code 可以用來初始化這個 PhotoCamera的
E.G.
PhotoCamera cam = new PhotoCamera(); public MainPage() { InitializeComponent(); cam.Initialized += new EventHandler<Microsoft.Devices.CameraOperationCompletedEventArgs>(cam_Initialized); //Event is fired when the capture sequence is complete cam.CaptureCompleted += new EventHandler<CameraOperationCompletedEventArgs>(cam_CaptureCompleted); //Event is fired when the capture sequence is complete and an image is available. cam.CaptureImageAvailable += new EventHandler<Microsoft.Devices.ContentReadyEventArgs>(cam_CaptureImageAvailable); //Event is fired when the capture sequence is complete and a thumbnail image is available. cam.CaptureThumbnailAvailable += new EventHandler<ContentReadyEventArgs>(cam_CaptureThumbnailAvailable); viewfinderBrush.SetSource(cam); } void cam_Initialized(object sender, Microsoft.Devices.CameraOperationCompletedEventArgs e) { } void cam_CaptureCompleted(object sender, CameraOperationCompletedEventArgs e) { } void cam_CaptureImageAvailable(object sender, Microsoft.Devices.ContentReadyEventArgs e) { } public void cam_CaptureThumbnailAvailable(object sender, ContentReadyEventArgs e) { }
之後加入你原有的Codeprivate void butCol_Click(object sender, RoutedEventArgs e) { // PhotoCamera cam = new PhotoCamera(); //這句不用了..因為之前已初始化了 if (string.Equals(butCol.Content, "开灯")) { cam.FlashMode = FlashMode.On; butCol.Content = "关灯"; } else { cam.FlashMode = FlashMode.Off; butCol.Content = "开灯"; } }
有關PhotoCamera的使用方法可Sample可以參考以下URL
http://msdn.microsoft.com/en-us/library/hh202956(v=vs.92).aspx#Y3300
Please correct me if my concept is wrong
Chi -
你好
或者你可以嘗試一下我的Sample 看看是不是結果一樣 WP7MangoSample
https://skydrive.live.com/?cid=66398506b8d4b8bf&sc=documents&uc=1&nl=1&id=66398506B8D4B8BF%21176#
我在電腦/手機上測過.. 沒大問題出現
如果你想令到 閃光燈亮起來你可以嘗試 用cam.Focus(). 這個動作..可惜只會亮800 MS的
要使用FLASHLIGHT 做小電筒..看來還未可以直接用API做到
Please correct me if my concept is wrong
Chi- 已建议为答案 XuesongGaoModerator 2011年7月7日 5:16
- 已标记为答案 天使坠Moderator 2011年7月11日 5:13
-
你好
或者你可以嘗試 COPY 這個MAINPAGE.XAML 和 CSHARP 檔便可以了..
E.G. CREATE 一個新PROJECT 之後加入這2個檔案試試看
我的開發機是 SAMSUNG OMINA 7
Chi- 已标记为答案 天使坠Moderator 2011年7月11日 5:13