a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

Android中GPS定位的用法實例

2020-04-11 11:44:29
字體:
來源:轉載
供稿:網友

GPS定位是目前很多手機都有的功能,且非常實用。本文以實例形式講述了Android中GPS定位的用法。分享給大家供大家參考之用。具體方法如下:

一般在Android中通過GPS獲得當前位置,首先要獲得一個LocationManager實例,通過該實例的getLastKnownLocation()方法獲得第一個的位置,該方法的說明如下:

void android.location.LocationManager.requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)

provider即定位方式,可以采用GPS定位(LocationManager.GPS_PROVIDER)或者網絡定位(LocationManager.NETWORK_PROVIDER),本文是GPS定位,因此使用LocationManager.GPS_PROVIDER。minTime是位置更新的間隔時間。listener是位置改變的監聽器,自己定義一個LocationListener(),重寫onLocationChanged(),加入位置改變時的動作。

布局文件如下:

<LinearLayout 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:orientation="vertical"  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/txt_time"    style="@style/my_text"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="時間:" />   <TextView    android:id="@+id/txt_lat"    style="@style/my_text"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="經度:" />   <TextView    android:id="@+id/txt_lng"    style="@style/my_text"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="緯度:" /> </LinearLayout>

MainActivity.java文件如下:

package com.hzhi.my_gps;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.content.Context;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity {     TextView txt_time;  TextView txt_lat;  TextView txt_lng;  LocationManager lom;  Location loc;  Double lat;  Double lng;  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  Date now;  String str_date;  Timer timer;   @Override  protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);         get_con();    get_gps();         timer = new Timer(true);    timer.schedule(task, 0, 1000);  }   @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;  }     public void get_gps(){         lom = (LocationManager) getSystemService(Context.LOCATION_SERVICE);    loc = lom.getLastKnownLocation(LocationManager.GPS_PROVIDER);         if (loc != null) {      lat = loc.getLatitude();      lng = loc.getLongitude();      txt_lat.setText("緯度:" + String.valueOf(lat));      txt_lng.setText("經度:" + String.valueOf(lng));    }    else{      txt_lat.setText("緯度:未知" );      txt_lng.setText("經度:未知" );    }         Criteria criteria = new Criteria();    criteria.setAccuracy(Criteria.ACCURACY_FINE);    criteria.setAltitudeRequired(false);    criteria.setBearingRequired(false);    criteria.setCostAllowed(true);    criteria.setPowerRequirement(Criteria.POWER_LOW);    String provider = lom.getBestProvider(criteria, true);         lom.requestLocationUpdates(provider, 1000, 10, los);  }     LocationListener los = new LocationListener(){    public void onLocationChanged(Location location){      if (location != null) {        lat = location.getLatitude();        lng = location.getLongitude();        txt_lat.setText("緯度:" + String.valueOf(lat));        txt_lng.setText("經度:" + String.valueOf(lng));      }      else{        txt_lat.setText("緯度:未知" );        txt_lng.setText("經度:未知" );      }    };         public void onProviderDisabled(String provider){         };         public void onProviderEnabled(String provider){ };         public void onStatusChanged(String provider, int status,    Bundle extras){ };  };     // 獲取控件  public void get_con(){         txt_time = (TextView) findViewById(R.id.txt_time);    txt_lat = (TextView) findViewById(R.id.txt_lat);    txt_lng = (TextView) findViewById(R.id.txt_lng);  }     Handler handler = new Handler(){         public void handleMessage(Message msg){      switch (msg.what){      case 1:        get_time();        break;      }    }  };     TimerTask task = new TimerTask(){      public void run() {        Message message = new Message();          message.what = 1;          handler.sendMessage(message);      }   };     // 獲取時間  public void get_time(){         now = new Date(System.currentTimeMillis());    str_date = formatter.format(now);    txt_time.setText("時間:" + str_date);  }}

在AndroidManifest.xml文件中加入權限:

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

運行前先打開GPS衛星,運行結果如下圖所示:

讀者可以在室外信號充足的地方試試,是可以獲取GPS位置的。

希望本文所述對大家的Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久极品 | 国产成人精品免费 | 精品国产一区二区 | 韩国精品一区二区三区 | 妞干网视频 | 国产一区不卡 | 91精品综合久久久久久五月天 | 国产91久久精品一区二区 | 国产在线二区 | 久久成人免费视频 | 男女羞羞视频在线免费观看 | 视频在线亚洲 | 一区二区三区在线观看免费 | 黄91视频 | 91午夜精品一区二区三区 | 91啪影院 | 一区免费视频 | 成人精品视频 | 一区二区三区在线播放视频 | 午夜免费小视频 | 日日夜夜av | 超碰一区二区三区 | 成人网页| 国产欧美在线观看 | 国产精品一区二区三区不卡 | 国产成人免费视频网站高清观看视频 | 亚洲天堂精品在线观看 | 精品国产乱码久久久久久免费 | 国产日韩av在线 | 欧美淫视频 | 99爱视频| 奇米影| 国产精品久久久久久一区二区三区 | 色综合天天天天做夜夜夜夜做 | 国产精品一区二区三 | 亚洲h视频 | 色.com| 中文字幕第一区 | 亚洲欧洲精品一区二区三区 | 欧美一区久久 | 亚洲视频欧美视频 |