diff --git a/app/build.gradle b/app/build.gradle index 203a3f8..b1b35a6 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,6 +22,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'com.google.android:flexbox:1.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' diff --git a/app/src/main/java/us/keiran/suitleds/MainActivity.java b/app/src/main/java/us/keiran/suitleds/MainActivity.java index 51f9b1a..b3aa7fd 100755 --- a/app/src/main/java/us/keiran/suitleds/MainActivity.java +++ b/app/src/main/java/us/keiran/suitleds/MainActivity.java @@ -38,9 +38,6 @@ package us.keiran.suitleds; import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.res.Configuration; - import android.media.Ringtone; - import android.media.RingtoneManager; - import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Handler; @@ -48,12 +45,10 @@ package us.keiran.suitleds; import android.os.Message; import android.support.v4.content.LocalBroadcastManager; import android.util.Log; - import android.view.Gravity; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; - import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RadioGroup; import android.widget.TextView; @@ -77,7 +72,8 @@ public class MainActivity extends Activity implements RadioGroup.OnCheckedChange private BluetoothAdapter mBtAdapter = null; private ListView messageListView; private ArrayAdapter listAdapter; - private Button btnConnectDisconnect, btnSend, btnRainbow; + private Button btnConnectDisconnect, btnSend, btnRainbow, btnFastest, btnFast, btnMed, btnSlow, btnSlowest; + private Button disableButtons[]; private EditText edtMessage; @Override public void onCreate(Bundle savedInstanceState) { @@ -99,6 +95,22 @@ public class MainActivity extends Activity implements RadioGroup.OnCheckedChange btnConnectDisconnect=(Button) findViewById(R.id.btn_select); btnSend=(Button) findViewById(R.id.sendButton); btnRainbow=findViewById(R.id.rainbowButton); + btnFastest=findViewById(R.id.speedFastest); + btnFast=findViewById((R.id.speedFast)); + btnMed=findViewById((R.id.speedMed)); + btnSlow=findViewById((R.id.speedSlow)); + btnSlowest=findViewById(R.id.speedSlowest); + disableButtons = new Button[7]; + disableButtons[0] = btnSend; + disableButtons[1] = btnRainbow; + disableButtons[2] = btnFastest; + disableButtons[3] = btnFast; + disableButtons[4] = btnMed; + disableButtons[5] = btnSlow; + disableButtons[6] = btnSlowest; + for (Button btn: disableButtons){ + btn.setEnabled(false); + } edtMessage = (EditText) findViewById(R.id.sendText); service_init(); @@ -158,27 +170,57 @@ public class MainActivity extends Activity implements RadioGroup.OnCheckedChange btnRainbow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - byte[] value; - try { - //send data to service - value = "pr".getBytes("UTF-8"); - mService.sendDataWithCRC(value); - //Update the log with time stamp - String currentDateTimeString = DateFormat.getTimeInstance().format(new Date()); - listAdapter.add("["+currentDateTimeString+"] TX: "+ "pr"); - messageListView.smoothScrollToPosition(listAdapter.getCount() - 1); - } catch (UnsupportedEncodingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - + sendCmd("pr"); } }); + btnFastest.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + sendCmd("s0"); + } + }); + btnFast.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + sendCmd("s20"); + } + }); + btnMed.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + sendCmd("s50"); + } + }); + btnSlow.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + sendCmd("s100"); + } + }); + btnSlowest.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + sendCmd("s200"); + } + }); // Set initial UI state } + private void sendCmd(String cmdStr){ + try { + byte[] value = cmdStr.getBytes("UTF-8"); + mService.sendDataWithCRC(value); + String currentDateTimeString = DateFormat.getTimeInstance().format(new Date()); + listAdapter.add("["+currentDateTimeString+"] TX: "+ cmdStr); + messageListView.smoothScrollToPosition(listAdapter.getCount() - 1); + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + //UART service connected/disconnected private ServiceConnection mServiceConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder rawBinder) { @@ -219,11 +261,11 @@ public class MainActivity extends Activity implements RadioGroup.OnCheckedChange String currentDateTimeString = DateFormat.getTimeInstance().format(new Date()); Log.d(TAG, "UART_CONNECT_MSG"); btnConnectDisconnect.setText("Disconnect"); - edtMessage.setEnabled(true); - btnSend.setEnabled(true); - btnRainbow.setEnabled(true); + for (Button btn: disableButtons){ + btn.setEnabled(true); + } ((TextView) findViewById(R.id.deviceName)).setText(mDevice.getName()+ " - ready"); - listAdapter.add("["+currentDateTimeString+"] Connected to: "+ mDevice.getName()); + listAdapter.add("["+currentDateTimeString+"] Connected: "+ mDevice.getName()); messageListView.smoothScrollToPosition(listAdapter.getCount() - 1); mState = UART_PROFILE_CONNECTED; } @@ -237,11 +279,11 @@ public class MainActivity extends Activity implements RadioGroup.OnCheckedChange String currentDateTimeString = DateFormat.getTimeInstance().format(new Date()); Log.d(TAG, "UART_DISCONNECT_MSG"); btnConnectDisconnect.setText("Connect"); - edtMessage.setEnabled(false); - btnSend.setEnabled(false); - btnRainbow.setEnabled(false); + for (Button btn: disableButtons){ + btn.setEnabled(false); + } ((TextView) findViewById(R.id.deviceName)).setText("Not Connected"); - listAdapter.add("["+currentDateTimeString+"] Disconnected from: "+ mDevice.getName()); + listAdapter.add("["+currentDateTimeString+"] Disconnected: "+ mDevice.getName()); mState = UART_PROFILE_DISCONNECTED; mService.close(); //setUiState(); diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index 2343939..42ccccd 100755 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -18,6 +18,78 @@ android:text="Connect" /> + + + + + + +