Some android apps may require users to have an active internet connection and may crash without one. The following implementation will allow detection of Internet connection. If an active connection does not exist, the user will be notified.
1. Create a new JAVA class named InternetCheck.java and paste the following code
package com.samples.myapp;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
public class InternetCheck extends Activity {
// flag for Internet connection status
Boolean isInternetPresent = false;
// Connection detector class
ConnectionDetector cd;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// creating connection detector class instance
cd = new ConnectionDetector(getApplicationContext());
// get Internet status
isInternetPresent = cd.isConnectingToInternet();
// check for Internet status
if (isInternetPresent) {
// Internet Connection is Present
// make HTTP requests
showAlertDialog(InternetCheck.this, "Internet Connection",
"You have internet connection", true);
} else {
// Internet connection is not present
// Ask user to connect to Internet
showAlertDialog(InternetCheck.this, "No Internet Connection",
"You don't have internet connection.", false);
}
}
/**
* Function to display simple Alert Dialog
* @param context - application context
* @param title - alert dialog title
* @param message - alert message
* @param status - success/failure (used to set icon)
* */
public void showAlertDialog(Context context, String title, String message, Boolean status) {
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
// Setting Dialog Title
alertDialog.setTitle(title);
// Setting Dialog Message
alertDialog.setMessage(message);
// Setting alert dialog icon
alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);
// Setting OK Button
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
// Showing Alert Message
alertDialog.show();
}
}
Add great features to your Android applications. JAVA source code for Android with example tutorials!
Friday, February 22, 2013
How to allow users to rate and comment an app from within an Android application
You can allow your users to rate and comment on your app from within itself. The following implementation prompts a user to rate and comment on your android app after a specified number of days and specified number of launches. The user will see three options like "Rate and comment", "Remind later" or "No Thanks"
1. Create a new JAVA class called RatingHelper.java and paste the following code
package com.samples.myapp;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class RatingHelper {
private final static String APP_TITLE = "MY APP TITLE";
private final static String APP_PNAME = "com.samples.myapp";
private final static int DAYS_UNTIL_PROMPT = 1;
private final static int LAUNCHES_UNTIL_PROMPT = 5;
public static void app_launched(Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0);
if (prefs.getBoolean("dontshowagain", false)) { return ; }
SharedPreferences.Editor editor = prefs.edit();
// Increment launch counter
long launch_count = prefs.getLong("launch_count", 0) + 1;
editor.putLong("launch_count", launch_count);
// Get date of first launch
Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0);
if (date_firstLaunch == 0) {
date_firstLaunch = System.currentTimeMillis();
editor.putLong("date_firstlaunch", date_firstLaunch);
}
// Wait at least n days before opening
if (launch_count >= LAUNCHES_UNTIL_PROMPT) {
if (System.currentTimeMillis() >= date_firstLaunch +
(DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000)) {
showRateDialog(mContext, editor);
}
}
editor.commit();
}
public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor) {
final Dialog dialog = new Dialog(mContext);
dialog.setTitle("Rate " + APP_TITLE);
LinearLayout ll = new LinearLayout(mContext);
ll.setOrientation(LinearLayout.VERTICAL);
TextView tv = new TextView(mContext);
tv.setText("If you enjoy using " + APP_TITLE + ", please take a moment to rate it. Thanks for your support!");
tv.setWidth(240);
tv.setPadding(4, 0, 4, 10);
ll.addView(tv);
Button b1 = new Button(mContext);
b1.setText("Rate " + APP_TITLE);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME)));
dialog.dismiss();
}
});
ll.addView(b1);
Button b2 = new Button(mContext);
b2.setText("Remind me later");
b2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
ll.addView(b2);
Button b3 = new Button(mContext);
b3.setText("No, thanks");
b3.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (editor != null) {
editor.putBoolean("dontshowagain", true);
editor.commit();
}
dialog.dismiss();
}
});
ll.addView(b3);
dialog.setContentView(ll);
dialog.show();
}
}
2. Change the values of DAYS_UNTIL_PROMPT and LAUNCHES_UNTIL_PROMPT based on your app
3. Add the following line to invoke RatingHelper class from your other android activity class
RatingHelper.app_launched(this);
4. Add the following line in Android manifest file
<activity android:name=".WebViewer">
</activity>
1. Create a new JAVA class called RatingHelper.java and paste the following code
package com.samples.myapp;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class RatingHelper {
private final static String APP_TITLE = "MY APP TITLE";
private final static String APP_PNAME = "com.samples.myapp";
private final static int DAYS_UNTIL_PROMPT = 1;
private final static int LAUNCHES_UNTIL_PROMPT = 5;
public static void app_launched(Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0);
if (prefs.getBoolean("dontshowagain", false)) { return ; }
SharedPreferences.Editor editor = prefs.edit();
// Increment launch counter
long launch_count = prefs.getLong("launch_count", 0) + 1;
editor.putLong("launch_count", launch_count);
// Get date of first launch
Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0);
if (date_firstLaunch == 0) {
date_firstLaunch = System.currentTimeMillis();
editor.putLong("date_firstlaunch", date_firstLaunch);
}
// Wait at least n days before opening
if (launch_count >= LAUNCHES_UNTIL_PROMPT) {
if (System.currentTimeMillis() >= date_firstLaunch +
(DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000)) {
showRateDialog(mContext, editor);
}
}
editor.commit();
}
public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor) {
final Dialog dialog = new Dialog(mContext);
dialog.setTitle("Rate " + APP_TITLE);
LinearLayout ll = new LinearLayout(mContext);
ll.setOrientation(LinearLayout.VERTICAL);
TextView tv = new TextView(mContext);
tv.setText("If you enjoy using " + APP_TITLE + ", please take a moment to rate it. Thanks for your support!");
tv.setWidth(240);
tv.setPadding(4, 0, 4, 10);
ll.addView(tv);
Button b1 = new Button(mContext);
b1.setText("Rate " + APP_TITLE);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME)));
dialog.dismiss();
}
});
ll.addView(b1);
Button b2 = new Button(mContext);
b2.setText("Remind me later");
b2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
ll.addView(b2);
Button b3 = new Button(mContext);
b3.setText("No, thanks");
b3.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (editor != null) {
editor.putBoolean("dontshowagain", true);
editor.commit();
}
dialog.dismiss();
}
});
ll.addView(b3);
dialog.setContentView(ll);
dialog.show();
}
}
2. Change the values of DAYS_UNTIL_PROMPT and LAUNCHES_UNTIL_PROMPT based on your app
3. Add the following line to invoke RatingHelper class from your other android activity class
RatingHelper.app_launched(this);
4. Add the following line in Android manifest file
<activity android:name=".WebViewer">
</activity>
Wednesday, February 20, 2013
How to display webpage from website on Android using WebView class
Android WebView class allows viewing a specified website URL from within an Android app without opening a web browser.
1. Create a new JAVA class called WebViewer.java and paste the following code
package com.samples.webexample;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebViewer extends DashboardActivity
{
private WebView webView;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create reference to UI elements
webView = (WebView) findViewById(R.id.webview_compontent);
// workaround so that the default browser doesn't take over
webView.setWebViewClient(new MyWebViewClient());
// Setup click listener
openURL();
}
/** Opens the URL in a browser */
private void openURL() {
webView.loadUrl("http://www.mywebsite.com/about.html");
webView.requestFocus();
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
2. Create a new layout file named main.xml and paste the following code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:id="@+id/webview_compontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0" />
</LinearLayout>
3. Add the following line to your Android manifest file if you are calling this activity from another activity
<activity android:name=".WebViewer">
</activity>
1. Create a new JAVA class called WebViewer.java and paste the following code
package com.samples.webexample;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebViewer extends DashboardActivity
{
private WebView webView;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create reference to UI elements
webView = (WebView) findViewById(R.id.webview_compontent);
// workaround so that the default browser doesn't take over
webView.setWebViewClient(new MyWebViewClient());
// Setup click listener
openURL();
}
/** Opens the URL in a browser */
private void openURL() {
webView.loadUrl("http://www.mywebsite.com/about.html");
webView.requestFocus();
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
2. Create a new layout file named main.xml and paste the following code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:id="@+id/webview_compontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0" />
</LinearLayout>
3. Add the following line to your Android manifest file if you are calling this activity from another activity
<activity android:name=".WebViewer">
</activity>
How to play a streaming video using VideoView class in Android
1. Create a new class called VideoDisplay.java and paste the following code
package com.samples.video
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoDisplay extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
String mp4path = http://www.mywebsite.com/myVideo.mp4;
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
VideoView videoView =(VideoView)findViewById(R.id.videoView);
videoView.setVideoPath(mp4Path);
videoView.setMediaController(new MediaController(this));
videoView.requestFocus();
videoView.start();
}
}
2. Create a new layout file named main.xml and paste the following code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<VideoView android:id="@+id/videoView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
3. Add the following lines in AndroidManifest.xml file
<activity android:name=".VideoDisplay">
</activity>
4. If you see a message saying "Sorry, this video cannot be played", try changing the name of your video file by excluding any white spaces. It looks like lower Android OS versions cannot play video files containing white spaces in their file name. For example, change "My Video.mp4" to "MyVideo.mp4"
package com.samples.video
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
{
@Override
public void onCreate(Bundle savedInstanceState)
{
String mp4path = http://www.mywebsite.com/myVideo.mp4;
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
VideoView videoView =(VideoView)findViewById(R.id.videoView);
videoView.setVideoPath(mp4Path);
videoView.setMediaController(new MediaController(this));
videoView.requestFocus();
videoView.start();
}
}
2. Create a new layout file named main.xml and paste the following code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<VideoView android:id="@+id/videoView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
3. Add the following lines in AndroidManifest.xml file
<activity android:name=".VideoDisplay">
</activity>
4. If you see a message saying "Sorry, this video cannot be played", try changing the name of your video file by excluding any white spaces. It looks like lower Android OS versions cannot play video files containing white spaces in their file name. For example, change "My Video.mp4" to "MyVideo.mp4"
Monday, February 18, 2013
Integrating Google Ads from Admob in an Android Application
There are various ways of monetizing an Android app. You can either charge a one time fee to users to install your app from Google Play, set up an in-app billing system to allow users to subscribe to services or publish your android application for free and make money through advertisements.
Monetizing an app through advertisements requires setting up your Android Eclipse project with required SDKs from respective ad network and embedding respective layout and code in your app.
I have explained each step of integrating Google Ad network or Admob in your Android application in following instructions.
Instructions
- Sign up for an account at Admob - http://www.admob.com
- Click "Add your first app" button and then click "Android app"
- Add the Android app information lile the url for your Android app, name and description
- Download latest version of Google Admob Ads SDK for Android to your computer and extract all contents
- Copy the GoogleAdMobAdsSDK jar file to your Android project's "libs" folder
- Open Eclipse IDE or restart Eclipse IDE if it is already open
- Right-click on your project, select "Properties". Navigate to "Java Build Path" option and add the Google AdMob Ads SDK jar file as a library
- Open a class file from your project and set the layout. In the following case, the layout file is main.xml:
package com.google.example.ads.xml;
import android.app.Activity;
import android.os.Bundle;
/**
* A simple {@link Activity} which embeds an AdView in its layout XML.
*/
public class BannerSample extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
} - Open main.xml layout file and paste the following code. Make sure the following line is present in your LinearLayout header: xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"/>
<com.google.ads.AdView android:id="@+id/ad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="AD_UNIT_ID_GOES_HERE"
ads:testDevices="TEST_EMULATOR,TEST_DEVICE_ID_GOES_HERE"
ads:loadAdOnCreate="true"/>
</LinearLayout> - You can find your AD_UNIT_ID from your Google AdMob account
- Remove the line "ads:testDevices" before launching your app in Google Play. This feature should only be used if you are testing your app in an android emulator
- Finally add the following lines to your Android Manifest file:
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
/>
Create 3D Image Buttons for Android Application using Microsoft Word 2010
It is easy to jazz up the look of your Android app by using Microsoft Word’s 3D image creation capability. You do not need to purchase any expensive applications like Adobe Photoshop. If you have Microsoft Word installed then you can create your own PNG image buttons for Android applications within minutes!
Let me illustrate how you can create a 3D image button for “Feedback” section of your app.
Instructions
- Open Microsoft Word 2010
- Click on “Insert” tab and select “Shapes” drop down menu. Select “Rounded Rectangle” shape from the drop down menu
- Press “Shift” + Left click and drag the rounded rectangle shape
- Select a shape effect from Format menu
- Click on “Insert” tab and select “Shapes” from drop down menu. Select “Oval Callout” and drag it to fit inside the rounded rectangle
- Group both the shapes into a single block by pressing “Ctrl” key + Left click on each shape, right click and select “Group”
- Right-click the grouped shape and select “Copy”. Paste it in Microsoft Paint and save the image as a JPEG or PNG image
- Congratulations! You have just created your first 3D Image button using Microsoft Word for use in you Android app. You may have to trim the white edges in the image to get rid of the white border
Subscribe to:
Posts (Atom)