In this tutorial we are going to see how to use the Save Ringtone task with windows phone application development. We have seen similar kind of tasks in our previous tutorials like Save Email Address task, Save Phone Number task etc. Similar to those task this will also be used in day to day life of saving new ringtones to the storage that can be used when ever we are in need to change the ringtone on some specified task. This task basically enables the application user to launch the ringtone application and save a ring tone to the existing list. [more]
As per the Microsoft recommendations (MSDN Documentation), each and every music file which is used to be assigned for the ringtone much meet the following specification as shown below.
- Ringtone files must be of type MP3 or WMA.
- Ringtone files must be less than 40 seconds in length.
- Ringtone files must not have digital rights management (DRM) protection.
- Ringtone files must be less than 1 MB in size.
Let us see the steps on how to achieve this task in real time for a Windows phone application.
Open Visual Studio 2010 IDE and create a new Silverlight for Windows Phone project with a valid project name as shown in the screen below. Once the project is created add some controls which are used to trigger the Save Ringtone Task as shown in the screen below.
Now drag and drop few controls to the screen which is used to trigger event that launches the Save Ringtone chooser Task. Once we designed the screen with the controls we can see the screen looks like below. We have added a button control to trigger the event and text block control to show the end result after the task is completed as shown in the screen below.
XAML Code:
<phone:PhoneApplicationPage
x:Class=”F5debugHowto28.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=”F5debug How to Series” Style=”{StaticResource PhoneTextNormalStyle}”/>
<TextBlock x:Name=”PageTitle” Text=”Save Ringtone” 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=”Save Ringtone” Height=”72″ HorizontalAlignment=”Left” Margin=”9,6,0,0″ Name=”button1″ VerticalAlignment=”Top” Width=”441″ />
<TextBlock Height=”277″ HorizontalAlignment=”Left” TextWrapping=”Wrap” Margin=”29,108,0,0″ Name=”textBlock1″ Text=”" VerticalAlignment=”Top” Width=”407″ />
</Grid>
</Grid>
PhoneApplicationPage>
Now add a ringtone to the root folder of the application, here basically we have 2 options one is we can store the ringtone directly to the Isolated storage so that it will not be packed with the .XAP file else if we use it directly from the application the audio file will be packaged with the .XAP file which basically will increase the size and as well it will be not in the isolated storage. If we are going to use the Isolated Storage we need to isostore: with the audio file name and if its directly from the root then we need to use as appdata:
Now we need to write our code in the button click event to trigger the Save Ringtone task, which basically allows the user to save the ring tone and also provides some additional options to assign the ringtone for default ringing or we can use it for future as well. To do that just go to the code behind and first add the USING handler code on top with the existing using statements as shown in the code below.
using Microsoft.Phone.Tasks;
Next is to add the below code to the button click event which basically creates an instance of the Save Ringtone task which saves the audio file which we are going to include in the project. Also we have some properties which can be used to set the ringtone display name as shown in the code below.
Code:
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;
namespace F5debugHowto28
{
public partial class MainPage : PhoneApplicationPage
{
SaveRingtoneTask srtTask;
// Constructor
public MainPage()
{
InitializeComponent();
srtTask = new SaveRingtoneTask();
srtTask.Completed += new EventHandler<TaskEventArgs>(srtTask_Completed);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
srtTask.Source = new Uri(“appdata:/Ringtone1.mp3″);
srtTask.DisplayName = “F5debug Ringtone”;
srtTask.Show();
}
void srtTask_Completed(object sender, TaskEventArgs e)
{
if (e.TaskResult == TaskResult.OK)
{
textBlock1.Text = “Ring Tone Saved Successfully!!!”;
}
else if (e.TaskResult == TaskResult.Cancel)
{
textBlock1.Text = “User Cancellation!!!”;
}
else
{
textBlock1.Text = “Ring Tone couldnot be saved!!!”;
}
}
}
}
Now we are done with our code, just run the application by pressing F5 directly from the keyboard or we can use the Build and execute the project option from the tool bar to run the application. Once the Build is successful we can see the Windows Phone emulator with the application and the expected outputs as shown in the screens below.
Output Screens:
So in this tutorial we have seen how to use the Save ringtone task which saves the selected ringtone to the Ringtone list and as well provide the configuration to default the ring tone which we added through the application. That’s it from this tutorial on Windows Phone see you all in the next tutorial soon. Mean while Happy Programming!!!