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.
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:
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();
}
}
}