GPSを使う

3842 ワード

xmlで
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    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" >

    <EditText
        android:id="@+id/et"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:cursorVisible="false"
		android:editable="false"
        />

</LinearLayout>

MainActivityで
package com.example.gps;

import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.opengl.ETC1;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.EditText;

public class MainActivity extends Activity {
	
	LocationManager locationManager;
	EditText editText;

	
	LocationListener ll = new LocationListener() {
		
		@Override
		public void onStatusChanged(String provider, int status, Bundle extras) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onProviderEnabled(String provider) {
			//      
			Location location = locationManager.getLastKnownLocation(provider);
			updateView(location);//      
		}
		
		@Override
		public void onProviderDisabled(String provider) {
			// TODO Auto-generated method stub
			updateView(null);
		}
		
		@Override
		public void onLocationChanged(Location location) {
			// TODO Auto-generated method stub
			updateView(location);
		}
	};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		editText = (EditText) findViewById(R.id.et);
		locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
		
		String bestProvider = locationManager.getBestProvider(getCriteria(), true);//      
		Location location = locationManager.getLastKnownLocation(bestProvider);//      
		
		updateView(location);//      
		
		//locationManager.requestLocationUpdates(provider, minTime, minDistance, listener)
		locationManager.requestLocationUpdates(bestProvider, 5000, 8, ll);//     
		
		
	}

	//    
	public Criteria getCriteria() {
		
		Criteria criteria = new Criteria();
		criteria.setAccuracy(Criteria.ACCURACY_COARSE);//       
		criteria.setSpeedRequired(false);//        
		criteria.setCostAllowed(false);//      
		criteria.setBearingRequired(false);//      
		criteria.setAltitudeRequired(false);//      
		criteria.setPowerRequirement(Criteria.POWER_LOW);//         
		
		return criteria;
		
	}
	//  editText      
	public void updateView(Location newLocation) {
		if (newLocation != null) {
			editText.setText("        
: "); editText.append(String.valueOf(newLocation.getLatitude()));// editText.append("
:"); editText.append(String.valueOf(newLocation.getLongitude()));// } else { // , editText editText.getEditableText().clear(); } } }

インベントリファイル
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

シミュレータを使用する場合は、DDMSのEmulator ControlでLocation Controlに座標sendを入力すればよいので、まずプロジェクトを実行してください