>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Erro com location


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

}

}



6 Respostas


dados do arquivo (AndroidManifest.xml)

package="br.com.rptec.vendas"
android:versionCode="1"
android:versionName="1.0" >

android:minSdkVersion="8"
android:targetSdkVersion="8" />



android:allowBackup="true"
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