Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Узнать позицию по GPS
#1
Как переделать код, чтобы он брал всегда новые позиции при открытии приложения?
Он просто сейчас определяет твои координаты,
но грузит их из последних,
а мне надо постояно новые при запуске приложения или кнопочке обновит. Приложения на андроиде

Код:
package com.example.coomap;

import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener, LocationListener{
Button btn_get;
EditText et1,et2;
TextView tx1,tx2;

String x,y;
public static final String MYLOG = "My logs";
private LocationManager locMan;
private String provider;

public static double latitude; //широта
public static double longitude; //долгота
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tx1 = (TextView) findViewById(R.id.textView1);
tx2 = (TextView) findViewById(R.id.textView2);


btn_get = (Button) findViewById(R.id.button2);
btn_get.setOnClickListener(this);



locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locMan.getBestProvider(criteria, false);
Location location = locMan.getLastKnownLocation(provider);

if (location!=null){
onLocationChanged(location);
}
else
{
Toast.makeText(getApplicationContext(), "Location unavailable", Toast.LENGTH_LONG).show();
}


//Toast.makeText(getApplicationContext(),
//"LOCATION = "+location+"\nPROVIDER = "+provider,
//Toast.LENGTH_LONG).show();
}
public void onClick(View v) {

//Intent intent;
x = tx1.getText().toString();
y = tx2.getText().toString();

switch(v.getId()){

case R.id.button2:
tx1.setText(latitude+"");
tx2.setText(longitude+"");
Toast.makeText(getApplicationContext(), "Клик", Toast.LENGTH_LONG).show();
break;
}

}
public void onLocationChanged(Location loc) {
latitude = loc.getLatitude();
longitude = loc.getLongitude();
}
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(), "GPS is disabled", Toast.LENGTH_LONG).show();// не работает
}
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(), "GPS works", Toast.LENGTH_LONG).show(); // работает
}
public void onStatusChanged(String provider, int status, Bundle extras) {

}


@Override
protected void onPause() {
super.onPause();
locMan.removeUpdates(this);
}

@Override
protected void onResume() {
super.onResume();
locMan.requestLocationUpdates(provider, 100, 1, this);
}

}
Ответ
#2
lonk Написал:Как переделать код, чтобы он брал всегда новые позиции при открытии приложения?
Он просто сейчас определяет твои координаты,
но грузит их из последних,
а мне надо постояно новые при запуске приложения или кнопочке обновит. Приложения на андроиде

Код:
package com.example.coomap;

import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener, LocationListener{
Button btn_get;
EditText et1,et2;
TextView tx1,tx2;

String x,y;
public static final String MYLOG = "My logs";
private LocationManager locMan;
private String provider;

public static double latitude; //широта
public static double longitude; //долгота
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tx1 = (TextView) findViewById(R.id.textView1);
tx2 = (TextView) findViewById(R.id.textView2);


btn_get = (Button) findViewById(R.id.button2);
btn_get.setOnClickListener(this);



locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locMan.getBestProvider(criteria, false);
Location location = locMan.getLastKnownLocation(provider);

if (location!=null){
onLocationChanged(location);
}
else
{
Toast.makeText(getApplicationContext(), "Location unavailable", Toast.LENGTH_LONG).show();
}


//Toast.makeText(getApplicationContext(),
//"LOCATION = "+location+"\nPROVIDER = "+provider,
//Toast.LENGTH_LONG).show();
}
public void onClick(View v) {

//Intent intent;
x = tx1.getText().toString();
y = tx2.getText().toString();

switch(v.getId()){

case R.id.button2:
tx1.setText(latitude+"");
tx2.setText(longitude+"");
Toast.makeText(getApplicationContext(), "Клик", Toast.LENGTH_LONG).show();
break;
}

}
public void onLocationChanged(Location loc) {
latitude = loc.getLatitude();
longitude = loc.getLongitude();
}
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(), "GPS is disabled", Toast.LENGTH_LONG).show();// не работает
}
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(), "GPS works", Toast.LENGTH_LONG).show(); // работает
}
public void onStatusChanged(String provider, int status, Bundle extras) {

}


@Override
protected void onPause() {
super.onPause();
locMan.removeUpdates(this);
}

@Override
protected void onResume() {
super.onResume();
locMan.requestLocationUpdates(provider, 100, 1, this);
}

}

Место
PHP код:
<?php 
Location location
= locMan.getLastKnownLocation(provider);
заюзай это

http://developer.android.com/reference/a....Looper%29

В твоем случаи это будет так:
PHP код:
<?php 
locMan
.requestSingleUpdate(provider, this, null);
Ответ
#3
http://stackoverflow.com/questions/15675...d-location
Ответ
#4
Обрати внимание, что requestSingleUpdate можно юзать только при API Level >= 9

Добавлено через 2 минуты
p.s.

PHP код:
<?php 
if (location!=null){
onLocationChanged(location);
}
else
{
Toast.makeText(getApplicationContext(), "Location unavailable", Toast.LENGTH_LONG).show();
}

Можешь вообще удалить, если будет юзать locMan.requestSingleUpdate(provider, this, null);
Ответ
#5
Всем спасибо за помощь. Smile
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Подскажите, как узнать объём свободной памяти у java VM Fronex 4 5,549 11-20-2010, 07:30 AM
Последний пост: Deazer

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)