<i id='Xqe7J'><tr id='Xqe7J'><dt id='Xqe7J'><q id='Xqe7J'><span id='Xqe7J'><b id='Xqe7J'><form id='Xqe7J'><ins id='Xqe7J'></ins><ul id='Xqe7J'></ul><sub id='Xqe7J'></sub></form><legend id='Xqe7J'></legend><bdo id='Xqe7J'><pre id='Xqe7J'><center id='Xqe7J'></center></pre></bdo></b><th id='Xqe7J'></th></span></q></dt></tr></i><div id='Xqe7J'><tfoot id='Xqe7J'></tfoot><dl id='Xqe7J'><fieldset id='Xqe7J'></fieldset></dl></div>
    <legend id='Xqe7J'><style id='Xqe7J'><dir id='Xqe7J'><q id='Xqe7J'></q></dir></style></legend>
    <tfoot id='Xqe7J'></tfoot>
    • <bdo id='Xqe7J'></bdo><ul id='Xqe7J'></ul>

    1. <small id='Xqe7J'></small><noframes id='Xqe7J'>

    2. 使用 GPS 获取用户的当前位置

      时间:2023-09-02

      • <legend id='AIrRV'><style id='AIrRV'><dir id='AIrRV'><q id='AIrRV'></q></dir></style></legend>

              <tbody id='AIrRV'></tbody>
            <i id='AIrRV'><tr id='AIrRV'><dt id='AIrRV'><q id='AIrRV'><span id='AIrRV'><b id='AIrRV'><form id='AIrRV'><ins id='AIrRV'></ins><ul id='AIrRV'></ul><sub id='AIrRV'></sub></form><legend id='AIrRV'></legend><bdo id='AIrRV'><pre id='AIrRV'><center id='AIrRV'></center></pre></bdo></b><th id='AIrRV'></th></span></q></dt></tr></i><div id='AIrRV'><tfoot id='AIrRV'></tfoot><dl id='AIrRV'><fieldset id='AIrRV'></fieldset></dl></div>

            <small id='AIrRV'></small><noframes id='AIrRV'>

              <bdo id='AIrRV'></bdo><ul id='AIrRV'></ul>
              • <tfoot id='AIrRV'></tfoot>
                本文介绍了使用 GPS 获取用户的当前位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                我是安卓新手.我目前正在开发一个 android 项目,我需要使用 GPS 获取用户的当前位置.但是我的代码不能正常工作.

                I'm new in android. I'm currently working on an android project in witch I need to get user's current location using GPS. But my code is not working properly.

                java代码

                package com.example.checkinapp;
                
                    import android.app.Activity;
                    import android.content.Context;
                    import android.location.Location;
                    import android.location.LocationListener;
                    import android.location.LocationManager;
                    import android.os.Bundle;
                    import android.widget.TextView;
                
                    public class MainActivity extends Activity 
                    {
                
                        TextView textlat;
                        TextView textlong;
                
                        @Override
                        protected void onCreate(Bundle savedInstanceState) 
                        {
                            super.onCreate(savedInstanceState);
                            setContentView(R.layout.activity_main);
                            textlat = (TextView)findViewById(R.id.textlat);
                            textlong = (TextView)findViewById(R.id.textlong);
                
                            LocationManager lm =   (LocationManager)getSystemService(Context.LOCATION_SERVICE);
                            LocationListener ll = new mylocationlistener();
                            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
                        }
                        class mylocationlistener implements LocationListener{
                
                            @Override
                            public void onLocationChanged(Location location) {
                
                                if(location!=null)
                                {
                                    double lat = location.getLatitude();
                                    double lng = location.getLongitude();
                
                                    textlat.setText(Double.toString(lat));
                                    textlong.setText(Double.toString(lng));
                                }
                            }
                
                            @Override
                            public void onProviderDisabled(String provider) {
                                // TODO Auto-generated method stub
                
                            }
                            @Override
                            public void onProviderEnabled(String provider) {
                                // TODO Auto-generated method stub
                            }
                            @Override
                            public void onStatusChanged(String provider, int status,
                                    Bundle extras) {
                                // TODO Auto-generated method stub
                            }
                        }
                    }
                

                activity_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"
                android:paddingBottom="@dimen/activity_vertical_margin"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                tools:context=".MainActivity" >
                
                <TextView
                    android:id="@+id/textlat"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_marginTop="16dp"
                    android:text=""
                    android:ems="10">
                </TextView>
                
                <TextView
                    android:id="@+id/textlong"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="25dp"
                    android:text=""
                    android:ems="10">
                </TextView>
                
                </RelativeLayout>
                

                AndroidMainfest.xml

                <?xml version="1.0" encoding="utf-8"?>
                <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                package="com.example.checkinapp"
                android:versionCode="1"
                android:versionName="1.0" >
                
                <uses-sdk
                    android:minSdkVersion="8"
                    android:targetSdkVersion="17" />
                <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
                
                <application
                    android:allowBackup="true"
                    android:icon="@drawable/ic_launcher"
                    android:label="@string/app_name"
                    android:theme="@style/AppTheme" >
                    <activity
                        android:name="com.example.checkinapp.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>
                

                我正在尝试将用户的纬度和经度显示到文本视图.但我没有得到结果.谢谢.

                I'm trying to display the latitude and longitude of user to a textview. But I'm not getting the result. Thanks.

                推荐答案

                使用这个类在你的应用程序中获取当前位置,这对我来说非常有用

                Use this class for getting Current Location in your App this is perfectly works for me

                /**
                 *         Gps location tracker class
                 *         to get users location and other information related to location
                 */
                public class GpsLocationTracker extends Service implements LocationListener
                {
                
                    /**
                     * context of calling class
                     */
                    private Context mContext;
                
                    /**
                     * flag for gps status
                     */
                    private boolean isGpsEnabled = false;
                
                    /**
                     * flag for network status
                     */
                    private boolean isNetworkEnabled = false;
                
                    /**
                     * flag for gps
                     */
                    private boolean canGetLocation = false;
                
                    /**
                     * location
                     */
                    private Location mLocation;
                
                    /**
                     * latitude
                     */
                    private double mLatitude;
                
                    /**
                     * longitude
                     */
                    private double mLongitude;
                
                    /**
                     * min distance change to get location update
                     */
                    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATE = 10;
                
                    /**
                     * min time for location update
                     * 60000 = 1min
                     */
                    private static final long MIN_TIME_FOR_UPDATE = 60000;
                
                    /**
                     * location manager
                     */
                    private LocationManager mLocationManager;
                
                
                    /**
                     * @param mContext constructor of the class
                     */
                    public GpsLocationTracker(Context mContext) {
                
                        this.mContext = mContext;
                        getLocation();
                    }
                
                
                    /**
                     * @return location
                     */
                    public Location getLocation() {
                
                        try {
                
                            mLocationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
                
                            /*getting status of the gps*/
                            isGpsEnabled = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
                
                            /*getting status of network provider*/
                            isNetworkEnabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
                
                            if (!isGpsEnabled && !isNetworkEnabled) {
                
                                /*no location provider enabled*/
                            } else {
                
                                this.canGetLocation = true;
                
                                /*getting location from network provider*/
                                if (isNetworkEnabled) {
                
                                    mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_FOR_UPDATE, MIN_DISTANCE_CHANGE_FOR_UPDATE, this);
                
                                    if (mLocationManager != null) {
                
                                        mLocation = mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                
                                        if (mLocation != null) {
                
                                            mLatitude = mLocation.getLatitude();
                
                                            mLongitude = mLocation.getLongitude();
                                        }
                                    }
                                    /*if gps is enabled then get location using gps*/
                                    if (isGpsEnabled) {
                
                                        if (mLocation == null) {
                
                                            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_FOR_UPDATE, MIN_DISTANCE_CHANGE_FOR_UPDATE, this);
                
                                            if (mLocationManager != null) {
                
                                                mLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                
                                                if (mLocation != null) {
                
                                                    mLatitude = mLocation.getLatitude();
                
                                                    mLongitude = mLocation.getLongitude();
                                                }
                
                                            }
                                        }
                
                                    }
                                }
                            }
                
                        } catch (Exception e) {
                
                            e.printStackTrace();
                        }
                
                        return mLocation;
                    }
                
                    /**
                     * call this function to stop using gps in your application
                     */
                    public void stopUsingGps() {
                
                        if (mLocationManager != null) {
                
                            mLocationManager.removeUpdates(GpsLocationTracker.this);
                
                        }
                    }
                
                    /**
                     * @return latitude
                     *         <p/>
                     *         function to get latitude
                     */
                    public double getLatitude() {
                
                        if (mLocation != null) {
                
                            mLatitude = mLocation.getLatitude();
                        }
                        return mLatitude;
                    }
                
                    /**
                     * @return longitude
                     *         function to get longitude
                     */
                    public double getLongitude() {
                
                        if (mLocation != null) {
                
                            mLongitude = mLocation.getLongitude();
                
                        }
                
                        return mLongitude;
                    }
                
                    /**
                     * @return to check gps or wifi is enabled or not
                     */
                    public boolean canGetLocation() {
                
                        return this.canGetLocation;
                    }
                
                    /**
                     * function to prompt user to open
                     * settings to enable gps
                     */
                    public void showSettingsAlert() {
                
                        AlertDialog.Builder mAlertDialog = new AlertDialog.Builder(new ContextThemeWrapper(mContext, R.style.AppTheme));
                
                        mAlertDialog.setTitle("Gps Disabled");
                
                        mAlertDialog.setMessage("gps is not enabled . do you want to enable ?");
                
                        mAlertDialog.setPositiveButton("settings", new OnClickListener() {
                
                            public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                Intent mIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                                mContext.startActivity(mIntent);
                            }
                        });
                
                        mAlertDialog.setNegativeButton("cancle", new OnClickListener() {
                
                            public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                dialog.cancel();
                
                            }
                        });
                
                        final AlertDialog mcreateDialog = mAlertDialog.create();
                        mcreateDialog.show();
                    }
                
                    @Override
                    public IBinder onBind(Intent arg0) {
                        // TODO Auto-generated method stub
                        return null;
                    }
                
                    public void onLocationChanged(Location location) {
                        // TODO Auto-generated method stub
                
                    }
                
                    public void onProviderDisabled(String provider) {
                        // TODO Auto-generated method stub
                
                    }
                
                    public void onProviderEnabled(String provider) {
                        // TODO Auto-generated method stub
                
                    }
                
                    public void onStatusChanged(String provider, int status, Bundle extras) {
                        // TODO Auto-generated method stub
                
                    }
                
                }
                

                &这样使用它

                GpsLocationTracker mGpsLocationTracker = new GpsLocationTracker(YourActivity.this);
                
                    /**
                         * Set GPS Location fetched address
                         */
                        if (mGpsLocationTracker.canGetLocation()) 
                        {
                            latitude = mGpsLocationTracker.getLatitude();
                            longitude = mGpsLocationTracker.getLongitude();
                            Log.i(TAG, String.format("latitude: %s", latitude));
                            Log.i(TAG, String.format("longitude: %s", longitude));
                
                        } 
                        else 
                        {
                            mGpsLocationTracker.showSettingsAlert();
                        }
                

                &不要忘记在 Manifest.xml 中设置权限

                & don't forget to set permission in Manifest.xml

                <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
                <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
                <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
                

                这篇关于使用 GPS 获取用户的当前位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:requestLocationUpdate() 抛出的 IllegalArgumentException 下一篇:帮助从 iPhone 中的纬度和经度计算 X 和 Y

                相关文章

                最新文章

                <legend id='a4wys'><style id='a4wys'><dir id='a4wys'><q id='a4wys'></q></dir></style></legend>
              • <small id='a4wys'></small><noframes id='a4wys'>

                • <bdo id='a4wys'></bdo><ul id='a4wys'></ul>

                  1. <i id='a4wys'><tr id='a4wys'><dt id='a4wys'><q id='a4wys'><span id='a4wys'><b id='a4wys'><form id='a4wys'><ins id='a4wys'></ins><ul id='a4wys'></ul><sub id='a4wys'></sub></form><legend id='a4wys'></legend><bdo id='a4wys'><pre id='a4wys'><center id='a4wys'></center></pre></bdo></b><th id='a4wys'></th></span></q></dt></tr></i><div id='a4wys'><tfoot id='a4wys'></tfoot><dl id='a4wys'><fieldset id='a4wys'></fieldset></dl></div>
                    <tfoot id='a4wys'></tfoot>