一直想開發一個Wp8的手電筒程序,看了好多別人開發的基本上有以下問題:
1、鎖屏閃光燈關閉了
2、閃光燈不停的閃爍。
我就想開發一個鎖屏也能用的手電筒,發現找資料那是相當的困難。找到的代碼基本都不能令人滿意,有的需要使用照相機,有的需要使用錄像機,感覺都不是很爽。
最后經過摸索,Ui界面只要一個按鈕,就可以實現手電筒的開啟和關閉,而且是常亮的,廢話不多說了,上代碼:
Ui界面:
一個按鈕就Ok了:
<Button Name="btnFlash" Content="閃光燈" Height="200" Click="btnFlash_Click_1"/>
后台頁面代碼:
private bool Flag = false;//閃關燈是否開啟
AudioVideoCaptureDevice avDevice = null;
// 構造函數
public MainPage()
{
InitializeComponent();
}
private async void btnFlash_Click_1(object sender, RoutedEventArgs e)//一定不要忘記加async關鍵字(因為下面的代碼里面用到了await關鍵字)
{
if (Flag)
{
//閃光燈已開啟 則釋放資源(關閉閃光燈)
if (avDevice != null)
{
avDevice.Dispose();
Flag = false;
}
}
else
{
var sensorLocation = CameraSensorLocation.Back;
avDevice = await AudioVideoCaptureDevice.OpenAsync(sensorLocation, AudioVideoCaptureDevice.GetAvailableCaptureResolutions(sensorLocation).First());
//打開閃關燈
var supportedCameraModes = AudioVideoCaptureDevice
.GetSupportedPropertyValues(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode);
if (supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.On))
{
avDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On);
Flag = true;
}
}
}
還有一個特別需要注意的地方:
一定不要忘記在WMAppManifest.xml里面加上這兩個功能:
<Capability Name="ID_CAP_ISV_CAMERA" />
<Capability Name="ID_CAP_MICROPHONE" />
至此一個完美的手電筒就完成了,當然,你可以把界面做得美觀些,比如說做成騰訊安全管家里面的手電筒一樣。
轉載請注明出處。
