Ir para conteúdo
JhoniWillian

Comunicação Veícular

Recommended Posts

Boa Noite galera

 

Estou em fase de desenvolvimento de TCC do meu Superior.

 

A ideia foi desenvolver um aplicativo ''simples'' porém, ''funcional'' onde seria um software de manutenção preventiva de veículos.

 

Para isso eu preciso pegar informações da centralina do carro utilizando o arduino ELM327 através da conexão OBD2.

 

Consegui fazer a conexão com o bluetooth, onde estará pareado com o arduino ELM, alguém poderia me instruir de como seguir em frente agora? como conseguir comunicar com a centralina para obter informações dela, como por exemplo. KM Atual do veículo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Emerson.Oliveira
      estou fazendo um simples APP web view, quero que quando o usuário acessar o APP apareça uma logo e em baixo icone de carregando, nessa logo nesse gif carregando vai ter uma verificação se a pessoa está conectado a uma internet ou não, se tiver conectado manda para web view, se não tiver conectado aparece uma mensagem vermelho que o celular está sem conexão no momento, como fazer isso se alguém tiver alguma ideia não manjo muito em fazer APP
    • Por Carcleo
      Olá, tenho o form abaixo onde eu leio um json à partir de um endereço na web
      http://www.hotplateprensas.com.br/ws/clientest.php
      que me entrega uma string json do tipo
      {   "clientes":[      {        "idClientesT":"1",        "tipo":"s",        "nome":"Carlos"},      {        "idClientesT":"2",        "tipo":"s",        "nome":"Rogério"      }   ] } Então, pego ela no AndroidStudio com a Activity abaixo:
      package carcleo.com.radiosingular; import android.os.Bundle; import android.os.StrictMode; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import carcleo.com.radiosingular.classes.JsonClass; public class form extends AppCompatActivity {     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.form);     }     public void listaClientes (View View) {         if (android.os.Build.VERSION.SDK_INT > 9){             StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();             StrictMode.setThreadPolicy(policy);         }                  String url = "http://hotplateprensas.com.br/ws/clientest.php";         JsonClass json = new JsonClass();         JSONObject clientesLista = json.getJSONFromUrl(url);         clientes(clientesLista);     }     public void clientes(JSONObject jsonCli) {         try {             JSONArray arrayPlanetas = jsonCli.getJSONArray("clientes");             for (int i = 0; i < arrayPlanetas.length(); i++) {                 JSONObject cliente = arrayPlanetas.getJSONObject(i);                 Log.d("idClientesT", cliente.getString("idClientesT"));                 Log.d("tipo", cliente.getString("tipo"));                 Log.d("nome", cliente.getString("nome"));             }         } catch (JSONException e) {             e.printStackTrace();         }     } } Esse código funciona normalmente.Porém, é preciso colocar o trecho de código abaixo;
      if (android.os.Build.VERSION.SDK_INT > 9){    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();    StrictMode.setThreadPolicy(policy); } Senão, a conexão com a internet NÃO é estabelecida. 
      No entanto, eu já adicionei a permissão de acesso à INTERNET no AndroidManifest.
      <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="carcleo.com.radiosingular">     <uses-permission android:name="android.permission.INTERNET" />     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />     <application         android:allowBackup="true"         android:icon="@mipmap/ic_launcher"         android:label="@string/app_name"         android:roundIcon="@mipmap/ic_launcher_round"         android:supportsRtl="true"         android:theme="@style/AppTheme">         <activity android:name=".login">             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                 <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>         <activity android:name=".principal" />         <activity android:name=".form" />         <activity android:name=".retrofit" />     </application> </manifest> Mas não adianta.
      Se eu retirar esse bloco de código
      if (android.os.Build.VERSION.SDK_INT > 9){    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();    StrictMode.setThreadPolicy(policy); } A conexão com a INTERNET não acontece.
       
      O problema é que quantas vezes eu precisar acessar à INTERNET será o mesmo número de vezes que terei que fazer uso desse trecho de código?
       
      Será que não existe um arquivo de configuração geral para isso no AndroidStudio?
    • Por JuninhoDrak
      O problema é: eu quero estabelecer comunicação entre o meu desktop e meu dispositivo inteligente android.
      Estou tentando um passo simples mas recebo "device not found" como retorno
      é aqui que baseio minha codificação: 
      https://ionicframework.com/docs/native/serial/
       
      Este é o código

       
       
      Há poucos conteúdo sobre esse recurso na internet.
       
    • Por Alex Oliveira Dos Santos
      Boa tarde, estou criando um carrinho de compras onde tem uma recyclerview listando os produtos, ao lado de cada produto tem um campo de quantidade + ou - que teram a função de adicionar e aumentar a quantidade de produto, mas o problema é que quando eu altero a quantidade de um produto automaticamente esta quantidade tambem vai para outras linhas, intercaladas de 10 em 10, sei que isso é porque o recyclerview meio que carrega de 10 em 10 e vai limpando, soque eu nao sei como resolver isso, segue código e abaixo imagem de referencia

       
      public class ProdutosCodBarrasAdapter extends RecyclerView.Adapter<ProdutosCodBarrasAdapter.ViewHolderProdutos> { private List<Produto> dados; private List<PedidoItens> dados2; public Button actionProdMais; public Button actionProdMenos; public TextView txtQtd; private TabelaPreco tabelaPreco; private TabelaPrecoProdutoRepositorio tabelaPrecoProdutoRepositorio; public Double varBaseValor; public int varCodProduto; public Double passaQtd; public Produto[] produto; public String varprecoBaseNovoAjuste; public int varCodProdutoExcluir; public int varCodProdutoItemExcluir; private SQLiteDatabase conexao; private DadosOpenHelper dadosOpenHelper; public int varB; public int varC; public int varD; public String varE; public static final String NOME_PREFERENCE = "INFORMACOES_LOGIN_AUTOMATICO"; public int cli_emp_id; public ProdutosCodBarrasAdapter(List<Produto> dados){ this.dados = dados; } @NonNull @Override public ProdutosCodBarrasAdapter.ViewHolderProdutos onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); View view = layoutInflater.inflate(R.layout.linha_carrinho_add, parent,false);//R.layout.linha_produtos, parent,false ViewHolderProdutos holderProdutos = new ViewHolderProdutos(view, parent.getContext()); view.setBackgroundColor(0xFFF0F0F0); return holderProdutos; } @Override public void onBindViewHolder(@NonNull ProdutosCodBarrasAdapter.ViewHolderProdutos holder, int position) { if((dados != null) && (dados.size() > 0)) { DecimalFormat formatoDois = new DecimalFormat("##,###,###,##0.00", new DecimalFormatSymbols(new Locale("pt", "BR"))); formatoDois.setMinimumFractionDigits(2); formatoDois.setParseBigDecimal (true); //CARREGAR NA BINDVIEW aqui ele gera de 10 em 10, sempre ir atualizano a lista com as alterações (dados) Produto produto = dados.get(position); holder.listNomeProd.setText(produto.tab_id + " : " + produto.est_descricao_cor + " - " + produto.est_tam + " posição: "+position);//aqui morre //holder.listRefProd.setText(produto.prod_referencia.toString());// varprecoBaseNovoAjuste = new String(formatoDois.format(produto.tab_preco_final)); varB = Integer.parseInt(produto.varCodPed);//codigo do pedido varC = Integer.parseInt(String.valueOf(produto.codigo_prod));//codigo produto varD = Integer.parseInt(String.valueOf(produto.est_id_cor));//codigo da cor varE = String.valueOf(produto.est_tam);//tamanho holder.listPrecoProd.setText(varprecoBaseNovoAjuste);//aqui? holder.listPrecoProd.setText(formatoDois.format(produto.tab_preco_final.toString())); varCodProdutoItemExcluir = produto.prod_id; holder.listPegaCodPedidoItem2.setText(String.valueOf(varCodProdutoItemExcluir)); varBaseValor = produto.tab_preco_final; varCodProduto = produto.prod_id; } } @Override public int getItemCount() { return dados.size(); } public class ViewHolderProdutos extends RecyclerView.ViewHolder implements View.OnClickListener { private TextView listNomeProd; private TextView listPrecoProd; private ImageView idImagen; private TextView txtQtd; private double pegaQtd; private TextView listPegaCodPedidoItem2; public ViewHolderProdutos(@NonNull View itemView, final Context context) { super(itemView); listNomeProd = (TextView) itemView.findViewById(R.id.listNomeProd); listPrecoProd = (TextView) itemView.findViewById(R.id.listPrecoProd); txtQtd = (TextView) itemView.findViewById(R.id.txtQtd); passaQtd = Double.valueOf(txtQtd.getText().toString()); listPegaCodPedidoItem2 = (TextView) itemView.findViewById(R.id.listPegaCodPedidoItem2); actionProdMais = (Button) itemView.findViewById(R.id.actionProdMais); actionProdMais.setOnClickListener(this); actionProdMenos = (Button) itemView.findViewById(R.id.actionProdMenos); actionProdMenos.setOnClickListener(this); //ATUALIZAR ELE NA VIEW // actionProdMenos.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { // get position int pos = getAdapterPosition(); // check if item still exists if(pos != RecyclerView.NO_POSITION){ Produto produto = dados.get(pos); Double pegaQtd2 = Double.valueOf(txtQtd.getText().toString()); if(pegaQtd2 > 1.00){pegaQtd2--;} txtQtd.setText(pegaQtd2.toString()); Double pegaPrecoProd2 = pegaQtd2 * varBaseValor; DecimalFormat formatoDois2 = new DecimalFormat("##,###,###,##0.00", new DecimalFormatSymbols(new Locale("pt", "BR"))); formatoDois2.setMinimumFractionDigits(2); formatoDois2.setParseBigDecimal (true); listPrecoProd.setText(formatoDois2.format(pegaPrecoProd2).toString()); passaQtd = Double.valueOf(pegaQtd2.toString()); Toast.makeText(v.getContext(), "TAM: " + produto.est_tam + "QTD: " + passaQtd, Toast.LENGTH_SHORT).show(); //ProdutosCodBarrasAdapter.this.notifyItemChanged(pos, "payload " + pos); //Toast.makeText(v.getContext(), "You clicked " + produto.est_tam, Toast.LENGTH_SHORT).show(); } } }); // // actionProdMais.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { // get position int pos = getAdapterPosition(); // check if item still exists if(pos != RecyclerView.NO_POSITION){ Produto produto = dados.get(pos); Double pegaQtd = Double.valueOf(txtQtd.getText().toString()); pegaQtd++; txtQtd.setText(pegaQtd.toString()); Double pegaPrecoProd = pegaQtd * varBaseValor; DecimalFormat formatoDois = new DecimalFormat("##,###,###,##0.00", new DecimalFormatSymbols(new Locale("pt", "BR"))); formatoDois.setMinimumFractionDigits(2); formatoDois.setParseBigDecimal (true); listPrecoProd.setText(formatoDois.format(pegaPrecoProd).toString()); passaQtd = Double.valueOf(pegaQtd.toString()); Toast.makeText(v.getContext(), "TAM: " + produto.est_tam + "QTD: " + passaQtd, Toast.LENGTH_SHORT).show(); } } }); // } @Override public void onClick(View view) { switch (view.getId()) { case R.id.actionProdMais: break; case R.id.actionProdMenos: break; default: break; } } } }  


    • Por RodrigoAF
      Galera, sou novo em desenvolvimento android, porém gostaria de saber se podem me ajudar em meu aplicativo.
      Basicamente, anexo um arquivo (texto, imagem) em meu app e envio para o Google drive, onde ele cria uma pasta com o nome deste arquivo e realiza o upload dele nesta pasta.
      Bem, não consigo nem me conectar com o Google drive, tentei já com outras API's e deu certo, alguém pode me ajudar ? 
      Estou uma semana tentando realizar este procedimento rs Tento ver a documentação do Google mesmo, mas é muito confuso. E outros sites tentei mas são versões bem inferiores,
      ou já é com o Kotlin. 

      Agradeço a ajuda,
      Rodrigo A.F.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.