지도에 제 경도와 위도를 표시하기 위해서 위도와 경도를 받아오려고 간단하게 자봤습니다.
package com.example.googleintenttest;
import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
double latitude, longitude;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toast.makeText(this, "start", Toast.LENGTH_SHORT).show();
LocationManager locationManager;
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(true);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
latitude = (location.getLatitude() * 1000000);
// 경도얻기
// longitude = (location.getLongitude() * 1000000);
//
setContentView(R.layout.activity_main);
Button bt1 = (Button) findViewById(R.id.webbrowser);
Button bt2 = (Button) findViewById(R.id.websearch);
Button bt3 = (Button) findViewById(R.id.dial);
Button bt4 = (Button) findViewById(R.id.call);
Button bt5 = (Button) findViewById(R.id.map);
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
IntentsUtils.invokeWebRowser(MainActivity.this);
}
});
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
IntentsUtils.invokeWebSearch(MainActivity.this);
}
});
bt3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
IntentsUtils.dial(MainActivity.this);
}
});
bt4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
IntentsUtils.call(MainActivity.this);
}
});
bt5.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
IntentsUtils.map(MainActivity.this);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
실제로 프로그램을 적었을때는 오류가 없다고 나오는데 실행을 해서 돌려 보면 핸드폰에서 실행도 못하고 바로 종료 됨니다.
주석을 달고 오류난 위치를 찾으니 굵은 글씨로 체크된 부분에서 오류가 나는데
double형으로 자료를 받는것이 문제가 되나요 ?
여기서 latitude, longitude 보시면 변수 초기화 안되있는데.
값을
latitude = (location.getLatitude() * 1000000);으로 받아오지 못할때.
그러니까 GPS를 아직 잡지 못할때. 에러가 나는경우가 있습니다.