>
Bom dia
Fiz as aulas do Android com as localizações de GPS, inclusive a aula 11, funciona mas demora muitoooo!! Questão de 5/8min para encontrar o local, testei com 3 aparelhos de celular diferentes e o resultado foi o mesmo.
Alguma melhoria que eu possa fazer nesse codigo?
package com.example.cadastrocliente;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.database.sqlite.SQLiteDatabase;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.view.View;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class Vendas extends Activity implements LocationListener {
private double longitude;
private double latitude;
private LocationManager lm = null;
private ProgressDialog pd = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.vendas);
}
public void onResume() {
super.onResume();
Spinner sp = (Spinner) findViewById(R.id.spCliente);
SQLiteDatabase db = openOrCreateDatabase("cliente.db",
Context.MODE_PRIVATE, null);
Cursor cursor = db.rawQuery(
"select _id, nome from clientes order by nome", null);
String[] from = { "_id", "nome" };
int[] to = { R.id.txtId, R.id.txtNomeVenda };
SimpleCursorAdapter ad = new SimpleCursorAdapter(getBaseContext(),
R.layout.spinner_venda, cursor, from, to);
sp.setAdapter(ad);
db.close();
}
public void SalvarVenda(View v) {
try {
/*LocationManager locationmanager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE); isGPSEnabled =
locationmanager.isProviderEnabled(LocationManager.GPS_PROVIDER);
Criteria criteria = new Criteria(); String provider =
locationmanager.getBestProvider(criteria, true); Location
location = locationmanager.getLastKnownLocation(provider); //ultima localização do gps
*/
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
//String provider = "gps";
String provider = LocationManager.GPS_PROVIDER;
lm.requestLocationUpdates(provider, 3000, 0, this);
pd = ProgressDialog.show(Vendas.this, "Aguarde...", "Buscando Localização...",true,true);
} catch (Exception ex) {
Toast.makeText(getBaseContext(),
"Erro Localização: " + ex.getMessage(), Toast.LENGTH_SHORT)
.show();
}
}
public void gravarRegistro(){
try {
// Recuperando o item selecionado do Spinner
SQLiteDatabase db = openOrCreateDatabase("cliente.db",
Context.MODE_PRIVATE, null);
Spinner sp = (Spinner) findViewById(R.id.spCliente);
SQLiteCursor dados = (SQLiteCursor) sp.getAdapter().getItem(
sp.getSelectedItemPosition());
ContentValues ctv = new ContentValues();
ctv.put("cliente", dados.getInt(0));
ctv.put("produto", R.id.edProduto);
ctv.put("preco", R.id.editPreco);
ctv.put("longitude", longitude);
ctv.put("latitude", latitude);
if (db.insert("vendas", "_id", ctv) > 0) {
Toast.makeText(getBaseContext(), "Gravado com Sucesso!",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getBaseContext(), "Erro ao gravar",
Toast.LENGTH_SHORT).show();
}
db.close();
finish();
} catch (Exception ex) {
Toast.makeText(getBaseContext(), "Erro: " + ex.getMessage(),
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onLocationChanged(Location location) {
pd.dismiss();
longitude = location.getLongitude();
latitude = location.getLatitude();
lm.removeUpdates(this);
gravarRegistro();
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(getBaseContext(), "Necessário ativar o GPS para gravar a localização!",
Toast.LENGTH_LONG).show();
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 1);
}
@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
}
Alguém sabe como posso resolver esse problema??
Olá
Tente mudar o tempo de 3000 para 5000.
Mas não irá mudar muito.
O código está normal.
Se está demorando é porque o lugar que você está, pode estar com pouco acesso.
Por exemplo, os únicos celulares que sempre tive êxito em performance para pegar a localização foi o S3 e S4.