Wednesday 31 January 2018

Get current location with address Android example

MainActivity.java

package com.getcurrentlonglat;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.location.Address;
import android.location.Geocoder;
import android.net.Uri;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

public class Main2Activity extends AppCompatActivity implements View.OnClickListener {

    private static final int REQUEST_CODE_PERMISSION = 2;
    List<Address> addresses;
    Button btnShowLocation,buttonshow;
    Geocoder geocoder;
    GPSTracker gps;
    String mPermission = "android.permission.ACCESS_FINE_LOCATION";
    TextView txt_add;
    TextView txt_lat;
    TextView txt_long;

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

        txt_lat = (TextView) findViewById(R.id.txt_lat);
        txt_long = (TextView) findViewById(R.id.txt_long);
        txt_add = (TextView) findViewById(R.id.txt_add);
        try {
            if (ContextCompat.checkSelfPermission(this, this.mPermission) != 0) {
                ActivityCompat.requestPermissions(this, new String[]{this.mPermission}, 2);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        btnShowLocation = (Button) findViewById(R.id.button);
        buttonshow = (Button)findViewById(R.id.buttonshow);
        buttonshow.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {


                gps = new GPSTracker(Main2Activity.this);
                if (gps.canGetLocation()) {
                    double latitude = gps.getLatitude();
                    double longitude = gps.getLongitude();
                    try {
                        getCompleteAddressString(latitude, longitude);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    final String lat = String.valueOf(latitude);
                    final String lang = String.valueOf(longitude);
                    txt_lat.setText(lat);
                    txt_long.setText(lang);

                    String tempid="google.navigation:q="+"23.0734262,72.6243823";
                    //String tempid="google.navigation?q="+lat+","+lang;                    Uri gmmIntentUri = Uri.parse(tempid);
                    Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
                    mapIntent.setPackage("com.google.android.apps.maps");
                    if (mapIntent.resolveActivity(getPackageManager()) != null) {
                        startActivity(mapIntent);
                    }
                    return;
                }
                gps.showSettingsAlert();


               /* gps = new GPSTracker(Main2Activity.this);                if (gps.canGetLocation()) {                    double latitude = gps.getLatitude();                    double longitude = gps.getLongitude();                    try {                        getCompleteAddressString(latitude, longitude);                    } catch (IOException e) {                        e.printStackTrace();                    }                    final String lat = String.valueOf(latitude);                    final String lang = String.valueOf(longitude);                    txt_lat.setText(lat);                    txt_long.setText(lang);                    String tempid="geo:0,0?q="+lat+","+lang;                    //String tempid="google.navigation?q="+lat+","+lang;                    Uri gmmIntentUri = Uri.parse(tempid);                    Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);                    mapIntent.setPackage("com.google.android.apps.maps");                    if (mapIntent.resolveActivity(getPackageManager()) != null) {                        startActivity(mapIntent);                    }                    return;                }                gps.showSettingsAlert();*/
            }
        });
        btnShowLocation.setOnClickListener(this);
    }

    @Override    public void onClick(View view) {
        gps = new GPSTracker(Main2Activity.this);
        if (gps.canGetLocation()) {
            double latitude = gps.getLatitude();
            double longitude = gps.getLongitude();
            try {
               getCompleteAddressString(latitude, longitude);
            } catch (IOException e) {
                e.printStackTrace();
            }
            final String lat = String.valueOf(latitude);
            final String lang = String.valueOf(longitude);
            txt_lat.setText(lat);
           txt_long.setText(lang);
            return;
        }
       gps.showSettingsAlert();
    }

    @SuppressLint("LongLogTag")
    private String getCompleteAddressString(double LATITUDE, double LONGITUDE) throws IOException {
        String strAdd = "";
        try {
            List<Address> addresses = new Geocoder(this, Locale.getDefault()).getFromLocation(LATITUDE, LONGITUDE, 1);
            if (addresses != null) {
                Address returnedAddress = (Address) addresses.get(0);
                StringBuilder strReturnedAddress = new StringBuilder("");
                for (int i = 0; i <= returnedAddress.getMaxAddressLineIndex(); i++) {
                    strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
                }
                strAdd = strReturnedAddress.toString();
                txt_add.setText(strAdd);
                Log.w("My Current loction address", strReturnedAddress.toString());
                return strAdd;
            }
            Log.w("My Current loction address", "No Address returned!");
            return strAdd;
        } catch (Exception e) {
            e.printStackTrace();
            Log.w("My Current loction address", "Canont get Address!");
            return strAdd;
        }
    }
}

GPSTracker.java

package com.getcurrentlonglat;

import android.app.AlertDialog.Builder;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;

public class GPSTracker extends Service implements LocationListener {
    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10;
    private static final long MIN_TIME_BW_UPDATES = 60000;
    boolean canGetLocation = false;
    boolean isGPSEnabled = false;
    boolean isNetworkEnabled = false;
    double latitude;
    Location location;
    protected LocationManager locationManager;
    double longitude;
    private final Context mContext;

    class C01931 implements OnClickListener {
        C01931() {
        }

        public void onClick(DialogInterface dialog, int which) {
            GPSTracker.this.mContext.startActivity(new Intent("android.settings.LOCATION_SOURCE_SETTINGS"));
        }
    }

    class C01942 implements OnClickListener {
        C01942() {
        }

        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    }

    public GPSTracker(Context context) {
        this.mContext = context;
        getLocation();
    }

    public Location getLocation() {
        try {
            this.locationManager = (LocationManager) this.mContext.getSystemService("location");
            this.isGPSEnabled = this.locationManager.isProviderEnabled("gps");
            this.isNetworkEnabled = this.locationManager.isProviderEnabled("network");
            if (this.isGPSEnabled || this.isNetworkEnabled) {
                this.canGetLocation = true;
                if (this.isNetworkEnabled) {
                    this.locationManager.requestLocationUpdates("network", MIN_TIME_BW_UPDATES, 10.0f, this);
                    Log.d("Network", "Network");
                    if (this.locationManager != null) {
                        this.location = this.locationManager.getLastKnownLocation("network");
                        if (this.location != null) {
                            this.latitude = this.location.getLatitude();
                            this.longitude = this.location.getLongitude();
                        }
                    }
                }
                if (this.isGPSEnabled && this.location == null) {
                    this.locationManager.requestLocationUpdates("gps", MIN_TIME_BW_UPDATES, 10.0f, this);
                    Log.d("GPS Enabled", "GPS Enabled");
                    if (this.locationManager != null) {
                        this.location = this.locationManager.getLastKnownLocation("gps");
                        if (this.location != null) {
                            this.latitude = this.location.getLatitude();
                            this.longitude = this.location.getLongitude();
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return this.location;
    }

    public void stopUsingGPS() {
        if (this.locationManager != null) {
            this.locationManager.removeUpdates(this);
        }
    }

    public double getLatitude() {
        if (this.location != null) {
            this.latitude = this.location.getLatitude();
        }
        return this.latitude;
    }

    public double getLongitude() {
        if (this.location != null) {
            this.longitude = this.location.getLongitude();
        }
        return this.longitude;
    }

    public boolean canGetLocation() {
        return this.canGetLocation;
    }

    public void showSettingsAlert() {
        Builder alertDialog = new Builder(this.mContext);
        alertDialog.setTitle("GPS is settings");
        alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");
        alertDialog.setPositiveButton("Settings", new C01931());
        alertDialog.setNegativeButton("Cancel", new C01942());
        alertDialog.show();
    }

    public void onLocationChanged(Location location) {
    }

    public void onProviderDisabled(String provider) {
    }

    public void onProviderEnabled(String provider) {
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
    }

    public IBinder onBind(Intent arg0) {
        return null;
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res-auto"    xmlns:app="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    app:layout_width="match_parent"    app:layout_height="match_parent"    app:layout_margin="10dp"    tools:ignore="NamespaceTypo">
    <LinearLayout        app:orientation="vertical"        app:id="@+id/linearLayout"        app:layout_width="match_parent"        app:layout_height="wrap_content">
        <TextView app:padding="5dp"            app:layout_width="match_parent"            app:layout_height="wrap_content"            app:text="Latitude" />
        <TextView app:id="@+id/txt_lat"            app:padding="5dp"            app:layout_width="match_parent"            app:layout_height="wrap_content"            app:hint="Lat" />
    </LinearLayout>
    <LinearLayout        app:orientation="vertical"        app:id="@+id/linearLayout2"        app:layout_width="match_parent"        app:layout_height="wrap_content"        app:layout_below="@+id/linearLayout"        app:layout_alignParentLeft="true">
        <TextView app:padding="5dp"            app:layout_width="match_parent"            app:layout_height="wrap_content"            app:text="Longitude" />
        <TextView app:id="@+id/txt_long"            app:padding="5dp"            app:layout_width="match_parent"            app:layout_height="wrap_content"            app:hint="Long" />
    </LinearLayout>
    <LinearLayout        app:orientation="vertical"        app:layout_width="match_parent"        app:layout_height="wrap_content"        app:layout_below="@+id/linearLayout2"        app:layout_alignParentLeft="true">
        <TextView app:padding="5dp"            app:layout_width="match_parent"            app:layout_height="wrap_content"            app:text="Address" />
        <TextView            app:id="@+id/txt_add"            app:padding="5dp"            app:layout_width="match_parent"            app:layout_height="wrap_content"            app:hint="Address" />
    </LinearLayout>

    <Button        app:id="@+id/button"        app:layout_width="match_parent"        app:layout_height="wrap_content"        app:layout_alignParentBottom="true"        app:layout_alignParentLeft="true"        app:layout_alignParentStart="true"        app:text="get location" />

    <Button        app:id="@+id/buttonshow"        app:layout_width="match_parent"        app:layout_height="wrap_content"        app:layout_above="@+id/button"        app:layout_alignParentLeft="true"        app:layout_alignParentStart="true"        app:text="Show location" />
</RelativeLayout>

Saturday 20 January 2018

Android Vimeo Integration

Android Vimeo Video View Integration Example/Tutorial

MainActivity.java



package com.vimeoandroidintegration;

import android.Manifest;
import android.app.Activity;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;

public class MainActivity extends Activity {

    WebView webView;
    FrameLayout customViewContainer;
    myWebChromeClient mWebChromeClient;
    WebChromeClient.CustomViewCallback customViewCallback;
    myWebViewClient mWebViewClient;
    View mCustomView;
    String vimeolink ="http://player.vimeo.com/video/24577973";
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        customViewContainer = (FrameLayout) findViewById(R.id.customViewContainer);
        webView = (WebView) findViewById(R.id.webView);

        mWebViewClient = new myWebViewClient();
        webView.setWebViewClient(mWebViewClient);
        mWebChromeClient = new myWebChromeClient();
        webView.setWebChromeClient(mWebChromeClient);
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setDomStorageEnabled(true);
        settings.setMinimumFontSize(10);
        settings.setLoadWithOverviewMode(true);
        settings.setUseWideViewPort(true);
        settings.setBuiltInZoomControls(true);
        settings.setDisplayZoomControls(false);
        webView.setVerticalScrollBarEnabled(false);

        webView.loadUrl(vimeolink+"?player_id=player&autoplay=1&title=0&byline=0&portrait=0&api=1&maxheight=480&maxwidth=800");
    }

    class myWebChromeClient extends WebChromeClient {
        private Bitmap mDefaultVideoPoster;
        private View mVideoProgressView;

        @Override        public void onShowCustomView(View view, int requestedOrientation,CustomViewCallback callback) {
            onShowCustomView(view, callback); //To change body of overridden methods use File | Settings | File Templates.        }

        @Override        public void onShowCustomView(View view,CustomViewCallback callback) {

            // if a view already exists then immediately terminate the new one            if (mCustomView != null) {
                callback.onCustomViewHidden();
                return;
            }
            mCustomView = view;
            webView.setVisibility(View.GONE);
            customViewContainer.setVisibility(View.VISIBLE);
            customViewContainer.addView(view);
            customViewCallback = callback;
        }

        @Override        public View getVideoLoadingProgressView() {

            if (mVideoProgressView == null) {
                LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
                //mVideoProgressView = inflater.inflate(R.layout.video_progress, null);            }
            return mVideoProgressView;
        }

        @Override        
public void onHideCustomView() {
            super.onHideCustomView(); 
   //To change body of overridden methods use File | Settings | File Templates.  
          if (mCustomView == null)
                return;

            webView.setVisibility(View.VISIBLE);
            customViewContainer.setVisibility(View.GONE);

            // Hide the custom view.           
 mCustomView.setVisibility(View.GONE);

            // Remove the custom view from its container.            
customViewContainer.removeView(mCustomView);
            customViewCallback.onCustomViewHidden();

            mCustomView = null;
        }
    }

    class myWebViewClient extends WebViewClient {
        @Override      
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
            url =vimeolink;
            return super.shouldOverrideUrlLoading(view, url);
        }
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"    
xmlns:app="http://schemas.android.com/apk/res-auto"    
xmlns:tools="http://schemas.android.com/tools"   
 android:layout_width="match_parent"    
android:layout_height="match_parent"    
tools:context="com.vimeoandroidintegration.MainActivity"    
android:gravity="center">

    <WebView        
android:layout_width="match_parent"        
android:layout_height="fill_parent"        
android:id="@+id/webView"        
android:layout_gravity="center"       
 android:background="#000000"        />
    <FrameLayout        
android:id="@+id/customViewContainer"        
android:layout_width="match_parent"        
android:layout_height="fill_parent"        
android:visibility="visible"        />

</RelativeLayout>

CCAvenue Payment Gateway Android Integration

CCAvenue Payment Gateway Android Integration CCAvenue payment gateway android integration using PHP RSA and Response Handling. An...