>
Meu projeto não esta querendo entrar no onLocationChanged e esta entrando no onProviderDisabled. Obs.: Meu GPS esta ativado
package com.example.vendas;
import java.security.Provider;
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.ProgressBar;
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
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nova_venda);
//Recupera o Spinner
Spinner spProdutos = (Spinner)findViewById(R.id.spProdutos);
//Conecta ao banco
SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);
//Executa a pesquina no banco
Cursor cursor = db.rawQuery("SELECT * FROM produtos ORDER BY nome ASC", null);
//Pega o resultado da pesquisa no banco
String[] from = {"_id", "nome", "preco"};
int[] to = {R.id.txvId, R.id.txvNome, R.id.txvPreco};
//Joga os dados no spinner
SimpleCursorAdapter ad = new SimpleCursorAdapter(getBaseContext(), R.layout.spinner, cursor, from, to);
spProdutos.setAdapter(ad);
db.close();
/**
Button btSalvar = (Button)findViewById(R.id.btSalvar);
btSalvar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Ação
}
});**/
}
public void Salvar_CLick (View view){
/* Pegar Ultima localização
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();
*/
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
String provider = "gps";
lm.requestLocationUpdates(provider, 4000, 0, this);
}
@Override
public void onLocationChanged(Location location) {
try{
la = location.getLatitude();
lo = location.getLongitude();
//******************************
//Conecta ao banco
SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);
//Recupera o Spinner
Spinner spProdutos = (Spinner)findViewById(R.id.spProdutos);
SQLiteCursor dados = (SQLiteCursor)spProdutos.getAdapter().getItem(spProdutos.getSelectedItemPosition());
//EditText txvCliente = (EditText)findViewById(R.id.txvCliente);
ContentValues ctv = new ContentValues();
ctv.put("produto", dados.getInt(0));
ctv.put("preco", dados.getDouble(2));
//ctv.put("cliente", txvCliente.getText().toString());
ctv.put("la", la);
ctv.put("lo", lo);
if(db.insert("vendas", "_id", ctv) > 0){
Toast.makeText(getBaseContext(), "Sucesso ao gravar", Toast.LENGTH_SHORT).show();
};
//db.close();
}catch(Exception ex){
Toast.makeText(getBaseContext(), "Erro ao gravar", Toast.LENGTH_SHORT).show();
}
//******************************
lm.removeUpdates(this);
finish();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(getBaseContext(), "Ligue o GPS", Toast.LENGTH_SHORT).show();
}
}
Ola José
vc esta testando do seu celular ou do emulador?
Do celular, Motorola Razr D3 (XT920) com Android Versão 4.4.2
não mostra nem sucesso ao gravar nem erro ao gravar?
So mostra a mensagem "Ligue o GPS" que eu coloquei no metodo onProviderDisabled.
Corrigindo a postagem anterior, na verdade ao clicar em salvar ele esta aparecendo o icone do GPS na parte superior da tela do celular, porem o aplicativo não aparece nenhuma mensagem e nem grava os dados no banco. Não esta entrando no metodo "onLocationChanged".
Problema solucionado. Ao executar o aplicativo em outro local físico, o mesmo funcionou corretamente encontrando a localização, entrou no "onLocationChanged" e salvou os dados da venda no banco.
import java.security.Provider;
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.ProgressBar;
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
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nova_venda);
//Recupera o Spinner
Spinner spProdutos = (Spinner)findViewById(R.id.spProdutos);
//Conecta ao banco
SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);
//Executa a pesquina no banco
Cursor cursor = db.rawQuery("SELECT * FROM produtos ORDER BY nome ASC", null);
//Pega o resultado da pesquisa no banco
String[] from = {"_id", "nome", "preco"};
int[] to = {R.id.txvId, R.id.txvNome, R.id.txvPreco};
//Joga os dados no spinner
SimpleCursorAdapter ad = new SimpleCursorAdapter(getBaseContext(), R.layout.spinner, cursor, from, to);
spProdutos.setAdapter(ad);
db.close();
/**
Button btSalvar = (Button)findViewById(R.id.btSalvar);
btSalvar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Ação
}
});**/
}
public void Salvar_CLick (View view){
try{
/* Pegar Ultima localização
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();
*/
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
//String provider = "gps";
String provider = LocationManager.GPS_PROVIDER;
lm.requestLocationUpdates(provider, 5000, 0, this);
pgd = ProgressDialog.show(NovaVendaActivity.this, "Aguarde...", "Buscando Localização...", true, false, null);
}catch(Exception ex){
Toast.makeText(getBaseContext(), "Erro ao buscar localização", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onLocationChanged(Location location) {
pgd.dismiss();
try{
la = location.getLatitude();
lo = location.getLongitude();
//******************************
//Conecta ao banco
SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);
//Recupera o Spinner
Spinner spProdutos = (Spinner)findViewById(R.id.spProdutos);
SQLiteCursor dados = (SQLiteCursor)spProdutos.getAdapter().getItem(spProdutos.getSelectedItemPosition());
//EditText txvCliente = (EditText)findViewById(R.id.txvCliente);
ContentValues ctv = new ContentValues();
ctv.put("produto", dados.getInt(0));
ctv.put("preco", dados.getDouble(2));
//ctv.put("cliente", txvCliente.getText().toString());
ctv.put("la", la);
ctv.put("lo", lo);
if(db.insert("vendas", "_id", ctv) > 0){
Toast.makeText(getBaseContext(), "Sucesso ao gravar", Toast.LENGTH_SHORT).show();
};
db.close();
}catch(Exception ex){
Toast.makeText(getBaseContext(), "Erro ao gravar", Toast.LENGTH_SHORT).show();
}
//******************************
lm.removeUpdates(this);
finish();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Toast.makeText(getBaseContext(), "Executou onStatusChanged", Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(getBaseContext(), "Executou onProviderEnabled", Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(getBaseContext(), "É necessario ativar o GPS do celular", Toast.LENGTH_SHORT).show();
}
}