Skip to content

Commit c64c0e8

Browse files
committed
Added a recording feature, fixed numerous bugs (see trello), updated the UI, made it so that the app doesn't allow recording when there is no internet
1 parent 2fa4ecf commit c64c0e8

23 files changed

+704
-289
lines changed

app/build.gradle

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,14 @@ android {
3434
dependencies {
3535

3636
implementation 'androidx.appcompat:appcompat:1.6.1'
37-
implementation 'com.google.android.material:material:1.8.0'
37+
implementation 'com.google.android.material:material:1.9.0'
3838
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
3939
implementation 'androidx.navigation:navigation-fragment:2.5.3'
4040
implementation 'androidx.navigation:navigation-ui:2.5.3'
4141
implementation 'org.apache.commons:commons-math3:3.6.1'
4242
implementation 'com.google.code.gson:gson:2.10.1'
4343
implementation 'javazoom:jlayer:1.0.1'
44+
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
4445
testImplementation 'junit:junit:4.13.2'
4546
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
4647
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

app/src/main/AndroidManifest.xml

+4-1
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,18 @@
99
android:largeHeap="true"
1010
android:dataExtractionRules="@xml/data_extraction_rules"
1111
android:fullBackupContent="@xml/backup_rules"
12-
android:icon="@mipmap/ic_launcher"
12+
android:icon="@drawable/beatbot_app_splash"
1313
android:label="@string/app_name"
1414
android:supportsRtl="true"
1515
android:theme="@style/Theme.BeatBot"
1616
android:usesCleartextTraffic="true"
1717
tools:targetApi="31">
18+
<!-- screenOrientation="portrait" creates a warning, but is unavoidable, no time to make 2 different overlays -->
1819
<activity
1920
android:name=".MainActivity"
2021
android:exported="true"
22+
23+
android:screenOrientation="portrait"
2124
android:theme="@style/Theme.BeatBot.NoActionBar">
2225
<intent-filter>
2326
<action android:name="android.intent.action.MAIN" />

app/src/main/java/com/theriotjoker/beatbot/ApiHandler.java

+12
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,16 @@ private HttpURLConnection prepareConnection(String url) throws IOException {
3535
connection.setDoOutput(true);
3636
return connection;
3737
}
38+
public static boolean testConnection(String url) {
39+
try {
40+
URL connectionTestURl = new URL(url);
41+
HttpURLConnection connection = (HttpURLConnection) connectionTestURl.openConnection();
42+
connection.connect();
43+
connection.disconnect();
44+
return true;
45+
} catch (IOException e) {
46+
return false;
47+
}
48+
49+
}
3850
}

app/src/main/java/com/theriotjoker/beatbot/FileUploadController.java

+167-112
Large diffs are not rendered by default.

app/src/main/java/com/theriotjoker/beatbot/MainActivity.java

+33-34
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,28 @@
22

33
import android.os.Bundle;
44

5-
import com.google.android.material.snackbar.Snackbar;
6-
75
import androidx.appcompat.app.AppCompatActivity;
86

7+
import android.os.Handler;
8+
import android.os.Looper;
99
import android.view.View;
10-
11-
import androidx.navigation.NavController;
10+
import androidx.fragment.app.Fragment;
11+
import androidx.fragment.app.FragmentManager;
1212
import androidx.navigation.Navigation;
1313
import androidx.navigation.ui.AppBarConfiguration;
14-
import androidx.navigation.ui.NavigationUI;
15-
1614
import com.theriotjoker.beatbot.databinding.ActivityMainBinding;
1715

18-
import android.view.Menu;
19-
import android.view.MenuItem;
20-
import android.view.Window;
16+
2117
import android.view.WindowManager;
18+
import android.widget.Toast;
2219

2320
import java.util.Objects;
2421

2522
public class MainActivity extends AppCompatActivity {
2623

2724
private AppBarConfiguration appBarConfiguration;
2825
private ActivityMainBinding binding;
26+
private boolean pressedBackRecently = false;
2927

3028
@Override
3129
protected void onCreate(Bundle savedInstanceState) {
@@ -39,33 +37,34 @@ protected void onCreate(Bundle savedInstanceState) {
3937
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
4038

4139
}
42-
43-
@Override
44-
public boolean onCreateOptionsMenu(Menu menu) {
45-
// Inflate the menu; this adds items to the action bar if it is present.
46-
getMenuInflater().inflate(R.menu.menu_main, menu);
47-
return true;
48-
}
49-
5040
@Override
51-
public boolean onOptionsItemSelected(MenuItem item) {
52-
// Handle action bar item clicks here. The action bar will
53-
// automatically handle clicks on the Home/Up button, so long
54-
// as you specify a parent activity in AndroidManifest.xml.
55-
int id = item.getItemId();
56-
57-
//noinspection SimplifiableIfStatement
58-
if (id == R.id.action_settings) {
59-
return true;
41+
public void onBackPressed() {
42+
//This is a quick, but dirty way of making the back button transition back to the main screen
43+
FragmentManager fragmentManager = getSupportFragmentManager();
44+
Fragment navHostFragment = fragmentManager.findFragmentById(R.id.nav_host_fragment_content_main);
45+
Fragment currentFragment = navHostFragment.getChildFragmentManager().getFragments().get(0);
46+
if(currentFragment instanceof ResultScreen) {
47+
Navigation.findNavController(navHostFragment.getView()).navigate(R.id.fileScreenToMainScreen);
48+
} else {
49+
MainScreen mainScreen =(MainScreen)currentFragment;
50+
if(mainScreen.isRecording()) {
51+
mainScreen.stopRecording();
52+
} else {
53+
if(!pressedBackRecently) {
54+
Toast.makeText(currentFragment.requireContext(), "Please press back again to exit the app", Toast.LENGTH_SHORT).show();
55+
pressedBackRecently = true;
56+
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
57+
@Override
58+
public void run() {
59+
pressedBackRecently = false;
60+
}
61+
}, 1500);
62+
} else {
63+
pressedBackRecently = false;
64+
finish();
65+
}
66+
}
6067
}
6168

62-
return super.onOptionsItemSelected(item);
63-
}
64-
65-
@Override
66-
public boolean onSupportNavigateUp() {
67-
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
68-
return NavigationUI.navigateUp(navController, appBarConfiguration)
69-
|| super.onSupportNavigateUp();
7069
}
7170
}

0 commit comments

Comments
 (0)