アップデート: -
まず、onConnected() を呼び出す OnCreate() で LocationClient を定義する必要があります ...
このように locationClient を定義します..
locationClient = new LocationClient(this, this, this);
locationClient.connect();
onConnected() で..このようにロケーションの更新をリクエストするだけです..
@Override
public void onConnectionFailed(ConnectionResult arg0) {
// TODO Auto-generated method stub
}
@Override
public void onConnected(Bundle arg0) {
src = locationClient.getLastLocation();
System.out.println("======================location 1==" + src);
LocationRequest lrequest = new LocationRequest();
lrequest.setInterval(0);
lrequest.setSmallestDisplacement(0);
lrequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationClient.requestLocationUpdates(lrequest, new LocationListener() {
@Override
public void onLocationChanged(Location arg0) {
System.out.println("======================location 1233==" +
arg0);
/*Toast.makeText(getApplicationContext(),
"Location is 12" + arg0.getLatitude(),
Toast.LENGTH_SHORT).show();*/
}
});
}
@Override
public void onDisconnected() {
// TODO Auto-generated method stub
}
****************前************
あなたの主な関心事があなたの場所の更新を継続的に見つけることである場合..その後、Uは以下を使用できます.
これを使用:: (これにより、GPS に基づいてユーザーの位置が定期的に更新されます)
For OnCreate()::
----------------------
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.speed);
initui();
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
provider = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!provider){
String text = "ENABLE GPS TO ACCESS SPEEDO METER!";
Toast.makeText(Speedometer.this, text, Toast.LENGTH_LONG).show();
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
if (location != null) {
/*lat = (int) (location.getLatitude() * 1E6);
longi = (int)(location.getLongitude() * 1E6);*/
String text = "Got Coordinates";
Toast.makeText(Speedometer.this, text, Toast.LENGTH_SHORT).show();
}
//lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 2, this);
}
Now use onLocationChanged()
---------------------------
@Override
public void onLocationChanged(Location loc) {
// TODO Auto-generated method stub
float distance = 0;
//float prevDis = 0;
try{
if(prevLoc==null)
{
prevLoc = loc;
//Toast.makeText(MainActivity.this, "PrevLOC" + prevLoc, Toast.LENGTH_SHORT).show();
Log.i("Main Activity", "Prev LOC" + prevLoc);
}
else {
try{
Runtime r = Runtime.getRuntime();
r.gc();
}catch(Exception e){
e.printStackTrace();
}
// When prevLoc is not null
Log.i("Main Activity", "Prev LOC in new LOC BLAH BLAH BLAH" + prevLoc);
newLoc = loc;
//Toast.makeText(MainActivity.this, "NewLoc" + newLoc, Toast.LENGTH_SHORT).show();
Log.i("Main Activity", "New LOC" + newLoc);
distance = prevLoc.distanceTo(newLoc);
Log.i("Main Activity", "New DISTANCE DISTANCE DISTANCE DISTANCE DISTANCE DISTANCE " + distance);
distance = (float) (3.6*distance);
speed = distance;
prevLoc = newLoc;
Log.i("Main Activity", "New Coordinates set to PrevLoc" + prevLoc);
}
}catch(Exception e){
e.printStackTrace();
}
if(speed <= 160){
try
{
mView.calculateAngleOfDeviation(speed);
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}else
{
Toast.makeText(Speedometer.this, "CONTROL SPEED", Toast.LENGTH_SHORT).show();
}
}
You can also utilize same in your activity ::
-----------------------------------------------
@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
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
stopListening();
super.onPause();
}
private void stopListening() {
// TODO Auto-generated method stub
try{
if(lm != null){
lm.removeUpdates(this);
}else{
lm.removeUpdates(this);
}
}catch(Exception e){
e.printStackTrace();
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
startListening();
}
private void startListening() {
// TODO Auto-generated method stub
try{
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this);
}catch(Exception e){
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
lm.removeUpdates(Speedometer.this);
//System.exit(0);
finish();
}
Finally there's always a lot of way to do single thing.
Hope it helps...
Cheers!