利用手机的GPS获取经纬度

package com.example.aman.whereami;

import android.Manifest;
import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;
import java.io.Serializable;
import java.nio.Buffer;
import java.util.List;

import butterknife.ButterKnife;
import butterknife.InjectView;

public class Activity1 extends AppCompatActivity implements LocationListener {
String TAG = Activity1.class.getSimpleName();
    TextView txtLocation, result;
    LocationManager locationManager;
    double latitude, longitude;
    NotificationManager notificationManager;
    NotificationCompat.Builder builder;
    Notification notification;
    ProgressDialog progressDialog;
    void initViews() {
        txtLocation = (TextView) findViewById(R.id.textViewlocation);
        result = (TextView) findViewById(R.id.result);
    }

    void showNotification() {
        notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            builder = new NotificationCompat.Builder(this);
            builder.setContentTitle("Location ");
            builder.setContentText("Location is: " + latitude + " - " + longitude);
            builder.setSmallIcon(R.drawable.mapspink);
            builder.setDefaults(Notification.DEFAULT_ALL);
            notification = builder.build();
            notificationManager.notify(420, notification);
        Intent intent = new Intent(Activity1.this, Activity2.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 222, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        builder.setContentIntent(pendingIntent);

    }

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

        initViews();
        progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Loading..");

        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
            locationManager = null;
           Toast.makeText(Activity1.this, "请打开GPS开关", Toast.LENGTH_LONG).show();
            Intent i = new Intent();
            i.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(i);
  }

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, this);
        locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        Toast.makeText(getApplicationContext(), "gps", Toast.LENGTH_LONG).show();
        progressDialog.show();

    }

    @Override
    public void onLocationChanged(Location location) {

        latitude = location.getLatitude();
        longitude = location.getLongitude();
        txtLocation.setText("Location is:" + latitude + "-" + longitude);

        try {
            Geocoder geocoder = new Geocoder(this);
            List<Address> adrslist = geocoder.getFromLocation(latitude, longitude, 5);

            if (adrslist != null && adrslist.size() > 0) {
                Address address = adrslist.get(0);
                StringBuffer buffer = new StringBuffer();

                for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
                    buffer.append(address.getAddressLine(i) + "\n");
                }
                txtLocation.setText("Address:" + buffer.toString());
            }


        } catch (IOException e) {
            e.printStackTrace();
        }
        showNotification();
        progressDialog.dismiss();
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            locationManager.removeUpdates(this);
            return;
        }
        locationManager.removeUpdates(this);


    }




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

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onProviderDisabled(String provider) {

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值