Google Android
From ShiVa Wiki
Android 2.1 Compatibility Definition
Click here to view the Android 2.1 Compatibility Definition page
Device Limitations
Will advanced shader effects/normal mapping/real time shadows work on my android device?
- Qualcomm Snapdragon based devices (ex: Google/HTC Nexus One) --> yes
- Imagination Technologies Power SGX based devices (ex: Motorola Droid, Samsung Galaxy S) --> yes (just some weird things with shadows but we are working with them to find a fix)
- Qualcomm MSM7xxx based devices (ex: HTC Hero) --> no (hardware too old)
- Other exotic low cost devices -> certainly no
Keycodes and Orientation
Standard Hardware Keycodes
- Back: 34
- Search: 255
- camera (HTC): 35
- menu: 115
Sony XPERIA play
- left bumper: 122
- right bumper: 123
- arrows: left 33 right 32 up 30 down 31
- square: 119 circle 34 triangle 120 X 35
- select: 129
- start: 128
Device Orientation
Setup: Game was designed in a landscape style while not doing any in-ShiVa kOptionViewportRotation. Changed the layout to landscape in the Android Manifest File.
- In Eclipse, open your main Java File (src->YourApp.java)
- Go down to line ~832 (~1000) and look for ORIENTATION via search
- Comment out the line that says setRequestedOrientation:
//oThis.setRequestedOrientation ( ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE ) ;
- There is another one on line ~862 (~1030) for Portrait mode. Comment that out as well:
//oThis.setRequestedOrientation ( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ) ; // TODO: restore the original orientation
Add-Ons
AdMob
StepByStep Admob (Android ECLIPSE) integration with no changes needed in the STK file!
AdMob for Android via Eclipse
Leadbolt Integration
Full Android LeadBolt Integration
- Full Android LeadBolt Integration Tutorial
- Files and SDKs:
Download the Leadbolt SDK: LeadboltSDK.com
Warhead Games Leadbolt Integration code and help: Download from their website Warheadgames.com
Videos
Watch the tutorial videos on the Warhead Games Youtube channel!
FAQ
Q: How do I build an unsigned app?
A: By default dragging and dropping the build.xml on antbuild.cmd creates debug apps. Just edit the build.xml and change the top default="Build debug apk" to default="Build release apk" and save the build.xml. Then drag and drop again and you will get a unsigned release app, then use jarsigner (located in the bin folder of your jdk directory) to sign with your keystore.
Q: How much does Leadbolt make over Admob?
A: It's not set in stone formular but my most popular apps make over 10 times more with Leadbolt and my lesser popular APPs make about 3 times more on average. I have multiple Google developer accounts. Depending on the niche I am creating apps for. I just started with Shiva and Leadbolt so those numbers aren't there, but considering Leadbolt's advertising I actually expect them to be better on average for the gaming niche!
Q: Will this work with all Shiva apps?
A: Yes it should work with any Shiva app and does not require any coding inside your Shiva app to work, unlike Admob.
Q: What wasn't clear in the video (and is perhaps beyond it's remit) is how might I choose how the ads appear from the App in ShiVa (like in a component?) or if I used a different .jar library in a similar way, how could I call a command from Shiva and maybe recieve results back. Would I need to create a plugin to sit inbetween the APIs?
A: This is kind of a repeat of above, but I guess I need to make it clearer. Nothing in Shiva is required, it is all taken care of by the code I provided outside of Shiva. Shiva doesn't even care about the ads.
- Credits and Further Reading
forum user straybullet
Link to the original forum thread
RevMob Integration
Click here to read gamescorpion's Step by Step RevMob->ShiVa Integration Tutorial!
Google Analytics
Shaderman's Google Analytics integration, in collaboration with Marcelo Zambrana Villarroel (idea), dbladez and giggsy (shiva integration code), complete with c, java and STE files.
Google Analytics Integration for Android
TapGage Integration
Check out Nav's TapGage Android Integration tutorial!
Link to the original forum thread
Android Virtual Keyboard
Learn how to use the Android software keyboard in your game
Enable stereoscopic 3D mode on phones
Read this tutorial to learn how to use the 3D stereoscopic mode on a supported android phone.
Dim the screen using callbacks
Read this tutorial to learn how to use hooks and callbacks to dim the screen on an android phone.
Creating Live Android 3D Wallpapers with ShiVa
Jelly Bean Live Wallpaper Tutrial @error454's blog
Signing your applications for the Android Marketplace
On this official android dev page, you can read up on how to sign your applications properly.
Step by Step Video: From ShiVa to APK
Android Beginner's Corner: blubee's tutorial video on youtube
Step by Step tutorial: From ShiVa to Android Marketplace
Click here to view GameScorpion's Step by Step tutorial
Step by Step tutorial: Barnes&Noble Nook Color / HD
- Click here to view GameScorpion's StepByStep Tutorial for the Nook Color
- Click here to view GameScorpion's StepByStep Tutorial for the Nook HD / HD+
Step by Step tutorial: From ShiVa to Eclipse to APK
Click Here To View Selzier's Step By Step Tutorial
Marketplace
My game is not showing up in the marketplace... ?
An application is visible in Android Market on a given device if this device matches the application minimum requirements. The OpenGL ES version is one of those requirements. The ShiVa engine is compatible with OpenGL ES 1.0, 1.1 and 2.0, but OpenGL ES 1.0 (without extensions) is so "old and unusable" that it is maintained only because it does not involve lot of work from us.
On Android, most devices with good hardware acceleration are compatible with at least OpenGL ES 1.1 (Google Nexus One, Motorola Droid, HTC Desire, etc.). So, we decided to only support phones that are at least OpenGL ES 1.1 capable, that's why we put it as a requirement in the generated applications manifest.
The problem: More and more *recent* phones (including HTC Hero) are shipping with an old Qualcomm GPU (the MSM7XXXa) that only supports OpenGL ES 1.0, and to be honest we are currently working on trying to enable hardware rendering on those devices (but if we find a way to do it this chipset should be sufficient to make ShiVa applications work quite well, because it has the minimum extensions the engine needs in order to work). If the game is not visible on a given device, it's just because *for now* it may not be compatible with it. By "not compatible" I mean it could work, but very slowly, and then be unusable (because using a software driver).
App rejected: WAKELOCK always keeps screen on