I need to make a 3D animation across the web, android and iOS platforms. My question is, is it possible to use WebGL to make the animations in native android and iOS apps? As I would write the animation once and it would in theory port to the android and iOS with out any problems or am I going to have to simply use the OpenGL ES to make the animations for the mobile devices and webGL for the web.
Disclaimer: I work for ludei
So, that's exactly what a company called ludei is preparing to launch ;)
We have it working on Android 2.3 (even on a Nexus One!) through 4.2, and iOS 4 (I think?) and up. We don't rely on the system browsers or webviews, so there are no "private libraries" problems, and we support versions of Android that can't have WebGL otherwise.
We're giving it the final touches now, but we should be able to release it in a few weeks :)
Check out http://impactjs.com/ for iOS they are allowing you to use threeJS //asmallgame.com/labsopen/webgl_impact/ right now for Android it is only supported on Chrome Beta and you have to enable the flag http://thenextweb.com/google/2013/01/25/google-finally-makes-it-easy-to-enable-webgl-support-in-latest-chrome-for-android-beta/ I would expect webGL to be fully supported with key lime pie version of android coming out soon. Also you can hack the iAd platform to support it on iOS but you will not get it through the app store due to using private libraries. github.com/benvanik/WebGLBrowser also be aware of github.com/kripken/emscripten because firefox recently came out with asmJS on odin monkey techcrunch.com/2013/03/21/firefox-nightly-now-includes-odinmonkey-brings-javascript-performance-closer-to-running-at-native-speeds/ this enabled firefox to port over unreal engine to webgl in only a few days at the last GDC so hopefully chrome and other browser start supporting asmJS for the obvious speed boost. techcrunch.com/2013/03/27/mozilla-and-epic-games-bring-unreal-engine-3-to-the-web-no-plugin-needed/
WebGL is not fully supported on all browsers, however both Android and iOS have native OpenGL views that can be used (and will provide a much faster experience than WebGL). Once your environments are set up for each platform, using the same code will be mostly trivial.
Although cocos2d-x does not support 3D animations, its documentation may help you get started for cross-platform apps using openGL.
Related
I have an old device (Nook Simple Touch). It based on Android 2.1. I am writing simple application for this device (only for personal usage). This application is a WebView linked to special WEB-site. Site was build using JQuery Mobile.
I get a trouble with it. WebView on this device is not perfect and shows some elements incorrectly. New versions of WebView works well.
Is it possible to improve WebView on old version of Android? May be here is a way to upgrade it or i can use some library for it?
Unfortunately, there's nothing WebView related you can do here.
jQuery Mobile performs badly on Android systems below 2.3
To be more specific, jQuery Mobile performs badly on Android systems below 4.0, however, performance drops even further if Android 2.2 and below is used.
On Android 4.0 you could have used Crosswalk to make your application faster, however, it is limited to Android 4+.
The good news is you are not out of possibilities.
CSS3 is the main reason jQuery Mobile performs purely on Android 2.X devices. You can disable jQuery Mobile styling and do it on your own making sure not to use or overuse CSS3, especially CSS3 drop shadows.
Another possibility would be to upgrade the Android version. Unfortunately, an official upgrade was never released nor there was a custom ROM on XDA developers.
I am currently looking into porting some of my Android Live Wallpapers to Blackberry. Is this possible?
I can't seem to find any info about whether or not Blackberry devices support Nartive Android Live Wallpapers.
On initial release RIM stated that Live Wallpaper would not be supported, and I haven't seen anything to the contrary. Other features available on an actual Android device such as Java Native Interface are also unlikely to ever be supported. Remember that the BlackBerry Android run time environment is meant to allow Android Java applications to run. You might think of the BlackBerry run time as providing a Dalvik VM (though I don't think that is technically accurate). Each Android application runs in its own copy of the run-time environment. It does not provide the entire Android OS as a guest OS like VMWare, VirtualBox or QEMU would.
I don't believe that it will ever support Android Live Wallpapers. Every ported Android app runs in special runtime isolated from rest of BB OS.
On my opinion Android ports are just temporary solution that RIM chosen to bridge the gap when not enough native apps.
Cascades/QML is awesome framework so I'm almost sure that Android apps will be very quickly replaced with native equivalents.
I have android app which works fine. And now I want to add some graphical features using WebGL ,but I have not a lot of experience in 3d, especially in android. I need suggestion that how would be worked my android app (I mean performance) after integrating this new feature?
And also I'd like to know in my app can I use "WebGL code", which works fine for pc browsers?
Your question is a little unclear. It sounds to me as if you have a native Android app that you want to add 3D content to. If so, WebGL is maybe not your best bet.
WebGL is a interface to OpenGL that works through a web browser, coded with Javascript. While you can convince some mobile devices to work with it, it's typically not available through most mobile web browsers. That may change in the near future, but it's anyone's guess as to exactly when. Point being, WebGL is not a viable target for phones right now.
If you have a native Android app though (coded with Java), you can access OpenGL ES 2.0. Capability wise it's identical to WebGL, but you can access it through the platforms native language, which will typically lead to better performance. If you have a WebGL app, it should be pretty straightforward to port to Android since the APIs are largely equivalent.
If you want to start using OpenGL in your Android app, the documentation is here.
Chrome experiments now have a section for mobile https://www.chromeexperiments.com/mobile.
Though you can play wide range of webGL examples in android chrome browser by enabling webgl as shown in pic below :-
This way you would be able to use webgl in chrome browser :-
Unfortunately old WebView does not support webGL but WebView V36 does have webGL support . You can openGL for similar purpose.
The Challenge
I would like to create a simple website for:
iPhone 3 and 4
iPad
Android 2.2
– BBerry OS 7 and Playbook Browser
Symbian
Desktop Webbrowser
The Problem
Whats the "best-practice" for detect, optimize and deliver the Webapp for each device/screensitze? I know this is about HTML5, CSS3 Mediaqueries and JS. HTML5 Boilerplate is a good point to start.
But:
Should I detect Browser/Devices via backend/front? What are good
libraries?
How Do I detect different screensizes? What are good libraries?
etc.
Use Phone Gap as your starting point.
Depending on your use case, there may be other libraries you may want to pile on top of it, but basically Phone Gap is what you should start with.
My suggestion would be to use Sencha Touch. Its a very mature mobile app frame work with a very active community. They support any mobile that uses the webkit based browser which is everything on your list(Im not sure about the symbian browser).
Sencha 2 which will be released by the end of october will have its own native packaging library, so the use of phonegap wont be required. But it work well with phone gap if preferred.
Mobl is new language for the mobile web. just a look on it.
Adobe's Edge is the most refined HTML5 creator that also supports Android, iOS and Playbook (IMHO forget about Symbian, that's Nokia's half dead platform). BB7 uses webkit like most other desktop and mobile browsers.
Note that coincidentally Phonegap (that I see in other answers here) is part of Adobe now.
You can give a try to Titanium's new web SDK too.
And then look at this SO question which is very similar to yours and has lots of useful links in it.
I have been developing for Android since some time now and I found Java as proper way of doing development in it. But, now there are number of options available for developing in Android such as Titanium, PhoneGap and Adobe AIR.
The question is who will come as a winner for Android development. I have read lot of comparisons between Titanium, PhoneGap and native Android development. Now, with Adobe entering into it too, what is the future of Android Developers who develop with Java as the programming language.
Since, if one can develop for Iphone and Android with Titanium and Adobe AIR then why will one want to waste time and money for separate development.
The biggest reason I can think of is that using the native language/libraries of the platform (in this case iPhone or Android) is that it will allow you to provide a user interface/experience that is more in line with what the system designers intended over what will likely be possible with something like Adobe AIR.
That doesn't necessarily mean that AIR is bad, or that you might not be able to develop a good application, but since you'd be targeting multiple platforms with the same application code, and each platform has it's own subtle (or major) differences that you can't always account for, you will inevitably be forced to take a "least common denominator" approach to building an application that will run on all of your target platforms and behave consistently across them as well. This might not sit well with some users who expect a certain level of capability as you may not give them a consistent user experience compared to other native applications.
This is a long-standing issue with cross-platform application development -- the design philosophies and behavior of each system are intentionally different (otherwise why would anyone use them?), so your bound to run into problems making an application work 100% the same across them all.
As someone that has done cross-platform development in the past, I can say that while you can do it well in some cases, and using something like Adobe AIR might be a good avenue towards getting more familiar with a particular platform, but a lot of times it's just more prudent to buckle down and build an app using a system's native libraries/languages over a cross-platform solution.
It is quite simple actually. Developing an Android application using Java (the normal APIs) will allow you to a) target possibly all Android devices as all share the same base API and b) it won't put limitations on your application (or at least no limitations with the only limitation being the API).
Now PhoneGap, Titanium and Senza are all web-based frameworks which have certain limitations. You can't access certain functions of your phone as they simply are not some kind of replacement API it's just a framework.
Now Adobe AIR is another story. I'm not sure what functional limitations Adobe AIR will have but I know that there is quite a limitation when it comes to what devices you can target. There are some minimum requirements for Adobe AIR to operate which are
Android Device Requirements for Adobe
AIR
Google Android 2.2 Operating system
ARMv7-A Processor OpenGL ES2.0 H.264 &
AAC H/W Decoders 256 MB of RAM
Which means you can target devices with earlier API versions.
Titanium compiles to native platform controls, but you must to use web languages like HTML and js to develop your application.
With special version for each platform you can design UI following system guidelines.
There seems to be an overall confusion regarding what Titanium is... It compiles to native platform controls.
The majority of the respondents have incorrectly stated that it is web based and that is not true.
However, that is true when it comes to phoneGap