Friday, May 31, 2013

After Earth v1.0.1 Apk + Data Android


DANGER IS REAL. FEAR IS A CHOICE. CONFRONT IT ALL WITH ‘AFTER EARTH’ ON MOBILE.

After Earth is an all-new game based on the film where you can slide, leap and fly through perilous terrain, and slice and dice evil creatures that lurk in the dark with your cutlass sword. Not your typical action-running game – you can confront and defeat an array of vicious creatures in epic battles, freefall, zipline and more!Fight for survival and defeat your enemies—but whatever you do, do not succumb to fear!


• Story Mode – Complete 20 challenging missions and unlock secret levels along the way
• Infinite Mode – Test your reflexes and explore the stunning environments inspired by the film
• Collect and change suits for different game experiences
• Fulfill multiple achievements by replaying the danger-filled levels
• Think you’re better than your friends? Prove it by besting their scores, level progressions, and achievements

Data Location: SDcard/Android/Obb

Click Here To Download

APK File
Direct Download Link - Direct Download Link

SD Data Files
Direct Download Link - Direct Download Link

For iPhone/iPad Users - Link


SwiftKey 3 Keyboard v4.1.2.147 Apk Android


SwiftKey 3 understands how words work together, giving much more accurate corrections and predictions than other keyboards. Very sloppy typing will magically make sense, even if you miss spaces, and SwiftKey 3 also predicts your next words.


* Upgrading from SwiftKey X, you may experience trouble with apostrophes or accented characters in predictions. This is because you need to update your language models. To do this, go to Settings, Languages & layouts, press menu and tap "update languages". When "update" appears next to your language(s), press it. When you return to your keyboard things should be working properly. *

SwiftKey 3 learns the words and phrases you use, and how you interact with your keyboard as you use it, to make typing easier and even more accurate over time. You can also personalize it using your Gmail, Facebook, Twitter or blog posts.

SwiftKey is among Android's best selling apps for a reason -- it transforms your keyboard, making typing a breeze and saving you hassle every day.

Here’s what’s new:

* Smart Space – adding to SwiftKey’s already cutting edge correction, Smart Space detects mistyped or omitted spaces across strings of sloppily typed words in real-time.

* Two new themes – a new theme, ‘Cobalt’, to match SwiftKey’s new look and feel, and an Ice Cream Sandwich-styled ‘Holo’ theme, as voted for by SwiftKey’s VIP community.

* An enhanced UI – a much larger space bar and smart punctuation key help improve accuracy and make it quick and easy to access common punctuation. Just tap and slide left on the period for exclamation point, or tap and slide right for question mark. No need to long-press.

* Additional languages – SwiftKey 3 now offers support for an additional seven languages, bringing the total up to 42. The new languages are Korean, Estonian, Farsi, Icelandic, Latvian, Lithuanian and Serbian. And of course, you can still enable up to three at once.

FULL LANGUAGE SUPPORT:

English (US)
English (UK)
Afrikaans
Arabic
Basque
Bulgarian
Catalan
Croatian
Czech
Danish
Dutch
Estonian
French (CA)
French (FR)
Finnish
Galician
German
Greek
Hebrew
Hungarian
Icelandic
Indonesian
Italian
Kazakh
Korean
Latvian
Lithuanian
Malay
Norwegian
Persian (Farsi)
Polish
Portuguese (BR)
Portuguese (PT)
Romanian
Russian
Serbian
Spanish (ES)
Spanish (US)
Slovak
Slovenian
Swedish
Turkish
Ukrainian
Urdu

Support for QWERTY, QWERTZ, QZERTY, AZERTY, DVORAK, COLEMAK, Arabic, Bulgarian, Greek, Hebrew, Korean, Persian (Farsi), Russian and Ukrainian layouts.

Click Here To Download
Direct Download Link - Direct Download Link


Thursday, May 30, 2013

Watch Android @ Google I/O 2013

Posted by Reto Meier, Android Developer Relations Tech Lead



We had a lot to talk about this year at I/O. We launched Google Play services 3.1 with Google Play games services, improved Location APIs, and Google Cloud Messaging enhancements; Android Studio: A new IDE for Android development based on IntelliJ IDEA Community Edition; and Google Play Developer Console improvements such as app translation service, revenue graphs, beta testing & staged rollouts, and optimization tips.



With the excitement of these announcements behind us, it's time to sit back, relax, and watch all the sessions we missed during the event. To make that easier, we've collected all the Android sessions together in the Android @ Google I/O 13 page on the developer site.



We've also created the Google I/O 13 - The Android Sessions playlist (embedded below), as well as playlists for each developer category: design, develop, and distribute.





For those of you who prefer listening to your I/O talks without the distraction of watching speakers and slides, we're also making the sessions available as part of the Android Developers Live Podcast.



Google I/O is always a highlight on the Android Developer Relations team's calendar, so we'll be keeping the magic alive with our Android Developers Live broadcasts.



This week we resumed our regular broadcasts with Android Design in Action offering a review of Android Design sessions at I/O. Next week will see the return of This Week in Android Development and The App Clinic, and stay tuned for more episodes of Table Flip, GDG App Clinics, and more!



We'll also continue to add new DevBytes and BizDevBytes to offer tips and tricks for improving your apps and making them more successful.



As always you can talk to us and keep track of our upcoming broadcasts, Android Studio news, and other Android developer news on the +Android Developers Google+ page.



Wednesday, May 29, 2013

Handling Phone Call Requests the Right Way for Users

Posted by Dirk Dougherty, Android Developer Relations

One of the things users like most about Android is the flexibility to choose which apps should handle common tasks on their devices — from opening a web page or sending an SMS to playing a music file, taking a picture, or making phone calls. This flexibility is provided by Intents.



Intents give you a powerful way to integrate your apps deeply into the system — users can even choose to let your apps replace functionality provided by system apps. In those cases, it’s essential to make sure that anything your app can’t or doesn’t handle can still be handled properly by the default system app.



Proper implementation and testing are especially important for apps that provide telephony services. Make sure that your app doesn't interfere with emergency calling by listening for the wrong intent — CALL_PRIVILEGED. Follow the best practices below to handle outgoing calls the right way, using the NEW_OUTGOING_CALL intent.



Listening for outgoing call requests



Apps that provide phone calling services (such as VOIP or number management) can set up Intent filters to handle outgoing call requests, such as those made from the Dialer or other installed apps. This provides a seamless integration for the user, who can transition directly to the calling service without having to redial or launch another app.



When the user initiates a call, the system notifies interested apps by sending an ordered broadcast of the NEW_OUTGOING_CALL Intent, attaching the original phone number, URI, and other information as extras. This gives apps such as Google Voice and others a chance to modify, reroute, or cancel the call before it’s passed to the system’s default phone app.



If you want your phone calling app to be able to handle outgoing call requests, implement a broadcast receiver that receives the NEW_OUTGOING_CALL Intent, processes the number, and initiates a call as needed. Make sure to declare an intent filter for NEW_OUTGOING_CALL in the receiver, to let the system know that your app is interested in the broadcast. You’ll also need to request the PROCESS_OUTGOING_CALLS permission in order to receive the Intent.



Note that the system broadcasts NEW_OUTGOING_CALL only for numbers that are not associated with core dialing capabilities such as emergency numbers. This means that NEW_OUTGOING_CALL can not interfere with access to emergency services the way your use of CALL_PRIVILEGED might.



Here’s an example broadcast receiver declared in an app’s manifest file:



<manifest>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<application>
...
<receiver android:name=MyOutgoingCallHandler">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
...
</application>
</manifest>


The implementation of the corresponding broadcast receiver would look something like this:



public class MyOutgoingCallHandler extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Extract phone number reformatted by previous receivers
String phoneNumber = getResultData();
if (phoneNumber == null) {
// No reformatted number, use the original
phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
}
// My app will bring up the call, so cancel the broadcast
setResultData(null);
// Start my app to bring up the call
...
}
}


Because the NEW_OUTGOING_CALL broadcast is ordered, your app can choose whether to consume the call request itself or simply process the number and pass the result data on to other apps that may be interested. In this example, the broadcast receiver brings up a phone call on it’s own service and sets the result data to null. This prevents the call request from reaching the default phone app.



An anti-pattern



Rather than listening for NEW_OUTGOING_CALL Intents, some apps have mistakenly set up intent filters for CALL_PRIVILEGED Intents as a way to handle outgoing calls. This is not a recommended approach, because the system may send a CALL_PRIVILEGED Intent for any number, including emergency numbers. Since non-system apps can’t reformat emergency numbers or place emergency calls, attempting to handle CALL_PRIVILEGED could inadvertently interfere with access to emergency numbers.



CALL_PRIVILEGED should only be used by apps that have the necessary signatureOrSystem-level permission — it is not designed for use by any third-party apps.



Check your apps for proper use of NEW_OUTGOING_CALL



If your app provides phone calling services and already uses intent filters to handle outgoing call requests, take a few minutes to make sure it is listening for the proper Intent: NEW_OUTGOING_CALL.



If your app includes intent filters that listen for CALL_PRIVILEGED Intents, make sure to remove those filters and related code from the app (in favor of NEW_OUTGOING_CALL) and publish the updated app as soon as possible.

Tuesday, May 28, 2013

Where's My Water? v1.12.0 [Unlocked] Apk Android


MEET SWAMPY IN WHERE’S MY WATER? — THE HIT DISNEY APP ON ANDROID!
Where’s My Water? is a challenging physics-based puzzler complete with vibrant graphics, intuitive controls, and a sensational soundtrack. To be successful, you need to be clever and keep an eye out for algae, toxic ooze, triggers, and traps.


3 STORIES — 3 SEPARATE GAMES — MORE THAN 400 TOTAL PUZZLES — FREE UPDATES!

SWAMPY’S STORY
Swampy the Alligator lives in the sewers under the city. He is a little different from the other alligators — he’s curious, friendly, and loves taking a nice long shower after a hard day at work. The other alligators have damaged his plumbing and disrupted the water flow. Help Swampy by guiding water to his shower! In Swampy’s Story, play ten themed chapters over 200 levels. Collect Swampy’s ducks and shower items to unlock new puzzles and bonus levels.

CRANKY’S STORY
Cranky is the toughest alligator around and he has worked up an appetite from sabotaging Swampy’s water supply. He eats anything, especially all the rotting and disgusting junk found in the dumps and sewers. Cranky will not eat vegetables however, and now his food is covered with vegetable-like algae. Use the dirty purple water to clean off Cranky’s plate so he can eat! Cranky is tough and so are his puzzles! Try five levels for free and test your skills with more than 80 levels for an additional in-app purchase.

LOST LEVELS
This collection of levels from Swampy’s other adventures is always growing, and always FREE!

MYSTERY DUCK LEVELS
These levels may look familiar, but in the Mystery Duck Story you have to collect all new types of ducks including:
• MegaDuck – The biggest duck of all, he needs more water than ever to collect!
• Ducklings – Sure they look cute, but they are everywhere!
• Mystery Duck – He moves! Timing is everything to catch this fancy teleporting duck!
New story, new comics, new look and new ducks – a new way to play for a small additional price! Try five levels for FREE!

AMAZING LIFELIKE FLUID PHYSICS
Go with the flow! Swipe, slosh, and splash to guide fresh water, dirty water, and ooze through increasingly challenging scenarios.

COLLECTIBLES, CHALLENGES, AND BONUS LEVELS
Collect Swampy’s shower items and complete Cranky’s Challenge to unlock bonus levels. “Tri-Duck” each chapter and tap around for secret levels and even more surprises! Visit www.facebook.com/WheresMyWater for more hints, tips and secrets.
Every drop counts in Where’s My Water? — A refreshing puzzler filled with good clean gaming fun!

Click Here To Download
Direct Download Link - Direct Download Link

Unlocked
Direct Download Link - Direct Download Link

For iPhone/iPad Users - Link


Get video size for MediaPlayer by implementing onVideoSizeChanged()

Further work on the exercise "Simple example to play stream video from internet using MediaPlayer" and "Release MediaPlayer in onDestroy() and onPause()", to get video size we can implement onVideoSizeChanged().

Get video size for MediaPlayer by implementing onVideoSizeChanged()


  • Define your Activity with implements OnVideoSizeChangedListener
  • Implement your OnVideoSizeChangedListener(), update SurfaceHolder accordingly by calling its setFixedSize() method
  • Register your OnVideoSizeChangedListener by calling mediaPlayer.setOnVideoSizeChangedListener(this)

Modify MainActivity.java
package com.example.androidmediaplayer;

import java.io.IOException;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.media.MediaPlayer.OnVideoSizeChangedListener;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.Toast;
import android.app.Activity;

public class MainActivity extends Activity
implements SurfaceHolder.Callback,
OnPreparedListener, OnVideoSizeChangedListener{

MediaPlayer mediaPlayer;
SurfaceHolder surfaceHolder;
SurfaceView playerSurfaceView;
String videoSrc = "rtsp://v6.cache1.c.youtube.com/CjYLENy73wIaLQkDsLHya4-Z9hMYDSANFEIJbXYtZ29vZ2xlSARSBXdhdGNoYKX4k4uBjbOiUQw=/0/0/0/video.3gp";

int videoWidth, videoHeight;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playerSurfaceView = (SurfaceView)findViewById(R.id.playersurface);

surfaceHolder = playerSurfaceView.getHolder();
surfaceHolder.addCallback(this);
}

@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub

}

@Override
public void surfaceCreated(SurfaceHolder arg0) {

try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(surfaceHolder);
mediaPlayer.setDataSource(videoSrc);
mediaPlayer.prepare();
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnVideoSizeChangedListener(this);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub

}

@Override
public void onPrepared(MediaPlayer mp) {
surfaceHolder.setFixedSize(videoWidth, videoHeight);
mediaPlayer.start();
}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}

@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
videoWidth = width;
videoHeight = height;
Toast.makeText(getApplicationContext(),
String.valueOf(videoWidth) + "x" + String.valueOf(videoHeight),
Toast.LENGTH_SHORT).show();

if (mediaPlayer.isPlaying()){
surfaceHolder.setFixedSize(videoWidth, videoHeight);
}
}

}


download filesDownload the files.

Monday, May 27, 2013

The Great Fusion v1.8.2 Apk Android


HIlarious graphic adventure inspired by our childhood’s point and click games
★ Year 2022: Society has truly changed during the last decade. The good old times have vanished. Discover this unusual and hilarious graphic adventure inspired by our childhood’s point-and-click classic adventure games ★


The Great Fusion is a third person graphic adventure set in the year 2022. Rich people are richer and poor people are even poorer. Laws are absurd, the Copyright crusaders prosecute free culture and large corporations are managed by incompetents. And that’s science fiction, righ?

- Available on iOS and Android
- Entertaining story with hilarious dialogs
- Current affairs remarks with nods to social criticism
- Hand-drawn artwork
- Original soundtrack
- User-friendly interface
- Optimised for touch devices
- Multilanguage : English, Spanish, French, Italian. (German coming soon)

★About the game★

Max, a young and brilliant programmer, will fall into poverty and will fight to make a living trying to avoid falling for his own ignorance, experiencing thousands of crazy situations, amidst countless nods to classic graphic adventures and films from pop culture.

As the whole world appeared to be unified, borders were created to separate the rich area from the poor one. The age of unification has come, in what is known as "The Great Fusion". Put your anti-hero cape on and fight for what’s yours with Max’s help in this unusual and hilarious adventure.

This is the first science fiction adventure as real as life itself. An adventure that merges the best of classic graphic adventure games with the fun look and feel of current comics. Hilarious dialogs, videos of kittens, Quentin, Woody, robots, security officers in shorts, a lady with a rat-dog and many more characters who will cross your path. Run for your lives!


★Tired of first-person shooters?★

We all know zombies are cool, and killing them is even cooler. But the creators of "The Great Fusion" –a bunch of 28 year-old guys in robes- wanted to make a different game, which could recapture many of those good old times from the classics of the genre. Those witty conversations which help solving the continuous puzzles popping up at every turn...

It was a unique and unforgettable experience which can be rarely found in games today. Our priority has always been to make an alternative game with an intuitive interface which would allow us to enter Max’s world. We won’t have to be great heroes, we will not save or take over the World, but we will recreate one of the potential futures our society is unfortunately heading.


★Help us spreading the word★

If you like the game, help us by sharing it.

- Make some noice: tell your friends or anyone you think migh be interested in “The Great Fusion”.
- Use the share buttons in social media if you feel like it.
- A few sincere words: we are always trying to improve. We are delighted to receive your opinions and we will take them into account for future projects.

Click Here To Download
Direct Download Link - Direct Download Link


SPB Shell 3D v1.6.4 APK Android


SPB Shell 3D: next generation user interface. Add a new dimension to your phone! 3D reality for you phone. Add a new dimension to your Android!

Features:
3D Home screen/launcher
Smart folders
3D widgets
Collection of panels and widgets


SPB Shell 3D Reviews:

"Butter-like smoothness" - Engadget
"As useful as it is gorgeous" - ZDNet
"Absolute Must-Have for every Android user!" - Gizmodo
"Looks Incredible And Runs Smoothly" - LAPTOP Magazine
To launch SPB Shell 3D press the Home button once installation is completed.
If you are not able to launch SPB Shell 3D, please use "Home Switcher" application from Android Market.

Use Lucky Patcher to Remove Verification or Install Google Play by Chelpus

Click Here To Download


Processing + Android

Processing is an open source programming language and environment for people who want to create images, animations, and interactions. Initially developed to serve as a software sketchbook and to teach fundamentals of computer programming within a visual context, Processing also has evolved into a tool for generating finished professional work. Today, there are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning, prototyping, and production.
  • Free to download and open source
  • Interactive programs using 2D, 3D or PDF output
  • OpenGL integration for accelerated 3D
  • For GNU/Linux, Mac OS X, and Windows
  • Projects run online or as double-clickable applications
  • Over 100 libraries extend the software into sound, video, computer vision, and more...
  • Well documented, with many books available

Processing for Android project is aim to make it foolishly easy to create Android apps using the Processing API. Once you have Processing on your machine (and the Android developer tools), you can simply write a line of code, hit Run (Ctrl-R or Cmd-R), and have your sketch show up in the emulator as a working Android app. Select Run on Device (Ctrl-Shift-R or Cmd-Shift-R) to have it run on an Android device that you have plugged into your machine. That's good stuff!

Read Tutorial to develop Android App with Processing version 2.0+.





Next:
- Download and install Processing software
- Setup Processing for Android development
- Hello World of Processing for Android


Release MediaPlayer in onDestroy() and onPause()

If you try run the last exercise of "Simple example of using MediaPlayer", you can notice that if you exit the app, the sound will still playing, and then switch back to the app, both old sound and new sound will overlap.

Actually, you have to release the MediaPlayer in onDestroy() and onPause(), when the app exit. Or any other handling method, depends on your own case.

 @Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}

Simple example of using MediaPlayer


Next:
- Get video size for MediaPlayer by implementing onVideoSizeChanged()


Sunday, May 26, 2013

Simple example to play stream video from internet using MediaPlayer

Please notice that it's a very simple and incompleted example to play stream video of 3gp format from internet using MediaPlayer.

MediaPlayer play stream video from internet


Modify layout to have a SurfaceView for the MediaPlayer.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<SurfaceView
android:id="@+id/playersurface"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</LinearLayout>


MainActivity.java
package com.example.androidmediaplayer;

import java.io.IOException;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.app.Activity;

public class MainActivity extends Activity implements SurfaceHolder.Callback, OnPreparedListener{

MediaPlayer mediaPlayer;
SurfaceHolder surfaceHolder;
SurfaceView playerSurfaceView;
String videoSrc = "rtsp://v6.cache1.c.youtube.com/CjYLENy73wIaLQkDsLHya4-Z9hMYDSANFEIJbXYtZ29vZ2xlSARSBXdhdGNoYKX4k4uBjbOiUQw=/0/0/0/video.3gp";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playerSurfaceView = (SurfaceView)findViewById(R.id.playersurface);

surfaceHolder = playerSurfaceView.getHolder();
surfaceHolder.addCallback(this);
}

@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub

}

@Override
public void surfaceCreated(SurfaceHolder arg0) {

try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(surfaceHolder);
mediaPlayer.setDataSource(videoSrc);
mediaPlayer.prepare();
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub

}

@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}

}


Note: permission of "android.permission.INTERNET" is needed in AndroidManifest.xml.

download filesDownload the files.

Next:
- Release MediaPlayer in onDestroy() and onPause()


Saturday, May 25, 2013

Get the current frame in VideoView using MediaMetadataRetriever

Last exercise show a simple example to "Get image frame in video using MediaMetadataRetriever". In this exercise, we will play the video in a VideoView. Then capture the frame at the position when user click on the button.

Get the current frame in VideoView using MediaMetadataRetriever


layout file.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/capture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="capture video image" />
<VideoView
android:id="@+id/videoview"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</LinearLayout>


MainActivity.java
package com.example.androidvideoview;

import android.graphics.Bitmap;
import android.media.MediaMetadataRetriever;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;

public class MainActivity extends Activity {

MediaMetadataRetriever mediaMetadataRetriever;
MediaController myMediaController;
VideoView myVideoView;
String viewSource = "/storage/sdcard0/DCIM/100MEDIA/VIDEO0009.mp4";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mediaMetadataRetriever = new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource(viewSource);

myVideoView = (VideoView) findViewById(R.id.videoview);
myVideoView.setVideoURI(Uri.parse(viewSource));
myMediaController = new MediaController(this);
myVideoView.setMediaController(myMediaController);

myVideoView.setOnCompletionListener(myVideoViewCompletionListener);
myVideoView.setOnPreparedListener(MyVideoViewPreparedListener);
myVideoView.setOnErrorListener(myVideoViewErrorListener);

myVideoView.requestFocus();
myVideoView.start();

Button buttonCapture = (Button)findViewById(R.id.capture);
buttonCapture.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View arg0) {

int currentPosition = myVideoView.getCurrentPosition(); //in millisecond
Toast.makeText(MainActivity.this,
"Current Position: " + currentPosition + " (ms)",
Toast.LENGTH_LONG).show();

Bitmap bmFrame = mediaMetadataRetriever
.getFrameAtTime(currentPosition * 1000); //unit in microsecond

if(bmFrame == null){
Toast.makeText(MainActivity.this,
"bmFrame == null!",
Toast.LENGTH_LONG).show();
}else{
AlertDialog.Builder myCaptureDialog =
new AlertDialog.Builder(MainActivity.this);
ImageView capturedImageView = new ImageView(MainActivity.this);
capturedImageView.setImageBitmap(bmFrame);
LayoutParams capturedImageViewLayoutParams =
new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
capturedImageView.setLayoutParams(capturedImageViewLayoutParams);

myCaptureDialog.setView(capturedImageView);
myCaptureDialog.show();
}

}});
}

MediaPlayer.OnCompletionListener myVideoViewCompletionListener =
new MediaPlayer.OnCompletionListener() {

@Override
public void onCompletion(MediaPlayer arg0) {
Toast.makeText(MainActivity.this, "End of Video",
Toast.LENGTH_LONG).show();
}
};

MediaPlayer.OnPreparedListener MyVideoViewPreparedListener =
new MediaPlayer.OnPreparedListener() {

@Override
public void onPrepared(MediaPlayer mp) {

long duration = myVideoView.getDuration(); //in millisecond
Toast.makeText(MainActivity.this,
"Duration: " + duration + " (ms)",
Toast.LENGTH_LONG).show();

}
};

MediaPlayer.OnErrorListener myVideoViewErrorListener =
new MediaPlayer.OnErrorListener() {

@Override
public boolean onError(MediaPlayer mp, int what, int extra) {

Toast.makeText(MainActivity.this,
"Error!!!",
Toast.LENGTH_LONG).show();
return true;
}
};

}


Note: To use MediaMetadataRetriever, minSdkVersion="10" have to be defined in AndroidManifest.xml.

Get image frame in video using MediaMetadataRetriever

MediaMetadataRetriever, for API level 10 or higher, provides a unified interface for retrieving frame and meta data from an input media file.

Example to retrieve frame in video:

retrieve frame in video


package com.example.androidmediametadataretriever;

import android.graphics.Bitmap;
import android.media.MediaMetadataRetriever;
import android.os.Bundle;
import android.widget.ImageView;
import android.app.Activity;

public class MainActivity extends Activity {

String uri = "/storage/sdcard0/DCIM/100MEDIA/VIDEO0007.mp4";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView capturedImageView = (ImageView)findViewById(R.id.capturedimage);

MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();

mediaMetadataRetriever.setDataSource(uri);
Bitmap bmFrame = mediaMetadataRetriever.getFrameAtTime(5000000); //unit in microsecond
capturedImageView.setImageBitmap(bmFrame);
}

}


Next:
- Get the current frame in VideoView using MediaMetadataRetriever


Thursday, May 23, 2013

Dirt Bike Evo v1.22 Apk Android


Overcome challenging obstacles with your dirt bike and try to finish each level in the shortest amount of time possible.

Be careful as you make your way and remember, that you must utilize all of your skills to get past all those obstacles without fall!


Click Here To Download
Direct Download Link - Direct Download Link


Active Soccer v1.4.1 Apk Android


The king of the arcade Soccer is back and now it's available for Android!!!
Play the first online cross platform football game ever, play Active Soccer: be ready for the revolution!

- 360 degrees movements
- Total control of the game
- Exciting online multiplayer experience


- Choose your preferred player and climb up the international ranking
- Compete in the world cup and try to prevail
- Draw the most effective tactic on the pitch and win
- Practice with free kicks and penalties
- 3D game engine
- iCade support
- Soundtrack created by Chris Huelsbeck (Turrican, The Great Giana Sisters, x-Out and many other titles)
- Extremely fun!

"I think it's a great game, very addictive" (5/5 stars)
"It's a great old-style footie game, fast as hell. It also supports iCade!" (5/5 stars)
"Funny game, more I play, more I enjoy. Thank you, great game!" (5/5 stars)
"A very very good game, in between Kick Off and Sensible Soccer. Easy and very smooth control, fast and beautiful! Love it!!" (5/5 stars)
"You will love this game" (5/5 stars)
"This is simply by far the best football game on the iPad, it requires a high level of skill to control the player with & without the ball which makes it a challenge to play the game" (5/5 stars)
"The game engine is fantastic" (5/5 stars)
"Fantástico most adictive game since SWOS" (5/5 stars)
"If you love Kick Off 2 this is a dream came true" (5/5 stars)
"I've never seen such gameplay!" (5/5 stars)

Click Here To Download
Direct Download Link - Direct Download Link


Wednesday, May 22, 2013

"Type R cannot be resolved to a variable" after Android SDK updated

If you get the error of "Type R cannot be resolved to a variable" after Android SDK and ADT updated. Try to find and install any available update in Android SDK.

In my case, after update Android SDK Tools rev 22, and also ADT. I get error of "Type R cannot be resolved to a variable" in my projects, and any new project!

- Start Android SDK Manager again. Two more update available, Android SDK Platform-tools and Android SDK Build-tools. It was not available in the previous update.


- Install the update packages.

- Close and restart Eclipse.

- Problem solved.


Max Payne Mobile v1.2 Apk + Data Android


Max Payne, the award-winning title is now available for Android mobile devices.
A fugitive undercover cop framed for murder, hunted by cops and the mob, Max is a man with his back against the wall, fighting a battle he cannot hope to win. Max Payne is a relentless story-driven game about a man on the edge, fighting to clear his name while struggling to uncover the truth about his slain family amongst a myriad of plot-twists.


The groundbreaking original cinematic action-shooter, Max Payne introduced the concept of Bullet Time® in videogames. Through its stylish slow-motion gunplay combined with a dark and twisted story, Max Payne redefined the action-shooter genre.

Max Payne Mobile for Android has been fully optimized for the NVIDIA® Tegra® 3 quad-core mobile processor with additional antistrophic texture filtering and enhanced lighting effects providing one of the most visually immersive Max Payne Mobile experiences available.

Features:
• Max Payne's signature slow motion gunplay, Bullet Time®
• Stunningly sharp, HD quality resolution and textures
• Gameplay tailored for touch screen devices
• Highly customizable controls
• Multiple aiming modes
• Compatible with the GameStop Wireless Game Controller and select USB gamepads
• Integrated with Immersion Haptic Vibration Feedback
• Tailor your visual experience with adjustable graphic settings
• Unlock cheats, track your stats and more with full Rockstar Games Social Club integration

Max Payne Mobile is now available on:
Android Phones: Motorola Razr, Razr Maxx, Motorola Atrix, Motorola Photon, Motorola Droid Bionic, HTC Rezound, HTC One X, HTC One S, HTC Evo 3D, HTC Sensation, HTC Droid Incredible 2, Samsung Galaxy Nexus, Samsung Nexus S, Samsung Galaxy Note, Samsung S2, Samsung Galaxy R, Sony Xperia Play, Sony Xperia S, Sony Walkman Z Series Media Player

Android Tablets: Acer Iconia, Asus Eee Pad Transformer, Asus Eee Pad Transformer Prime, LG Optimus Pad, Medion Lifetab, Motorola Xoom, Samsung Galaxy Tab 8.9 / 10.1, Sony Tablet S, Sony Tablet P, Toshiba Thrive, HTC Flyer, HTC Jetstream

For those using the "Skip to Level" cheat, we recommend that you have weapons in your inventory; as you will start a new level with your current weapon set.

Languages Supported: English, French, Italian, German, Spanish, Russian and Japanese.

Please ensure you have at least 1.33 GB of free space before installing Max Payne Mobile.

Install APK
Copy 'com.rockstar.maxpayne' folder to 'sdcard/Android/obb/'
Launch the Game


Click Here To Download

APK File
Direct Download Link - Direct Download Link

SD Data Files
Direct Download Link - Direct Download Link


Tegra Android Development Pack

The Tegra Android Development Pack 2.0 installs all software tools required to develop for Android on NVIDIA’s Tegra platform. This suite of developer tools is targeted at Tegra devices, but will configure a development environment that will work with almost any Android device. This cure for the common cold is available on Windows, OSX, Ubuntu Linux 32-bit and Ubuntu Linux 64-bit.



To Download The Files Below, you must be a member of the Tegra Registered Developer Program. To join simply create a new account (it's free and easy).

Bass Booster Pro v2.1.1 Apk Android


The Pro features of Bass Booster include :
- Unlimited custom presets
- Homescreen widget (2x1)
- Homescreen shortcut (see below)
- Virtualizer


- Start on phone boot
- Preset auto-detection (see below)
- Automatic preset on incoming call/SMS or during phone conversations
- 4 themes
- Reverb (in Beta ! It doesn't work on most phones, so it might be removed)


Please check out the free version to see if it works ! It includes :
- Bass Booster
- 6 Bands Equalizer (5 on some phones)
- 20 Presets (More Basses, Improve quality, Electro, Techno, Dubstep, Dance, Pop, Rock, Metal, Reggae, Rap, R&B, Hip-Hop, Jazz, Latino, Acoustic, Classical, Party, Voice Boost, Volume Boost)

Homescreen Shortcut :
This feature allows you to create a 1x1 homescreen shortcut that'll change Bass Booster settings in one click without even opening the app ! (see screenshots)


Preset auto-detection :
This feature (Android 2.3.3+) allows presets to be automatically adjusted according to the music that is being played. Let's say that you're listening to some Alternative Rock music, by default, Bass Booster will automatically choose the Rock preset, but if you create a custom "Rock" preset, yours will be selected.
But it goes even further, you could create a "Punk Rock" preset ("punkrock" works just as good) and a "Hard Rock" preset to get finer equalizer settings for each genre.
This feature require to use a compatible music player and to have the audio file locally stored and correctly tagged.

Players that support auto-detection :
- The stock music player by Google
- Google Play Music
- JetAudio Player (recommended)
- RealPlayer
- Player Pro
- Poweramp
- Rocket Music Player
- NRG Player
- Music Folder Player
- MortPlayer
- TTPod Music Mod
- Meridian
- ³ (Cubed)
- Astro Player
- Winamp (for Winamp, enable Scrobbling in Winamp settings and install the Last.FM app).
- DoubleTwist (enable Last.FM scrobbling in DoubleTwist settings)
This list is NOT complete : other media players may work.

If your player doesn't work, just drop us a mail and we'll see if support can be added.
If auto-detection doesn't work, try to enable Last.FM Scrobbling in the settings of your media player. (For Winamp and some others players, you have to install the Last.FM app)


Permissions :
- Receive messages : This is needed to automatically set a preset if there's an incoming SMS.
- Read phone state : This is needed to automatically set a preset if there's an incoming call.

Click Here To Download
Direct Download Link - Direct Download Link


Monday, May 20, 2013

Apply animations on layout changes using LayoutTransition

LayoutTransition (Added in API level 11) enables automatic animations on layout changes in ViewGroup objects.

example:

LayoutTransition transition = new LayoutTransition();
container.setLayoutTransition(transition);


It's the default animations effect apply on the dynamic view in last exercise "Add and Remove view dynamically".


Modify MainActivity.java from last exercise.
- Apply LayoutTransition on container of LinearLayout.
- To made the effect noticeable, insert dynamic view in front by calling container.addView(addView, 0) instead of container.addView(addView).
- Modify AndroidManifest.xml to have minSdkVersion="11".

package com.example.androiddynamicview;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.animation.LayoutTransition;
import android.app.Activity;
import android.content.Context;

public class MainActivity extends Activity {

EditText textIn;
Button buttonAdd;
LinearLayout container;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textIn = (EditText)findViewById(R.id.textin);
buttonAdd = (Button)findViewById(R.id.add);
container = (LinearLayout)findViewById(R.id.container);

buttonAdd.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View arg0) {
LayoutInflater layoutInflater =
(LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View addView = layoutInflater.inflate(R.layout.row, null);
TextView textOut = (TextView)addView.findViewById(R.id.textout);
textOut.setText(textIn.getText().toString());
Button buttonRemove = (Button)addView.findViewById(R.id.remove);
buttonRemove.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
((LinearLayout)addView.getParent()).removeView(addView);
}});

container.addView(addView, 0);
}});

LayoutTransition transition = new LayoutTransition();
container.setLayoutTransition(transition);

}

}


download filesDownload the files.

Related:
To apply Android 3.0 animation API on old devices, NineOldAndroids is an alternative.

Transitioning to Google Wallet Merchant Center

Posted by Mark Thomas, Product Manager, Google Wallet


A key focus of Google Wallet is to simplify commerce for merchants and shoppers; for over a year now, consumers on Google Play have been using Wallet to make their purchases, to the benefit of the entire ecosystem. Helping merchants benefit from the growing consumer adoption of mobile commerce is where we believe we can make the most impact. And that’s why today we're focusing our efforts on the new Google Wallet Merchant Center and retiring Google Checkout over the next six months.



Most Google Play apps developers will seamlessly transition to the Wallet Merchant Center, which provides new reporting and analytics features and much more. A small number of Google Play developers, however, will see some changes:




  • Developers using Google Checkout on their website to sell physical goods or services will no longer be able to use Checkout after November 20, 2013. We have provided some discounted migration options to help with this change. If you are a U.S. merchant selling physical goods and services who does have payment processing, you can apply for Google Wallet Instant Buy, which offers a fast buying experience to Google Wallet shoppers.

  • Developers who use the Google Checkout for the Notifications and/or Order Reports API(s) will need to migrate to replacement APIs, made available through Google Play, before November 20, 2013. Watch for announcements on the new APIs soon.



If you sell apps or in-app products in Google Play, you’ll soon have access to the new Wallet Merchant Center. Watch for an email notifying you that that it’s now available to you. We expect to transition all merchants to the Wallet Merchant Center over the next several weeks.



We invite you to join us for our live merchant webinar on May 23, 2013 at 10AM PDT to learn more and ask any outstanding questions. As always, feel free to contact us at any time during this transition. Finally, be sure to check out the exciting updates launched last week at Google I/O (including Instant Buy and Wallet Objects) and stay tuned for more great developer features coming soon!

Add and Remove view dynamically

This exercise demonstrate how to add and remove view dynamically at run-time. When user click on the Add button, new view will be added. When user click on Remove button, the corresponding view will be removed.


MainActivity.java
package com.example.androiddynamicview;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.app.Activity;
import android.content.Context;

public class MainActivity extends Activity {

EditText textIn;
Button buttonAdd;
LinearLayout container;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textIn = (EditText)findViewById(R.id.textin);
buttonAdd = (Button)findViewById(R.id.add);
container = (LinearLayout)findViewById(R.id.container);

buttonAdd.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View arg0) {
LayoutInflater layoutInflater =
(LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View addView = layoutInflater.inflate(R.layout.row, null);
TextView textOut = (TextView)addView.findViewById(R.id.textout);
textOut.setText(textIn.getText().toString());
Button buttonRemove = (Button)addView.findViewById(R.id.remove);
buttonRemove.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
((LinearLayout)addView.getParent()).removeView(addView);
}});

container.addView(addView);
}});

}

}


activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Add"/>
<EditText
android:id="@+id/textin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/add"/>
</RelativeLayout>
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>

</LinearLayout>


row.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/remove"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Remove"/>
<TextView
android:id="@+id/textout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/remove"/>
</RelativeLayout>



download filesDownload the files.

Related:
- Apply animations on layout changes using LayoutTransition


Sunday, May 19, 2013

Intel introduce Beacon Mountain, a Development Environment for Android Apps



Learn about Beacon Mountain - Intel's development environment for creating applications for Intel Atom and ARM*-based devices running Android* operating systems.

Install Android Studio on Ubuntu with error of "Plugin com.intellij failed to initialize and will be disabled"

Just try to install the Early Access Preview of Android Studio on Ubuntu 13.04. But error of "Plugin com.intellij failed to initialize and will be disabled:null" happen...!



It's due to IntelliJ IDEA need fixed installation of JDK, it have to be one of the following location:
  • /usr/java
  • /opt/java
  • /usr/lib/jvm
Android Studio installed successful


Remark: After you installed JDK in the location, you have to set environment parameter point to the installed location. In my practice, I use the following commands in Terminal to update alternatives:

$sudo update-alternatives --install /usr/bin/javac javac /opt/java/bin/javac 1
$sudo update-alternatives --install /usr/bin/java java /opt/java/bin/java 1

where /opt/java/ is the location of my installed JDK.

Fire & Forget Final Assault v1.0 Apk + Data Android

DRIVE, FLY, SHOOT with the most advanced flying tank!

In a world ravaged by thermonuclear war, where law and order are but a distant memory, a terrorist group is trying to deliver the final blow which could lead to the total loss of what is left of humanity. Equipped with the ultimate in sophisticated top secret weaponry, the "Thunder Master III", you are the last resort, only you can save the day now…


Fire & Forget is a shooting game that puts you in control of an impressive flying armored vehicle, fitted with 2 deadly weapons: a manual double canon with a sighting device and an auto-guided missile launcher.
While the vehicle is automatically moving forward at high speed, your job is to avoid all the obstacles and slaughter any enemies in your way.

✔ Take out tens of enemies and obstacles in every level
✔ 10 levels across a devastated post-apocalyptic world
✔ 3 levels of difficulty
✔ Destroy as many enemies as you can to achieve the best scores.
✔ Customize your vehicle according to your personal tastes with incredible skins and upgrades.

Obb Data Location: SDcard/Android/Obb

Click Here To Download

APK File
Direct Download Link - Direct Download Link

SD Data Files
Direct Download Link - Direct Download Link


AVP: Evolution v1.3.2 Apk + Data Android

Aliens Vs Predators Apk Data AndroidAliens Vs Predators Apk Data Android

The deadliest creatures in the universe face off for the first time on your phone and tablet. Play as both the Alien and Predator in this official game brought to you by Angry Mob Games, the creators of PREDATORS™, Guerrilla Bob and Muffin Knight.


On a distant planet, the blood feud between Predator clans continues to rage. In a final attempt to eradicate the Jungle Hunter Clan, the Super Predators secure the capabilities of an unlikely and unwilling species, the Aliens. As an Alien, you must ultimately destroy the Super Predators and free your species from enslavement. As a Jungle Hunter Predator, you must eliminate the Alien Queen in order to prevent the Super Predators from annihilating your clan.

You might also like : Predators


VICIOUS CHARACTERS & FIERCE COMBAT
*Two distinct gaming experiences as you engage in the ultimate battle as both the Alien and Predator
*Vicious attacks and brutal finishing moves give players a lethal arsenal to wreak havoc on the enemy

CREATE YOUR OWN ULTIMATE KILLING MACHINE
*Engineer your own unique Alien and Predator via character upgrades, enhanced abilities, and a multitude of powerful armor and weapons
*Gain the advantage in battle with Facehugger Calls, Rage Rechargers, Net Guns, Proximity Mines, Thermal Vision, Alien Vision, Plasma Cannons and much more

CHILLING ENVIRONMENTS
*It’s kill or be killed as you advance through the Temple Arena, Marine Base, Alien Hive and many other eerie settings

INCREDIBLE GRAPHICS UNLEASHED
*Rich detail, impressive character models and distinctive lighting

SCREENSHOTS:



How to install
1.Install apk, Maybe you need lucky patcher to remove verification or install Google Play by Chelpus
2.Copy data folder to 'sdcard/Android/Obb'
Launch the game
if not work, Please Copy files in TitaniumBackup Zip to 'sdcard/Titaniumbackup' folder and 'Restore' > 'Data Only' with Titanium backup

Click Here To Download

APK File
Direct Download Link - Direct Download Link

SD Data Files
Direct Download Link - Download Link

Titanium Backup File
Download Link - Download Link


Saturday, May 18, 2013

New Features in Android Location 2013

Google I/O 2013 - Beyond the Blue Dot: New Features in Android Location




What's New in Android Developer Tools - Google I/O 2013



An in-depth tour of the Android development tools, with a closer look at everything new - along with tips and tricks for getting the most out of them.

BackCountry Navigator PRO GPS v4.9.4 Apk Android


Play in the outdoors with GPS and offline topo maps! Use your phone or tablet as an offroad topo mapping GPS with the bestselling outdoor navigation app for Android! Explore beyond cell coverage for hiking, hunting and more.

Download topo maps for the US and some other countries in advance, so you won't need cell coverage when navigating.


This uses many publicly available map sources as free downloads. It also has some additional content available as an in app purchase:
-Accuterra Topo Map Source on sale for a $20 upgrade. This can be purchased and used with or in instead of the free sources.
- Boundary maps for 12 western states from the Bureau of Land Management(BLM) for $7.99. Overlay for topo maps hunters.
-Content from US TrailMaps for $15.99, including:
-Snowmobile Trail Maps for Snowmobiling enthusiasts,
-ATV Trail Maps
-Whitewater Trail Maps,
-Equestrian Trail maps.
See these in the menu under More-> "Purchasing AddOns". They can be shown on top of topo maps.

You may try the DEMO version to make sure you like the maps in your country.

NOTE: If you've already purchased this or any paid app, you can install it at any time from 'My Apps' in the Android Market.

Use offline topo maps and GPS on hiking trails without cell service! The GPS in your Android phone can get its position from GPS satellites, and you don’t have to rely on your data plan to get maps. Have more fun and safe GPS adventures in the backcountry.

Add custom GPS waypoints in longitude and latitude, UTM or MGRS grid reference. Import GPS waypoints from GPX files. Choose mapsource-like icons for GPS waypoints. (This app uses the WGS84 datum, NAD27 is available in settings).

Use GPS for hunting a waypoint or geocache, for recording tracks and GPS waypoints on your trip, all the while tracking your GPS quest on topographic maps.

About topo (topographic) maps: Topo maps show terrain through color and contours, and are useful for navigation offroad. Topo maps and GPS can be used for hiking, hunting, kayaking, snowshoeing, & backpacker trails.
You can create your own maps with Mobile Atlas Creator. Built in sources include:
OpenStreetMaps and NASA landsat data worldwide
OpenCycleMaps showing terrain worldwide
USA Topo Maps
NR Canada Topo Maps from Toporama
NOAA RNC Nautical Charts
USGS Color Aerial photography
UK Ordinance Survey Explorer Maps
Topographic Maps of Spain and Italy
Outdoor maps of Germany and Austria
Topo maps of New Zealand
Above sources are generally free to use.

Here are some of the outdoor GPS activities BackCountry Navigator has been used for:
As a hiking GPS both on hiking trails and off trail.
Camping trips to find that perfect camping site or find your way back to camp with GPS.
Hunting trips for hunting wild game in rugged areas.
Recon for the hunt or a live hunting trip.
Bait fishing or fly fishing with a buddy: mark your favorite fishing spots and navigate.
Search and Rescue (SAR).
Kayak and canoe trips on inland lakes and streams or marine, coastal waters.
Backpacker trips: using topo maps of wilderness areas and national forests to navigate on trails with the GPS.
Snow adventures including snowmobiling, skiing (alpine or cross country) and snowshoeing. Try this on snowmobile trails with the new addon.

Find your own ways to have fun in the outdoors. Be a maverick by venturing into new territory beyond cell service boundaries with your GPS. Become a pro at navigation with GPS for allsports for the outdoors.

BackCountry Navigator has been previously available on WM devices and preloaded on the Trimble Nomad outdoor rugged device. This Android version is more flexible, featured, and fun.

For a one time fee, this a great addition to the outdoor gear you bought at Cabelas, REI, or another outdoor store. Your android phone could substitute for a Garmin or Magellan outdoor handheld GPS!

Click Here To Download
Direct Download Link - Direct Download Link