Cisco Telephony Manager Updates
The Cisco Call Control APIs have recently been updated with the latest release of the Add-on. If you have not updated your Add-on I suggest you do that before proceeding. With this update, we have made it much simplier to use these APIs by making the service a system service. If you are currently using the Call Control APIs there is a few changes that need to be made in order for your code to work in releases after 9.2.3 load.

Now to talk about the changes that have been put in place. The bulk of Cisco Telephony Manager has not changed. A huge portion of the methods will be used in the same way but instead of having a handler to get back the Cisco Telephony Manager when it connects, we can instead just call it. Below is a little snippet of code showing how to do just that.

1CiscoTelephonyManager ctm = (CiscoTelephonyManager)getSystemService(CiscoTelephonyManager.CISCO_TELEPHONY_MANAGER);
2CiscoTelephonyManagerDevice device = ctm.getCiscoTelephonyManagerDevice();

After this is done, you can immediately go into adding call listeners or any other method that you are trying to do on the device. If you want more examples of how this works, feel free to look at the samples that have been included in the Add-on.

Unfortunately, the old way of connecting to the Cisco Telephony Manager using the CiscoTelephonyManager.jar will no longer work in loads after 9.2.3 and this new way will not work in loads before 9.2.3. If for some reason you need it to work in both loads you have two choices. You can either bind to the ICCDevice or use the conversion jar included in the add-on. For more information on how to use the way of binding to the ICCDevice please take a look at the Developer Guide under the Telephony section. If you are wanting to use the conversion jar it is included in the Add-on in the extras folder with a document explaining how to use it.
Cisco Cius Add-on Version 1.0 Released!
With the release of the firmware load 9.2.3, there is a new version of the Add-on. The changes to the add-on are mostly around the Call Control APIs by making it simpler to use. Take a look at the newest blog post on the Call Control APIs for more information. Here is a link to the newest version of the add-on.
Content Providers
Content Providers give you an excellent way to store and retrieve data. It is primarily used so that multiple applications can access and change the same set of data. Today, I am briefly going to go over how we can keep track of the changes to the data within the Content Provider. There is two basic parts to this which is Content Provider and Content Observer. The Content Provider is what the application provides for you to use in order to provide access to the data. The Content Observer gives the application a way to be notified if the data within a specific Content Provider has been changed.

In order for this all to work, you need setup your Content Provider so that when calling a insert method or update method they notify the observers. For the insert method, you simply need to call notifyChange. For the update method, you need get the cursor being used to update the data and call setNotificationUri on that cursor. Both of these will take place right after the insert and update have happened.

Now if you would like to be notified of the changes on this data you will implement a Content Observer. In order to do this you simply have to construct a Content Observer with a given Handler. Once this Content Observer has been constructed you need to register it by calling registerContentObserver. This will make it so that when any change happens it will be reflected in the onChange method of the Content Observer you have just created.

With that you have both pieces and are able to keep track of the changes that are beings made to your data.
TechWiseTV: Our first "big" sample
Back in October the Cisco Cius was featured in TechWiseTV Episode 103. It's a really nice overview of the Cius from several different angles. I was asked to do a short section on application development, and I also agreed to do a TechWiseTV Workshop entitled "Developing Your First App for the Cisco Cius."

When I started preparing for the Workshop I wasn't sure what I was going to do, I just knew I had to do it in about an hour. My team and I talked about it a lot and agreed that it needed to be more than just another "Hello World". We get a lot of feedback when we present that people want more in depth examples of writing applications. We also decided that it needed to be something that could be written completely, beginning to end, in about an hour. We didn't want to write part of the application and leave the rest as an "exercise for you to do later." We considered writing an application that uses the Call Control API extensions unique to the Cius, but ultimately decided against it because there are some concepts that might be too complex for a beginner. We continued to remind ourselves that this was about writing your first application.

Se we finally agreed on the following goals
  • Must be written from beginning to end in about an hour
  • Must utilize existing technology (to make life easier)
  • Must produce an app worthy of being posted to the Android Market
  • Must pay homage to our friends at TechWiseTV

With those rules in mind we created an application that uses an Android ListView to display a YouTube playlist. When an item in the play list is clicked, the app launches the built in YouTube application.

The finished product installed on you Cius or other Android device by clicking here.

A WebEx recording of the workshop can be found here. Just click the Register button, fill out the information and you will be able to access the recording.

And finally, the full source code, as posted to the Android Market is available here.

A few notes about the source code. I made a few changes to the source code after the workshop. Here are the changes I made.
  • I fixed the "getYouTubeIntent" method that I struggled with at the end of the presentation
  • I added support for more devices by changing the AndroidManifest.xml and adding some new resources
  • I added version numbers as required by the Android Market

One final note about the package name. The package name is what uniquely identifies your application. If you decide to use this application as a starting point, I strongly recommend that you change the package name right away. If you plan to create multiple applications, I also suggest that you chose a scalable package naming convention. An Android device like the Cius can only have one application with a given package name, so try to pick something descriptive and unique. We learned this lesson the hard way long ago when several members of my team independently chose the package name "com.cisco.sample". The first time we tried to share our applications we got a naming conflict.

As always, let us know what you think.

Larry M.
Cisco Cius Add-on v0.5
There is a new version of the Cisco Cius Add-on v0.5. Feel free to download the latest version to make sure you are up to date with our Add-on.

Changes
  • Corrections to the Sample Phone Application
  • Corrections to the Device Configuration for the Graphical Layout
Showing 1 - 5 of 35 results.
Items per Page 5
of 7