Click here to Skip to main content
Click here to Skip to main content

Tagged as

Hacking the WP7 Camera (The basics)

, 28 Jan 2011
Rate this:
Please Sign up or sign in to vote.
Before you start, you need to get the Microsoft.Phone.Media.Extended.dll and GAC it. For more information on this, read this and this!Let’s startCreate a new Windows Phone application, add the Microsoft.Phone.Media.Extended.dll reference and add the ID_CAP_CAMERA capability to the WMAppManifes

Before you start, you need to get the Microsoft.Phone.Media.Extended.dll and GAC it. For more information on this, read this and this!

Let’s Start

Create a new Windows Phone application, add the Microsoft.Phone.Media.Extended.dll reference and add the ID_CAP_CAMERA capability to the WMAppManifest.xml.

<?xml version="1.0" encoding="utf-8"?>

<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" 
    AppPlatformVersion="7.0">
  <App xmlns="" ProductID="{56a0189a-5739-410b-a400-d70214739c88}" 
      Title="WindowsPhoneApplication1" RuntimeType="Silverlight" 
      Version="1.0.0.0" Genre="apps.normal"  
      Author="WindowsPhoneApplication1 author" Description="Sample description" 
      Publisher="WindowsPhoneApplication1">
    <IconPath IsRelative="true" 
        IsResource="false">ApplicationIcon.png</IconPath>
    <Capabilities>
      <Capability Name="ID_CAP_CAMERA" />
      <Capability Name="ID_CAP_GAMERSERVICES"/>
      <Capability Name="ID_CAP_IDENTITY_DEVICE"/>
      <Capability Name="ID_CAP_IDENTITY_USER"/>
      <Capability Name="ID_CAP_LOCATION"/>
      <Capability Name="ID_CAP_MEDIALIB"/>
      <Capability Name="ID_CAP_MICROPHONE"/>
      <Capability Name="ID_CAP_NETWORKING"/>
      <Capability Name="ID_CAP_PHONEDIALER"/>
      <Capability Name="ID_CAP_PUSH_NOTIFICATION"/>
      <Capability Name="ID_CAP_SENSORS"/>
      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
    </Capabilities>
    <Tasks>
      <DefaultTask  Name ="_default" NavigationPage="MainPage.xaml"/>
    </Tasks>
    <Tokens>
      <PrimaryToken TokenID="WindowsPhoneApplication1Token" TaskName="_default">
        <TemplateType5>
          <BackgroundImageURI IsRelative="true" 
              IsResource="false">Background.png</BackgroundImageURI>
          <Count>0</Count>
          <Title>WindowsPhoneApplication1</Title>
        </TemplateType5>
      </PrimaryToken>
    </Tokens>
  </App>
</Deployment>

In our main window, we need to add a CameraVisualizer

<phone:PhoneApplicationPage 
    x:Class="WindowsPhoneApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:media="clr-namespace:Microsoft.Phone;assembly=Microsoft.Phone.Media.Extended"
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">

    <Grid x:Name="LayoutRoot" Background="Transparent">
        <media:CameraVisualizer x:Name="cameraVisualizer" />
    </Grid>
    
</phone:PhoneApplicationPage>

This is used to show the actual images captured from the camera. Next, setup the camera

VideoCamera camera = new VideoCamera();
cameraVisualizer.SetSource(camera);

And that is it!

NOTE: Do not run this in the emulator... It will crash!!!

 Is their any practical uses for this? Sure, Kevin Marshall (from Clarity consulting) has a excellent demo of this being used for reading barcodes and for augmented reality!

This is a MUST READ article....

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

rudigrobler

South Africa South Africa
No Biography provided

Comments and Discussions

 
-- There are no messages in this forum --
| Advertise | Privacy | Mobile
Web04 | 2.8.140827.1 | Last Updated 28 Jan 2011
Article Copyright 2011 by rudigrobler
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid