>
Quando estou tentando rodar o aplicativo em meu nexus 4, não funcionar, porém quando comento a linhas que faz referência a localização o aplicativo funciona.
classe NovaVendaActivity.java
package br.com.rptec.vendas;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.database.sqlite.SQLiteDatabase;
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.widget.EditText;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class NovaVendaActivity extends Activity implements LocationListener {
private double la;
private double lo;
private EditText nome_vendedor,nome_cliente;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.nova_venda);
//conexao com banco de dados
SQLiteDatabase db = openOrCreateDatabase("vendas_nova.db", Context.MODE_PRIVATE, null);
Cursor cursor = db.rawQuery("SELECT * FROM produtos order BY nome ASC", null);
String[] from = { "_id","nome","preco" };
int[] to = {R.id.txvid,R.id.txvnome,R.id.txvpreco};
Spinner stProduto = (Spinner) findViewById(R.id.sbProdutos);
SimpleCursorAdapter ad = new SimpleCursorAdapter(getBaseContext(),R.layout.spinner,cursor,from,to);
stProduto.setAdapter(ad);
db.close();
}
public void salvarVenda(View v){
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
la = location.getLatitude();
lo = location.getLongitude();
nome_vendedor = (EditText) findViewById(R.id.nome_vendedor);
nome_cliente = (EditText) findViewById(R.id.nome_cliente);
SQLiteDatabase db = openOrCreateDatabase("vendas_nova.db", Context.MODE_PRIVATE, null);
//recuperando dados do spinner
Spinner stProduto = (Spinner) findViewById(R.id.sbProdutos);
SQLiteCursor dados = (SQLiteCursor) stProduto.getAdapter().getItem(stProduto.getSelectedItemPosition());
ContentValues ctv = new ContentValues();
ctv.put("produto",dados.getInt(0));
ctv.put("preco",dados.getDouble(2));
ctv.put("nome_vendedor",nome_vendedor.getText().toString());
ctv.put("nome_cliente",nome_cliente.getText().toString());
ctv.put("la",la);
ctv.put("lo",lo);
if(db.insert("vendas", "_id", ctv) > 0){
Toast.makeText(getBaseContext(), "Sucesso", Toast.LENGTH_SHORT).show();
}
db.close();
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
//la = location.getLatitude();
//lo = location.getLongitude();
}
@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
}
}
dados do arquivo (AndroidManifest.xml)
android:versionCode="1"
android:versionName="1.0" >
android:targetSdkVersion="8" />
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
Ramon
Veja a última aula do Android Online.
Lá é mostrado a solução.
quando eu rodo a aplicacao no meu celular moto x, depois de muito tempo ele consegue localizar minha posição, mas quando rodo no emulador fica horas e horas buscando a localização ate eu desistir e fecha a aplicação, teria algum erro no meu codigo??
package br.com.informatos.ovagabundo;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.database.sqlite.SQLiteDatabase;
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.widget.EditText;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class NovaVendaActivity extends Activity implements LocationListener {
private double la;
private double lo;
LocationManager lm = null;
ProgressDialog pgd = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nova_venda);
Spinner spProdutos = (Spinner) findViewById(R.id.spProdutos);
SQLiteDatabase db = openOrCreateDatabase("vendas.db",Context.MODE_PRIVATE, null);
Cursor cursor = db.rawQuery("SELECT * FROM produtos ORDER BY nome ASC",null);
String[] from = { "_id", "nome", "preco" };
int[] to = { R.id.txvId, R.id.txvProduto, R.id.txvPreco };
Toast.makeText(getBaseContext(), "entrou", Toast.LENGTH_LONG).show();
SimpleCursorAdapter ad = new SimpleCursorAdapter(getBaseContext(),
R.layout.spinner, cursor, from, to, 1);
spProdutos.setAdapter(ad);
db.close();
}
public void Salvar_Click(View view) {
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = lm.getBestProvider(criteria, false);
lm.requestLocationUpdates(provider, 1000, 0, this);
pgd = ProgressDialog.show(NovaVendaActivity.this, "Aguarde...", "Buscando Localização...", true, false, null);
}
@Override
public void onLocationChanged(Location location) {
pgd.dismiss();
EditText txtcliente = (EditText)findViewById(R.id.txtCliente);
la = location.getAltitude();
lo = location.getLongitude();
SQLiteDatabase db = openOrCreateDatabase("vendas.db",
Context.MODE_PRIVATE, null);
Spinner spProdutos = (Spinner) findViewById(R.id.spProdutos);
SQLiteCursor dados = (SQLiteCursor) spProdutos.getAdapter().getItem(
spProdutos.getSelectedItemPosition());
ContentValues ctv = new ContentValues();
ctv.put("produto", dados.getInt(0));
ctv.put("preco", dados.getDouble(2));
ctv.put("cliente", txtcliente.toString());
ctv.put("la", la);
ctv.put("lo", lo);
if (db.insert("vendas", "_id", ctv) > 0) {
Toast.makeText(getBaseContext(), "Sucesso", Toast.LENGTH_LONG).show();
Toast.makeText(getBaseContext(), ctv.toString(), Toast.LENGTH_LONG).show();
}
db.close();
lm.removeUpdates(this);
}
@Override
public void onProviderDisabled(String arg0) {
Toast.makeText(getBaseContext(), "É preciso Ligar o GPS para utilizar essa Funcionalidade...", Toast.LENGTH_LONG).show();
}
@Override
public void onProviderEnabled(String arg0) {
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
}
}
Ola Leandro
ali no seu codigo ao inves getAltitude nao seria getLatitude......
Ola Andre
realmente o codigo estava errado, por isso demorava tanto carregar a localização no celular, mas mesmo com a correção,
ainda nao carrega no emulador, mostra o icone do gps e nada de carregar...
mas vc esta usando o emulador para capturar a localizacao??
naum use o emulador ... use o celular para capturar a localizacao....
ou faça q nem o topico aqui
http://rlsystem.com.br/forum/android/542-retornar-latitude-e-longitude-do-listview-no-mapa#top