Caliburn Micro Xamarin Cross-Platform Phone Feature API's - plugins

Does Caliburn Micro have Cross-Platform Mobile feature API's? For example; a cross-plaform way to access a Smart-Phones (Android, iOS and Windows Phone) Location, Accelerometer, Maps, Phone, Contacts or etc.?
I know its alot to ask considering that Caliburn Micro Xamarin support was only beta released around a week ago but you never know. Maybe the beta release has these features or there are plugins like MVVM Cross has?

There hasn't ever been a plugin system for Caliburn.Micro. At least nothing that I can think of from version 0.x. I don't believe there will ever be anything in the roadmap for it either.
Don't get me wrong about the abilities of the framework, its primary goal from what I started to work with it was its incredibly small foot print. It has all the necessary bits for doing MVVM. Some things will still be specific for use on windows (convention bindings) to controls with x:Name for example
https://github.com/Caliburn-Micro/Caliburn.Micro/issues/142

Related

Smartphone Development Framework & Platform?

I am a C Sharp.NET & Silverlight developer and now thinking to swicth to SmartDevice development specially for iPhone & Andriod based phones. I have looked over web and found some cross platform development frameworks like
http://developer.openplug.com
http://www.phonegap.com/
http://android.xamarin.com/Welcome
but not sure about which to choose. Naturally I would like to keep my learning curve less but also would like to choose platform which provides more power, so I am looking for your suggestions and 'Getting Started' tips and also which device you think will be in demand in future iPhone or Android ? .
Thanks,
Maverick
I wouldn't recommend any of those. The problem is, that those "cross-platform" development frameworks, still aren't cross-compilable. This means you still need to develop an application for each platform, but you can reuse heavy calculations if you are using models af MVC.
Another thing is that those frameworks still aren't 100% native supported, so you'll loose some features from the native frameworks when developing applications.
I've read a lot of articles and to be honest, these cross-platforms seems to be dying out, cause both Android and iOS are moving very fast in each their direction and the cross-platforms cant keep up. But it's still up to you.
In would recommend you to choose one of those platform and learn it from scratch. With your C Sharp background, maybe iOS and Objective-C would be the most natural choice.
Enjoy
Edit: Regarding you last question:
I dont think it matters which one you choose, both will be domination for a long time. You should pick the one you can identify yourself with.
since you are C# dev, go for MonoTouch. I heard good things about it.
Miguel de Icaza is behind Xamrin. He wrote the most prolific .NET platform for UNIX, mono. I believe both he and his team have the capacity to bring you the most coverage for common features on Droid and iOS. My friend has a startup and is releasing an app shortly for iOS on Xamrin. It is a video streaming app.
HTML 5 will get you the most cross platform for the investment. Of course, like everyone else has said, if you need lots of native integration or if you want to use the latest APIs upon availability, you have to go native.

Reuse code in iPhone, Android and a Web applications

I'm about to develop an app for iPhone, Android, and for web too. I think there must be some "standard" way for doing this, in order to reuse as much code as possible.
Which is the best way for doing that? Webservices? (only if the app uses internet) Maybe an API? Another way?
Just for the record, the web application will probably be developed in Ruby On Rails 3.
Thanks!
There are a few cross platform development tools out there that let you write once and compile for multiple platforms. I know I've seen questions on both tool here on SO, so others might have some good advice on these specific products.
PhoneGap
http://www.phonegap.com/
Appcelerator
http://www.appcelerator.com/
Barring that, if you are looking at doing native development on each platform, the web services APIs are a good way to go. I've built an App that is heavily data driven, and I built out RESTful services over JSON that do the heavy lifting for the iPhone, Android and Web versions.
There still is quite a bit of work that goes into implementing a feature on each platform, but once I architect code on one platform the hard, creative work is done and it's just porting it to the next platform (Same applies, mostly, to the graphics as well). Since I am coding for each platform individually I do try to take advantage of both code and UI conventions for that platform to give the user a native experience (say building menus for the menu button on Android, something not supported on iPhone). To me that's a benefit of developing for each platform individually, however, it also greatly increases time to market for each version.
Since you're looking at Objective-C, Java and Ruby, 3 completely different languages, there's not an easy way to develop a shared library without using a intermediary layer like those linked above.
Well, all three are different languages, so anything you write for one won't work for the other. An API on a server may be able to get you the same data to all, but its highly unlikely that you'll get any reusable code. I'm doing the same thing, and realize that, so I am just sharing common things such as UI and code-design between them.

Developing mobile C# app to run on multiple platforms

We have an line-of-business app that runs on Windows Mobile. It's a Winforms app with a local SQL CE database and gets its data from a WCF Web Service running on the server.
Now customers are always asking "why don't you make a version for iPhone/iPad/Android/Phone 7 etc". My boss asked how hard this would be. My initial answer is very hard especially since I would probably be the only person doing the work. I don't have any experience outside my Visual Studio happy place.
Now I've come across MonoTouch and MonoDroid. They appears to offer an easy solution but I'm sure there are lots of issues. I doubt that I will be able to just compile my app for Android.
I'm inclined to suggest that it would be far too much work and that the only realistic solution is a mobile web site with several versions of each page for different screen resolutions. Unfortunately the existing app has a local database and is "sometimes connected" so that won't cut it.
Any suggestions and tips before I waste a huge amount of time?
Cheers
Mark
I doubt that I will be able to just compile my app for Android
That is correct; you won't.
So, background: the design philosophy of MonoTouch and Mono for Android is to bring the "core" .NET and C# experience to iOS and Android while also exposing the underlying features of each specific platform. Whereas PhoneGap and Titanium abstract the underlying platform (for a "write-once, run-anywhere" vibe), MonoTouch and Mono for Android provide no platform abstractions and directly expose the underlying platform types and members.
The result is that MonoTouch programs use MonoTouch.UIKit.UIButton, which directly wraps the underlying CocoaTouch UIButton type.
Similarly, Mono for Android programs would use Android.App.Activity, which directly wraps the underlying Android android.app.Activity type.
Common across both platforms are the "core" framework namespaces and types which you find on .NET, .NET CF, Silverlight, Windows Phone 7, and Mono: System, System.Collections.Generic, System.Linq (yes, Linq-to-Objects), System.Xml.Linq (yes, Linq-to-XML), System.IO, etc., etc. For example, see the assemblies included in Mono for Android.
So, can you use your existing Windows Mobile app as-is on Android? No, because Mono for Android doesn't provide System.Windows.Forms.
However, it should be possible for you to refactor your existing code to follow a Model/View/Controller design pattern (or MVVM, or...), abstracting away the UI (View) so that you can replace it for various platforms, e.g. an iOS UI with MonoTouch, a WP7 UI with XAML, an Android UI with Mono for Android, an HTML UI with ASP.NET MVC, etc., etc. You won't get a "write once, run anywhere" experience, but you will be able to provide the user with native user interfaces which are consistent with their chosen platform.
For example, see the MIX11 Conference Apps, which utilize a common code base while providing platform-specific UIs for iOS, Android, and WP7.
look at titanium and phonegap.
My suggestion is to have a quick look at WP7. It's quite easy to jump in to, even more so if you have Visual Studio (which you do) and C# experience of any sorts. Then you should be able to more easily guesstimate how long it would take you to develop a C# application (and possibly port that to Android using MonoDroid).
And yes, Titanium & PhoneGap are options, but I personally think MonoDroid looks better.
What platform are you getting the most requests for? I am guessing Android, as that seems the most likely. I have seen a lot of people saying MonoDroid is really solid.

Make Phone Applications Across All Operating Systems [duplicate]

This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
Write once deploy on Windows Mobile 6, Windows Phone 7, Android and iPhone?
Currently I have created a 2 simple apps for iphone and 1 for windows phone. When I go to promote these apps they usually....well do you have this for android or blackberry or whatever.
Do I have to rewrite my applications in every environment in order to have them compatible across all the operating systems out there? Is there tools that address this or do you guys simply recreate the app in eclipse, xcode, visual studio etc..?
Complex applications generally need to be created with the native environment.
Simple applications can be created with cross platform tools like Titanium and PhoneGap:
- http://www.appcelerator.com/
- http://www.phonegap.com/
#Fraggle (see comment)
I have quite some experience with Appcelerator Titanium. The choice for native v.s. cross-plafrom completely depends on the kind of application you need and your knowledge. General considerations:
Can the application be created with web technologies like HTML, CSS and JavaScript?
What language / environment do I know the best (native vs web technologies)?
How much time and money can I spend?
Do I really need cross-platform compatibility?
Most mobile phone applications only provide an easy interface for internet services like news updates, traffic info, social media and video. Those applications can be easily written with web technologies. Therefor most mobile applications can be written with tools like Titanium. The great thing about Titanium: Get the native experience on multiple devices while only maintaining one code-base. Cheap way of developing cross-platform applications.
Many developers use Titanium because they don't know the native language (objective-C / java), but they have extensive knowledge about web technologies. This way they can create pretty nice applications without learning new languages. Titanium is actually used for many non-cross-platform applications.
Complex graphics, device specific tools and complex interfaces still require the native environment.
Native applications will always perform better and use device specific features, but do you really need that degree of perfection? Yes, develop native applications for every device. No, simply create one cross-platform application.
Check this page to see what Titanium can do:
http://www.appcelerator.com/showcase/applications-showcase/
You may be able to use a third party tool like http://www.phonegap.com.
There are many options for cross-platform app development, but I would suggest Adobe AIR as it is also supported on the Blackberry Playbook by RIM. As far as I know, it's the only cross-platform runtime that is supported by a major platform owner.
I have also seen it do well on Android, and iOS support is also advertized.
Well there are definitely some supposed "write once, run everwhere" solutions out there. Here is one from RhoMobile which specializes in this space. But that is just what a quick Google search turned up. I haven't tried any of them.
I had an app that was developed for Android, and I ended up essentially re-writing it in Objective-C when I wanted to port it over to iPhone. It worked out pretty well and took less time than I thought (considering I hadn't done any iPhone programming prior). But now of course I have 2 code bases that I have to maintain and when I add features I'll have to do it for both the Android and iPhone version.
So having a single code base that lets me build apps for multiple platforms would be great. Do any of the tools out there work well? Not sure. Do they give you full control to make your app look and operate the way you want it, and make us of all the OS's features? Not sure.
Qt (now owned by Nokia) is another provider of a cross platform mobile framework
http://qt.nokia.com/
Even though iphone and android seem to be missing from their official Supported Platforms list I think there is an Android 2.3 release just around the corner. Qt for Iphone also seems to be in the works.
HTML5 may be one solution if the app you providing is simple enough. Google is doing it this way. Otherwise, even you have anything "cross-phone" it may still feels alien.

What cell phone has the widest potential market for software?

I developed a flashcard program a while back for learning Japanese. I've been considering porting it to a cell-phone. What is a good target platfrom? I'm thinking about iPhone, HTC Touch HD (system software: Windows Mobile) or a Nokia (system software: Symbian). Since I know a bit of JavaME, something that runs that would also be cool.
Here's the most recent market share data. Have you considered building a web-based product consumable by all smartphones with decent web browsers? Sites like x.facebook.com are not OS-specific but are app-like enough to provide a good user experience. Building such a site and charging a subscription would be one approach to serve all markets.
Well the Apple store just celibrated its 1,000,000,000 download the other day, so I would say that the iPhone is the largest and easiest phone market to target. Also the Apple store makes it extremely easy to sell your application (they keep part of the revenue of course).
Perhaps you might like to ask which phone has the largest market share in Japan?
Also I understand Microsoft has plans to start an app store for Windows Mobile.
Since you know JavaME, take a look at developing for Android. It doesn't have a large market share, but at least you'll be able to leverage your existing skills.
You won't be able to find a common language and development environment that works on the majority of phone platforms. Once you select a platform, you're kind of committed to it unless you want to port your app to an entirely different language.
Nokia has started heavily pushing a mobile development platform based on Qt. Nokia sells a LOT more phones than Apple does.
Why write iPhone app #1,000,001 when you'd be lucky to get $500 for your investment?
There's a huge craze around iPhone apps... at this point it's totally unjustified from a developer point of view. (It's great for the users)
Qt is a really amazingly well done C++ platform (Nokia bought it, obviously :). I'm having a good time writing PC apps with it... I plan on buying a Nokia phone I can write Qt apps for soon. At that point, I'll be ditching my old iPhone (original unit, not 3G).
When the SDK came out, I thought the world of the iPhone. I even bought Apple stock. However, no Java & no Flash because Jobs is a control freak is just plain stupid. GPL incompatibility really hurts, too. I'm also not buying a Mac just to develop software for the thing.
A few weeks ago I was reading an article about a product called "rohmobile" that was a custom Ruby framework that run's on a micro ruby web server. It allows you to compile your application against all the popular mobile phones (Apple, Microsoft, Android, BlackBerry, Symbian). It seemed like a very cool idea and it's open source actively under development. The framework comes with a sync soltuion, so you can persist data to the local device using REST/SOAP. As I explored the product a bit more, the only thing that seemed like it would be a pain is the setup of the enviroment(s) needed to compile the code for the various device.... if you could make it past this, then you'd have a solution where you could support a bunch of difference devices with a single code base!
http://www.rhomobile.com/
** I've never programmed in Ruby but the syntax and the demo made it look really simple, since it's really just a local web page running on the micro web server installed on the device! The UI is HTML/CSS based. I think the product is still in Beta...
Just my 2cents~
Well I would start to find a system / programing language which is available for the top phones on the market.
I think a good go is python for that. Which makes it easy to use large portions of the same code on all of the phones which are going to be supported.
Then I would probably start with the iPhone, because I believe its userbase is still demanding for new toys :)
Creating a webapplication would be another way... but that would mean you need to be online. if you are not using flash or some other possibilities of persistent storage.
P.S.: I would not use javame :) .. I still don't like anything java at all