Search This Blog

Showing posts with label ANDROID. Show all posts
Showing posts with label ANDROID. Show all posts

Monday, 25 November 2013

How to check the INTERNET & GPS connection in Android


----------------------------------------------------------------------------------------------------
ConnectivityManager only give information of the connection (WiFi, mobile, WiMax, etc) and if it is connected or not.

public boolean isGPSEnabled(){

LocationManager lm;
boolean GPS_Status =false;
boolean gps_enabled = false;
String title,message="";
try{
lm = (LocationManager)this.getSystemService(LOCATION_SERVICE);
gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
}catch(Exception e){
e.printStackTrace();
}

if(gps_enabled){
GPS_Status = true;
title="GPS ENABLED";
message ="GPS is  enabled.";
GPSChecker.showAlertDialog(this, title, message);
}else{
title="GPS Disabled";
message ="GPS is not enabled.Please TurnOn the GPS";
GPSChecker.showAlertDialog(this, title, message);
}
return GPS_Status;
}

----------------------------------------------------------------------------------------------------


/*
* This method does check-  ARE WE CONNECTED TO THE NET
*/
public final boolean isInternetOn()
{
String title,message="";
boolean connected = false;
ConnectivityManager connec = (ConnectivityManager)
   getSystemService(Context.CONNECTIVITY_SERVICE);

 if (connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
 connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED ){

 // MESSAGE TO SCREEN FOR TESTING (IF REQ)
 title="Internet ENABLED";
 message ="Internet is  enabled.";
 GPSChecker.showAlertDialog(this, title, message);
 connected = true;

 }else if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED
 ||  connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED  ){

 connected =  false;
 title="Internet DISABLED";
 message ="Internet is  disabled.";
 GPSChecker.showAlertDialog(this, title, message);
 }
 return connected;
}


----------------------------------------------------------------------------------------------------

Tuesday, 22 October 2013

Creating an Intent In Android , Starting activities Using Intents & Passing/Receiving data through Intent


-----------------------------------------------------------------------------------------------
Starting activities Using Intents :-
To start an activity use the method startActivity(intent). This method is defined on the Context object which Activity extends.
The following code demonstrates how you can start another activity via an intent.

say:   Activity1 (Sender Activity)

Button btn = (Button)findViewById(R.id.goBackBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

//write an Intent to redirect to Activity2--
Intent gotoActivity2= new Intent();
gotoActivity2.setComponent(new ComponentName(Activity2_pkg_nameActivity2_class_name));
MainActivity.this.startActivity(gotoActivity2);  //the Current Activity(ie MainActivity) will start the Intent -'gotoActivity2'

      }
});

say:  Activity2 (Sub-Activity/ Target Activity/)
 Activities which are started by other Android activities are called sub-activities. 

public void onClick(View v){
//write an Intent to redirect to Activity1--
  Intent gotoActivity1= new Intent();
  gotoActivity1.setComponent(new ComponentName(Activity1_pkg_nameActivity1_class_name));
  this.startActivity(gotoActivity1);      //the Current Activity will start the Intent -'gotoActivity1'
}
So, as soon as the control comes to this onClick() method the current activity will start an Intent named-'gotoActivity1' which will take the control back to activity1.

Note: the text highlighted with green should be replaced by you in application. Something like this:
Activity1_pkg_name could be replaced by a package name of activity1 say: [com.blogs.prabhakar.activity1]
-----------------------------------------------------------------------------------------------

Passing/Receiving data through Intent ...

I am trying to pass data through my Intent into the next activity so I can receive it 

say: Sender Activity
Hereby , im sending the following three params [isLocationAvailable , latitude, longitude] alongwith the Intent & receiving the same in the Receiver Activity(Target Activity)...
Intent gotoActivity2= new Intent();
gotoActivity2 .setComponent(new ComponentName(Activity2_package_name, Activity2_class_name));
gotoActivity2 .putExtra(isLocationAvailable,true);
gotoActivity2 .putExtra(latitude ,dest_Coordinates.latitude);
gotoActivity2 .putExtra(longitude, dest_Coordinates.longitude);
this.startActivity(gotoActivity2 );

say: Receiver Activity
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    boolean isLocationAvailable = getIntent().getExtras().getBoolean("isLocationAvailable");
if(isLocationAvailable){
double dest_lat = getIntent().getExtras().getDouble("latitude");
double dest_lng = getIntent().getExtras().getDouble("longitude");
toPosition = new LatLng(dest_lat, dest_lng);
}
}
---------------------------------------------------------------------------------------------------

Friday, 4 October 2013

How to draw route in google-maps-api-v2 from my Current-location to a given Destination


MainActivity.java

public class MainActivity extends FragmentActivity { // Activity {

private static final String TAG ="MainActivity";
GoogleMap mMap;
GMapV2Direction md;

 LatLng fromPosition = new LatLng(12.914788 , 77.610106);
 LatLng toPosition = new LatLng(12.94231 , 77.59739);

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

md = new GMapV2Direction();
mMap = ((SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.the_map)).getMap();

LatLng coordinates = new LatLng(12.914788 , 77.610106);

mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setCompassEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.getUiSettings().setAllGesturesEnabled(true);
mMap.setTrafficEnabled(true);
mMap.animateCamera(CameraUpdateFactory.zoomTo(12));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(coordinates, 16));

mMap.addMarker(new MarkerOptions().position(fromPosition).title("Start"));
mMap.addMarker(new MarkerOptions().position(toPosition).title("End"));

new showRoute().execute();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

private class showRoute extends AsyncTask<Void, Void, Document>{

Document doc;
PolylineOptions rectLine;

@Override
protected Document doInBackground(Void... params) {

doc = md.getDocument(fromPosition, toPosition, GMapV2Direction.MODE_DRIVING);

ArrayList<LatLng> directionPoint = md.getDirection(doc);
rectLine = new PolylineOptions().width(3).color(Color.RED);

for(int i = 0 ; i < directionPoint.size() ; i++) {
           rectLine.add(directionPoint.get(i));
}

return null;
}

@Override
protected void onPostExecute(Document result) {

mMap.addPolyline(rectLine);
}

}
}
------------------------------------------------------------------------------------------------
GMapV2Direction.java
package com.prabhakar;

public class GMapV2Direction {

public final static String MODE_DRIVING = "driving";
public final static String MODE_WALKING = "walking";

public GMapV2Direction() { }

public Document getDocument(LatLng start, LatLng end, String mode) {

//Implement THREADING concept here  ###

String url = "http://maps.googleapis.com/maps/api/directions/xml?"
+ "origin=" + start.latitude + "," + start.longitude
+ "&destination=" + end.latitude + "," + end.longitude
+ "&sensor=false&units=metric&mode=driving";

try {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(url);
HttpResponse response = httpClient.execute(httpPost, localContext);

InputStream in = response.getEntity().getContent();
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(in);
return doc;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

public String getDurationText (Document doc) {
NodeList nl1 = doc.getElementsByTagName("duration");
        Node node1 = nl1.item(0);
        NodeList nl2 = node1.getChildNodes();
        Node node2 = nl2.item(getNodeIndex(nl2, "text"));
        Log.i("DurationText", node2.getTextContent());
return node2.getTextContent();
}

public int getDurationValue (Document doc) {
NodeList nl1 = doc.getElementsByTagName("duration");
        Node node1 = nl1.item(0);
        NodeList nl2 = node1.getChildNodes();
        Node node2 = nl2.item(getNodeIndex(nl2, "value"));
        Log.i("DurationValue", node2.getTextContent());
return Integer.parseInt(node2.getTextContent());
}

public String getDistanceText (Document doc) {
NodeList nl1 = doc.getElementsByTagName("distance");
        Node node1 = nl1.item(0);
        NodeList nl2 = node1.getChildNodes();
        Node node2 = nl2.item(getNodeIndex(nl2, "text"));
        Log.i("DistanceText", node2.getTextContent());
return node2.getTextContent();
}

public int getDistanceValue (Document doc) {
NodeList nl1 = doc.getElementsByTagName("distance");
        Node node1 = nl1.item(0);
        NodeList nl2 = node1.getChildNodes();
        Node node2 = nl2.item(getNodeIndex(nl2, "value"));
        Log.i("DistanceValue", node2.getTextContent());
return Integer.parseInt(node2.getTextContent());
}

public String getStartAddress (Document doc) {
NodeList nl1 = doc.getElementsByTagName("start_address");
        Node node1 = nl1.item(0);
        Log.i("StartAddress", node1.getTextContent());
return node1.getTextContent();
}

public String getEndAddress (Document doc) {
NodeList nl1 = doc.getElementsByTagName("end_address");
        Node node1 = nl1.item(0);
        Log.i("StartAddress", node1.getTextContent());
return node1.getTextContent();
}

public String getCopyRights (Document doc) {
NodeList nl1 = doc.getElementsByTagName("copyrights");
        Node node1 = nl1.item(0);
        Log.i("CopyRights", node1.getTextContent());
return node1.getTextContent();
}

public ArrayList<LatLng> getDirection (Document doc) {
NodeList nl1, nl2, nl3;
        ArrayList<LatLng> listGeopoints = new ArrayList<LatLng>();
        nl1 = doc.getElementsByTagName("step");   
        if (nl1.getLength() > 0) {
            for (int i = 0; i < nl1.getLength(); i++) {
                Node node1 = nl1.item(i);
                nl2 = node1.getChildNodes();

                Node locationNode = nl2.item(getNodeIndex(nl2, "start_location"));
                nl3 = locationNode.getChildNodes();
                Node latNode = nl3.item(getNodeIndex(nl3, "lat"));
                double lat = Double.parseDouble(latNode.getTextContent());
                Node lngNode = nl3.item(getNodeIndex(nl3, "lng"));
                double lng = Double.parseDouble(lngNode.getTextContent());
                listGeopoints.add(new LatLng(lat, lng));

                locationNode = nl2.item(getNodeIndex(nl2, "polyline"));
                nl3 = locationNode.getChildNodes();
                latNode = nl3.item(getNodeIndex(nl3, "points"));
                ArrayList<LatLng> arr = decodePoly(latNode.getTextContent());
                for(int j = 0 ; j < arr.size() ; j++) {
                listGeopoints.add(new LatLng(arr.get(j).latitude, arr.get(j).longitude));
                }

                locationNode = nl2.item(getNodeIndex(nl2, "end_location"));
                nl3 = locationNode.getChildNodes();
                latNode = nl3.item(getNodeIndex(nl3, "lat"));
                lat = Double.parseDouble(latNode.getTextContent());
                lngNode = nl3.item(getNodeIndex(nl3, "lng"));
                lng = Double.parseDouble(lngNode.getTextContent());
                listGeopoints.add(new LatLng(lat, lng));
            }
        }
     
        return listGeopoints;
}

private int getNodeIndex(NodeList nl, String nodename) {
for(int i = 0 ; i < nl.getLength() ; i++) {
if(nl.item(i).getNodeName().equals(nodename))
return i;
}
return -1;
}

private ArrayList<LatLng> decodePoly(String encoded) {
ArrayList<LatLng> poly = new ArrayList<LatLng>();
int index = 0, len = encoded.length();
int lat = 0, lng = 0;
while (index < len) {
int b, shift = 0, result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lat += dlat;
shift = 0;
result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lng += dlng;

LatLng position = new LatLng((double) lat / 1E5, (double) lng / 1E5);
poly.add(position);
}
return poly;
}
}
--------------------------------------------------------------------------------------------------
main.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="match_parent"  >

    <fragment
        android:id="@+id/the_map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"/>


</RelativeLayout>
--------------------------------------------------------------------------------------------------
AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.prabhakar"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8"
        android:targetSdkVersion="17" />

  <permission android:name="com.prabhakar.permission.MAPS_RECEIVE"
         android:protectionLevel="signature"/>

    <uses-permission android:name="com.prabhakar.permission.MAPS_RECEIVE" />    
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    
    <uses-feature android:glEsVersion="0x00020000"
        android:required="true"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:debuggable="true" >
        
      <meta-data android:name="com.google.android.maps.v2.API_KEY"
            android:value="-----enter your v2 API key here----------"/>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
-----------------------------------------------------------------------------------------------

Monday, 29 July 2013

For getting AVD or Android SDK Manager tool options in Eclipse Juno 4.2.1

Not able to see sdk manager tool in Eclipse (If Already Installed)

For getting sdk manager tool options in Eclipse Juno 4.2.1 Simple steps.

Window---->Customize Perspective--->Command Groups Availability

And then Simply check Android SDK and AVD Manager.


----------------------------------------------------------------------------------------
Install the ADT Plugin (In case not Installed)

 check the following link  [Install ADT Pluginto install the ADT plugin into your Eclipse.

----------------------------------------------------------------------------------------

Updating the ADT Plugin (In case not Updated)
To update the ADT plugin to the latest version, follow these steps:
  1. Select Help > Check for Update ...
  2. If any update for ADT or Android tools is available, select and install.
----------------------------------------------------------------------------------------