Connection Settings in Windows Phone 7 via WCF Service


Today, in this article let's play around with connection settings concept in windows phone whereby communicating a message from WCF Service.

Question Arises: What is Connection Settings?

The Enables the user to pick up the network connection settings as per their requirements and performs necessary operations to handle networks.

So Let's get it Started off!!!

The Complete Code of IService1.cs looks like this:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WCF_Connection_Task
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        string Airplane();

        [OperationContract]
        string Bluetooth();

        [OperationContract]
        string WiFi();

        [OperationContract]
        string Cellular();
    }
}

The Complete Code of Service1.svc.cs looks like this:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WCF_Connection_Task
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
    public class Service1 : IService1
    {

        public string Airplane()
        {
            return "Hurray...!!! WCF Service for Airplane Mode";
        }

        public string Bluetooth()
        {
            return "Hurray...!!! WCF Service for Bluetooth Mode";
        }

        public string WiFi()
        {
            return "Hurray...!!! WCF Service for WiFi Mode";
        }

        public string Cellular()
        {
            return "Hurray...!!! WCF Service for Cellular Mode";
        }
    }
}

The Complete Code of Web.Config looks like this:

<?xml version="1.0"?>
<configuration>

  <system.web>
    <
compilation debug="true" targetFramework="4.0" />
  </system.web>
  <
system.serviceModel>
    <
behaviors>
      <
serviceBehaviors>
        <
behavior>
          <!--
To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <
serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception
information
-->
          <
serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </
serviceBehaviors>
    </
behaviors>
    <
serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <
system.webServer>
    <
modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

The Complete Code of MainPage.xaml looks like this:

<phone:PhoneApplicationPage
    x:Class="Connection_Setting_Task.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"
    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">
 
    <!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text="Vijay's Connection Setting Application" FontFamily="Verdana" FontSize="22" Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" Text="Windows 7 Phone" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>

        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Button Content="Airplane Mode" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="128,42,0,0" Name="button1" VerticalAlignment="Top" Width="229" Click="button1_Click" />
            <Button Content="Bluetooth Mode" FontFamily="Verdana" FontSize="22" Height="68" HorizontalAlignment="Left" Margin="128,120,0,0" Name="button2" VerticalAlignment="Top" Width="229" Click="button2_Click" />
            <Button Content="Cellular Mode" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="128,194,0,0" Name="button3" VerticalAlignment="Top" Width="229" Click="button3_Click" />
            <Button Content="WiFi Mode" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="128,272,0,0" Name="button4" VerticalAlignment="Top" Width="229" Click="button4_Click" />
        </Grid>
    </Grid>

    <!--Sample code showing usage of ApplicationBar-->
    <!--<phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>
            <shell:ApplicationBar.MenuItems>
                <shell:ApplicationBarMenuItem Text="MenuItem 1"/>
                <shell:ApplicationBarMenuItem Text="MenuItem 2"/>
            </shell:ApplicationBar.MenuItems>
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>-->

</phone:PhoneApplicationPage>

The Complete Code of MainPage.xaml.cs looks like this:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using Connection_Setting_Task.ServiceReference1;

namespace Connection_Setting_Task
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }
        static void AirplaneCall(object sender, AirplaneCompletedEventArgs e)
        {
 
            MessageBox.Show(e.Result);
            ConnectionSettingsTask objConnectionTask = new ConnectionSettingsTask();
            objConnectionTask.ConnectionSettingsType = ConnectionSettingsType.AirplaneMode;
            objConnectionTask.Show();
        }
        static void BluetoothCall(object sender, BluetoothCompletedEventArgs e)
        {
 
            MessageBox.Show(e.Result);
            ConnectionSettingsTask objConnectionTask = new ConnectionSettingsTask();
            objConnectionTask.ConnectionSettingsType = ConnectionSettingsType.Bluetooth;
            objConnectionTask.Show();
        }
        static void CellularCall(object sender, CellularCompletedEventArgs e)
        {

            MessageBox.Show(e.Result);
            ConnectionSettingsTask objConnectionTask = new ConnectionSettingsTask();
            objConnectionTask.ConnectionSettingsType = ConnectionSettingsType.Cellular;
            objConnectionTask.Show();
        }
        static void WIFiCall(object sender, WiFiCompletedEventArgs e)
        { 
            MessageBox.Show(e.Result);
            ConnectionSettingsTask objConnectionTask = new ConnectionSettingsTask();
            objConnectionTask.ConnectionSettingsType = ConnectionSettingsType.WiFi;
            objConnectionTask.Show();
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Service1Client objClient = new Service1Client();
            objClient.AirplaneCompleted += new EventHandler<AirplaneCompletedEventArgs>(AirplaneCall);
            objClient.AirplaneAsync();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            Service1Client objClient = new Service1Client();
            objClient.BluetoothCompleted += new EventHandler<BluetoothCompletedEventArgs>(BluetoothCall);
            objClient.BluetoothAsync();
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            Service1Client objClient = new Service1Client();
            objClient.CellularCompleted += new EventHandler<CellularCompletedEventArgs>(CellularCall);
            objClient.CellularAsync();
        }

        private void button4_Click(object sender, RoutedEventArgs e)
        {
            Service1Client objClient = new Service1Client();
            objClient.WiFiCompleted += new EventHandler<WiFiCompletedEventArgs>(WIFiCall);
            objClient.WiFiAsync();
        }
    }
}

The Output of the Application looks like this:

ConnectionSetting0.png

The Airplane Mode Output Application looks like this:

ConnectionSetting1.png

ConnectionSetting2.png

I hope this article is useful for you.


Similar Articles
MVC Corporation
MVC Corporation is consulting and IT services based company.