• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Return Arduino Console in Android Studio APP

shyriu42

Lurker
Jan 12, 2021
2
0
Hello I tried to create an android application to drive led strips, I got an Android studio project that I modified to achieve my goals. Which works pretty well. I would like to be able to display what the console of an arduino nano returns to me in a textView.
JavaScript:
TextView textViewData=findViewById(R.id.TextViewData);
textViewData.setText(Reception);

but all my trying to include code with InputStream inputStream; do not work, the application crashes or freezes.
Could someone help me because I have no knowledge of Java I managed to do this with intuition and probably a lot of luck.

thanks in advance.


JavaScript:
package com.pegase.sapin;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.app.ProgressDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.os.AsyncTask;
import android.widget.SeekBar;
import android.widget.ToggleButton;
import android.widget.EditText;
import android.widget.SeekBar.OnSeekBarChangeListener;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.util.UUID;
public class SapinControl extends AppCompatActivity {
    SeekBar Volume;
    SeekBar Ring1VitesseSeekBar;
    SeekBar Ring2VitesseSeekBar;
    SeekBar Ring3VitesseSeekBar;
    SeekBar Ring4VitesseSeekBar;
    SeekBar Ring1LumiereSeekBar;
    SeekBar Ring2LumiereSeekBar;
    SeekBar Ring3LumiereSeekBar;
    SeekBar Ring4LumiereSeekBar;
    EditText editText;
    Button sendButton;
    Button btn, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12, btn13, btn14, btn15, btn16, btn17, btn18, btn19, btn20, btn21, btn22, btn23, btn24, btnDis;
    ToggleButton simpleToggleButton1, simpleToggleButton2, simpleToggleButton3, simpleToggleButton4;
    String address = null;
    private ProgressDialog progress;
    BluetoothAdapter myBluetooth = null;
    BluetoothSocket btSocket = null;
    private boolean isBtConnected = false;
    //SPP UUID. Look for it
    static final UUID myUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent newint = getIntent();
        address = newint.getStringExtra(DeviceList.EXTRA_ADDRESS); //receive the address of the bluetooth device
        //view of the ledControl
        setContentView(R.layout.activity_sapin_control);
        //call the widgtes
        btn = (Button) findViewById(R.id.Button);
        btn2 = (Button) findViewById(R.id.Button2);
        btn3 = (Button) findViewById(R.id.Button3);
        btn4 = (Button) findViewById(R.id.Button4);
        btn5 = (Button) findViewById(R.id.Button5);
        btn6 = (Button) findViewById(R.id.Button6);
        btn7 = (Button) findViewById(R.id.Button7);
        btn8 = (Button) findViewById(R.id.Button8);
        btn9 = (Button) findViewById(R.id.Button9);
        btn10 = (Button) findViewById(R.id.Button10);
        btn11 = (Button) findViewById(R.id.Button11);
        btn12 = (Button) findViewById(R.id.Button12);
        btn13 = (Button) findViewById(R.id.Button13);
        btn14 = (Button) findViewById(R.id.Button14);
        btn15 = (Button) findViewById(R.id.Button15);
        btn16 = (Button) findViewById(R.id.Button16);
        btn17 = (Button) findViewById(R.id.Button17);
        btn18 = (Button) findViewById(R.id.Button18);
        btn19 = (Button) findViewById(R.id.Button19);
        btn20 = (Button) findViewById(R.id.Button20);
        btn21 = (Button) findViewById(R.id.Button21);
        btn22 = (Button) findViewById(R.id.Button22);
        btn23 = (Button) findViewById(R.id.Button23);
        btn24 = (Button) findViewById(R.id.Button24);
        btnDis = (Button) findViewById(R.id.Button30);
        // initiate toggle button
        //toggle button W   wheelcolor
        simpleToggleButton1 = (ToggleButton) findViewById(R.id.simpleToggleButton1);
        simpleToggleButton2 = (ToggleButton) findViewById(R.id.simpleToggleButton2);
        simpleToggleButton3 = (ToggleButton) findViewById(R.id.simpleToggleButton3);
        simpleToggleButton4 = (ToggleButton) findViewById(R.id.simpleToggleButton4);
        //Vitesse et lumiere
        Ring1VitesseSeekBar = (SeekBar) findViewById(R.id.Ring1SpeedSeekBar);
        Ring2VitesseSeekBar = (SeekBar) findViewById(R.id.Ring2SpeedSeekBar);
        Ring3VitesseSeekBar = (SeekBar) findViewById(R.id.Ring3SpeedSeekBar);
        Ring4VitesseSeekBar = (SeekBar) findViewById(R.id.Ring4SpeedSeekBar);
        Ring1LumiereSeekBar = (SeekBar) findViewById(R.id.Ring1BrightSeekBar);
        Ring2LumiereSeekBar = (SeekBar) findViewById(R.id.Ring2BrightSeekBar);
        Ring3LumiereSeekBar = (SeekBar) findViewById(R.id.Ring3BrightSeekBar);
        Ring4LumiereSeekBar = (SeekBar) findViewById(R.id.Ring4BrightSeekBar);
        //Volume MP3
        Volume = (SeekBar) findViewById(R.id.VolumeseekBar);
        new ConnectBT().execute(); //Call the class to connect
        //commands to be sent to bluetooth
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 1 1" + "\r\n";
                SendMessage(message);
            }
        });
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 1 2" + "\r\n";
                SendMessage(message);
            }
        });
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 1 3" + "\r\n";
                SendMessage(message);
            }
        });
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 1 4" + "\r\n";
                SendMessage(message);
            }
        });
        btn5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 1 5" + "\r\n";
                SendMessage(message);
            }
        });
        btn6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 2 1" + "\r\n";
                SendMessage(message);
            }
        });
        btn7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 2 2" + "\r\n";
                SendMessage(message);
            }
        });
        btn8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 2 3" + "\r\n";
                SendMessage(message);
            }
        });
        btn9.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 2 4" + "\r\n";
                SendMessage(message);
            }
        });
        btn10.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 2 5" + "\r\n";
                SendMessage(message);
            }
        });
        btn11.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 3 1" + "\r\n";
                SendMessage(message);
            }
        });
        btn12.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 3 2" + "\r\n";
                SendMessage(message);
            }
        });
        btn13.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 3 3" + "\r\n";
                SendMessage(message);
            }
        });
        btn14.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 3 4" + "\r\n";
                SendMessage(message);
            }
        });
        btn15.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 3 5" + "\r\n";
                SendMessage(message);
            }
        });
        btn16.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 4 1" + "\r\n";
                SendMessage(message);
            }
        });
        btn17.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 4 2" + "\r\n";
                SendMessage(message);
            }
        });
        btn18.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 4 3" + "\r\n";
                SendMessage(message);
            }
        });
        btn19.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 4 4" + "\r\n";
                SendMessage(message);
            }
        });
        btn20.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 4 5" + "\r\n";
                SendMessage(message);
            }
        });
        btn21.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "ON" + "\r\n";
                SendMessage(message);
            }
        });
        btn22.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "OFF" + "\r\n";
                SendMessage(message);
            }
        });
        btn23.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "D" + "\r\n";
                SendMessage(message);
            }
        });
        btn24.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "E" + "\r\n";
                SendMessage(message);
            }
        });
        sendButton = (Button) findViewById(R.id.simpleToggleButton1);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = "W 1 " + simpleToggleButton1.getText() + "\r\n";
                //Toast.makeText(getApplicationContext(), status, Toast.LENGTH_SHORT).show(); // display the current state of toggle button's
                SendMessage(message);
            }
        });
        sendButton = (Button) findViewById(R.id.simpleToggleButton2);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = "W 2 " + simpleToggleButton2.getText() + "\r\n";
                //Toast.makeText(getApplicationContext(), status, Toast.LENGTH_SHORT).show(); // display the current state of toggle button's
                SendMessage(message);
            }
        });
        sendButton = (Button) findViewById(R.id.simpleToggleButton3);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = "W 3 " + simpleToggleButton3.getText() + "\r\n";
                //Toast.makeText(getApplicationContext(), status, Toast.LENGTH_SHORT).show(); // display the current state of toggle button's
                SendMessage(message);
            }
        });
        sendButton = (Button) findViewById(R.id.simpleToggleButton4);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = "W 4 " + simpleToggleButton4.getText() + "\r\n";
                //Toast.makeText(getApplicationContext(), status, Toast.LENGTH_SHORT).show(); // display the current state of toggle button's
                SendMessage(message);
            }
        });
        //Progression seekbar vitesse
        Ring1VitesseSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring1SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progressSpeed1, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = (int) ((-0.004 * (seekBar.getProgress() * seekBar.getProgress()) + (seekBar.getProgress() * 2.18)) - 45);
                progress = seekBar.getMax() - progress;
                String message = "S 1 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewspeed1 = findViewById(R.id.TextviewSpeed1);
                textviewspeed1.setText(String.valueOf(progress));
            }
        });
        Ring2VitesseSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring2SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progressSpeed2, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = (int) ((-0.004 * (seekBar.getProgress() * seekBar.getProgress()) + (seekBar.getProgress() * 2.18)) - 45);
                progress = seekBar.getMax() - progress;
                String message = "S 2 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewspeed2 = findViewById(R.id.TextviewSpeed2);
                textviewspeed2.setText(String.valueOf(progress));
            }
        });
        Ring3VitesseSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring3SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progressSpeed3, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = (int) ((-0.004 * (seekBar.getProgress() * seekBar.getProgress()) + (seekBar.getProgress() * 2.18)) - 45);
                progress = seekBar.getMax() - progress;
                String message = "S 3 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewspeed3 = findViewById(R.id.TextviewSpeed3);
                textviewspeed3.setText(String.valueOf(progress));
            }
        });
        Ring4VitesseSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring4SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progressSpeed4, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = (int) ((-0.004 * (seekBar.getProgress() * seekBar.getProgress()) + (seekBar.getProgress() * 2.18)) - 45);
                progress = seekBar.getMax() - progress;
                String message = "S 4 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewspeed4 = findViewById(R.id.TextviewSpeed4);
                textviewspeed4.setText(String.valueOf(progress));
            }
        });
        //Progression seekbar Lumiere
        Ring1LumiereSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring1SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                //progress = progressLum1;
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = seekBar.getProgress();
                String message = "B 1 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewlum1 = findViewById(R.id.TextviewLum1);
                textviewlum1.setText(String.valueOf(progress));
            }
        });
        Ring2LumiereSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring2SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = seekBar.getProgress();
                String message = "B 2 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewlum2 = findViewById(R.id.TextviewLum2);
                textviewlum2.setText(String.valueOf(progress));
            }
        });
        Ring3LumiereSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring3SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = seekBar.getProgress();
                String message = "B 3 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewlum3 = findViewById(R.id.TextviewLum3);
                textviewlum3.setText(String.valueOf(progress));
            }
        });
        Ring4LumiereSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring4SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = seekBar.getProgress();
                String message = "B 4 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewlum4 = findViewById(R.id.TextviewLum4);
                textviewlum4.setText(String.valueOf(progress));
            }
        });
        //Volume seekbar
        Volume.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar seekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = seekBar.getProgress();
                progress = (int) ((9 * Math.log(progress)));
                String message = "V " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewvol = findViewById(R.id.TextviewVol);
                textviewvol.setText(String.valueOf(progress));
            }
        });
        btnDis.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Disconnect(); //close connection
            }
        });
    }
    private void Disconnect() {
        if (btSocket != null) //If the btSocket is busy
        {
            try {
                btSocket.close(); //close connection
            } catch (IOException e) {
                msg("Error");
            }
        }
        finish(); //return to the first layout
    }
    private void SendMessage(String key) {
        if (btSocket != null) {
            try {
                btSocket.getOutputStream().write(key.getBytes());
            } catch (IOException e) {
                msg("Error");
            }
        }
    }
    // fast way to call Toast
    private void msg(String s) {
        Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
    }
    private class ConnectBT extends AsyncTask<Void, Void, Void>  // UI thread
    {
        private boolean ConnectSuccess = true; //if it's here, it's almost connected
        @Override
        protected void onPreExecute() {
            progress = ProgressDialog.show(SapinControl.this, "Connecting...", "Please wait!!!");  //show a progress dialog
        }
        @Override
        protected Void doInBackground(Void... devices) //while the progress dialog is shown, the connection is done in background
        {
            try {
                if (btSocket == null || !isBtConnected) {
                    myBluetooth = BluetoothAdapter.getDefaultAdapter();//get the mobile bluetooth device
                    BluetoothDevice dispositivo = myBluetooth.getRemoteDevice(address);//connects to the device's address and checks if it's available
                    btSocket = dispositivo.createInsecureRfcommSocketToServiceRecord(myUUID);//create a RFCOMM (SPP) connection
                    BluetoothAdapter.getDefaultAdapter().cancelDiscovery();
                    btSocket.connect();//start connection
                }
            } catch (IOException e) {
                ConnectSuccess = false;//if the try failed, you can check the exception here
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void result) //after the doInBackground, it checks if everything went fine
        {
            super.onPostExecute(result);
            if (!ConnectSuccess) {
                msg("Connection Failed. Is it a SPP Bluetooth? Try again.");
                finish();
            } else {
                msg("Connected.");
                isBtConnected = true;
            }
            progress.dismiss();
        }
    }
}
 

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones