In Android it is possible to enable location services programmatically by using GoogleApiClient.
This is demo for location services
1-Add google play service to build.gradle file
compile 'com.google.android.gms:play-services:9.2.1'
2-Create Layout for this
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
This is demo for location services
1-Add google play service to build.gradle file
compile 'com.google.android.gms:play-services:9.2.1'
2-Create Layout for this
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" android:gravity="center"> <TextView android:id="@+id/enable_gps" android:text="enable gps" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:padding="10dp" android:textColor="#fff" android:textStyle="bold" android:background="#000000"/> <TextView android:id="@+id/disble_gps" android:text="disable gps" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:padding="10dp" android:textStyle="bold" android:textColor="#fff" android:background="#000"/> </LinearLayout>
3- Add permissions to manifest file
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>4- Code in activitypackage com.location; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentSender; import android.location.LocationManager; import android.net.Uri; import android.provider.Settings; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.PendingResult; import com.google.android.gms.common.api.ResultCallback; import com.google.android.gms.common.api.Status; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; import com.google.android.gms.location.LocationSettingsRequest; import com.google.android.gms.location.LocationSettingsResult; import com.google.android.gms.location.LocationSettingsStatusCodes; import java.util.List; public class MainActivity extends Activity implements View.OnClickListener{ private TextView Enable_Gps,Disable_Gps; private GoogleApiClient googleApiClient; final static int REQUEST_LOCATION = 199; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Enable_Gps=(TextView)findViewById(R.id.enable_gps); Disable_Gps=(TextView)findViewById(R.id.disble_gps); Enable_Gps.setOnClickListener(this); Disable_Gps.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.enable_gps: if(!hasGPSDevice(MainActivity.this)){ Toast.makeText(MainActivity.this,"Gps not Supported",Toast.LENGTH_SHORT).show(); } final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER) && hasGPSDevice(MainActivity.this)) { Toast.makeText(MainActivity.this,"Gps not enabled",Toast.LENGTH_SHORT).show(); enableLoc(); }else{ Toast.makeText(MainActivity.this,"Gps already enabled",Toast.LENGTH_SHORT).show(); } // turnGPSOn(); break; case R.id.disble_gps: LocationManager loc = (LocationManager) this.getSystemService( Context.LOCATION_SERVICE ); if( loc.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER ) ) { Toast.makeText( this, "GPS off", Toast.LENGTH_LONG).show(); Intent myIntent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS ); startActivity(myIntent); } /* Toast.makeText(MainActivity.this,"Disable Gps",Toast.LENGTH_SHORT).show(); if (googleApiClient != null) { if (googleApiClient.isConnected()) { googleApiClient.disconnect(); } } turnGPSOff();*/ break; } } private boolean hasGPSDevice(Context context) { final LocationManager mgr = (LocationManager) context .getSystemService(Context.LOCATION_SERVICE); if (mgr == null) return false; final List<String> providers = mgr.getAllProviders(); if (providers == null) return false; return providers.contains(LocationManager.GPS_PROVIDER); } private void enableLoc() { if (googleApiClient == null) { googleApiClient = new GoogleApiClient.Builder(this) .addApi(LocationServices.API) .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { @Override public void onConnected(Bundle bundle) { } @Override public void onConnectionSuspended(int i) { googleApiClient.connect(); } }) .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() { @Override public void onConnectionFailed(ConnectionResult connectionResult) { Log.d("Location error","Location error " + connectionResult.getErrorCode()); } }).build(); googleApiClient.connect(); LocationRequest locationRequest = LocationRequest.create(); locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); locationRequest.setInterval(30 * 1000); locationRequest.setFastestInterval(5 * 1000); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(locationRequest); builder.setAlwaysShow(true); PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings(googleApiClient, builder.build()); result.setResultCallback(new ResultCallback<LocationSettingsResult>() { @Override public void onResult(LocationSettingsResult result) { final Status status = result.getStatus(); switch (status.getStatusCode()) { case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: try { // Show the dialog by calling startResolutionForResult(), // and check the result in onActivityResult(). status.startResolutionForResult(MainActivity.this, REQUEST_LOCATION); } catch (IntentSender.SendIntentException e) { // Ignore the error. } break; } } }); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_LOCATION: switch (resultCode) { case Activity.RESULT_CANCELED: { // The user was asked to change settings, but chose not to finish(); break; } default: { break; } } break; } } }
No comments:
Post a Comment