Android 에서 GPS 포 지 셔 닝 의 용법 인 스 턴 스
일반적으로 Android 에서 GPS 를 통 해 현재 위 치 를 얻 습 니 다.먼저 LocationManager 인 스 턴 스 를 얻 고 이 인 스 턴 스 의 getLast KnownLocation()방법 을 통 해 첫 번 째 위 치 를 얻 습 니 다.이 방법 에 대한 설명 은 다음 과 같 습 니 다.
void android.location.LocationManager.requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
provider 는 포 지 셔 닝 방식 으로 GPS 포 지 셔 닝(LocationManager.GPSPROVIDER)또는 네트워크 포 지 셔 닝(LocationManager.NETWORKPROVIDER)본 고 는 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 위 치 를 얻 을 수 있다.
이 글 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.