slodge / BallControl

Sphero Controller in WP8 And MonoDroid (and more...)
Microsoft Public License
38 stars 12 forks source link

Ball Control

A BlueTooth/Accelerometer/Camera/VoiceControl app for fun and for Developer Competition

Ball Control is an open source Sphero controller.

To use Ball Control, you first need a Ball - get your Sphero from http://gosphero.com - and in the UK from http://www.firebox.com/product/5367/Sphero


WHAT?

Ball Control's first target platform is Windows Phone 8 where it makes use of Portable Class Libraries, Xamarin.Mobile library, and MvvmCross

The app allows you to control your ball - currently you can control:

Using the WP8 APIs - abstracted inside PCL MvvmCross plugins, you can control these things using:

The current repo includes:

Ball Control will also soon provide a Xamarin MonoTouch for iOS version :)

More will follow - especially if you join this project and help make it even more awesome.

IMPORTANT: Before you attempt to compile and use the code, please read the GETTING STARTED section first!!!

Ball Control Banner

Watch an intro video about the project!

Or:

Watch the apps first public appearance!


PROJECT DETAILS

The goal of this application was to show off C# Mobile coding, specifically showing off the use of C# native solutions including the use of Xamarin.Mobile products. It was also a chance for me to write some fun code after being on 'business logic' for a few months. This application uses MvvmCross and Portable Class Libraries throughout - there are no #if statements allowed - it's AmazeBalls.

This project includes:

Other platforms and features will be added soon....

There are some NUnit unit tests included - I ran out of time a bit - so coverage is not huge. More will be added!


GETTING STARTED

At the time of creating this project, Ball Control makes heavy use of the latest version of MvvmCross which in turn uses Portable Class libraries (PCL’s) extensively. At this time, there are a few tweaks you must make to your system(s) before you may be able to compile the project. The main issue is that the Mono for Android and MonoTouch profiles do not recognize Portable Class Libraries (PCL’s) as valid profile types to reference. We need to ‘trick’ visual studio into allowing us to reference these PCL’s.

Windows Setup:

In order to get Visual Studio Mono for Android projects to be able to reference Portable Class Libraries, we need to trick it.

  1. Open the folder: C:\Program Files (x86)\Referenced Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile104\SupportedFrameworks\
  2. Create a new file named MonoAndroid,Version=v1.6+.xml with the following contents:

    <?xml version="1.0" encoding="utf-8"?>
    <Framework DisplayName="Mono for Android"
      Identifier="MonoAndroid"
      Profile="*"
      MinimumVersion="1.6"
      MaximumVersion="*" />
  3. If you had Visual Studio open, you'll need to restart it
Mac Setup:

At this time, you should have no problems opening the Mono for Android projects on the mac...

If you do have issues, try the following:

  1. Edit the file /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild/Microsoft/Portable/v4.0/Microsoft.Portable.CSharp.targets
  2. Find the PropertyGroup that sets MonoTouch
  3. Ensure the following lines exist in this PropertyGroup:

    <CscToolExe>smcs</CscToolExe>
    <CscToolPath>/Developer/MonoTouch/usr/bin</CscToolPath>

If you have trouble building the PCL projects in MonoDevelop, then we may need to change the PCL profile - while we are waiiting for this fix - https://bugzilla.xamarin.com/show_bug.cgi?id=7173 - the workaround is http://slodge.blogspot.co.uk/2012/10/a-temporary-solution-for-profile1-only.html

Windows Store/WinRT:

There are WinRT projects here... these are close to working.... but this might not work on version 1 of Windows Store :(


LINKS


THANK YOU


IMPORTANT

I've done a lot of work and I am publishing the apps here to the various app stores and marketplaces.

You are welcome to use this project as the basis for your work - I really look forward to seeing the apps and games you make - Sphero is lovely and you guys are awesome!

However:


ALSO IMPORTANT

This app is in no way endorsed by Sphero - but we love them!

This app talks to your Sphero over BlueTooth using some of the publicly available low level APIs.

It is definitely possible to get carried away and to have too much fun with your balls. Please play nicely.