Skip to content

Commit

Permalink
Bump min android
Browse files Browse the repository at this point in the history
Needed to fix permissions because of it
bumped min version because play store was complaining
  • Loading branch information
Robert Lucey committed Sep 9, 2023
1 parent 7644585 commit cbb0d3a
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 44 deletions.
10 changes: 5 additions & 5 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ plugins {
}

android {
compileSdk 31
compileSdk 33

defaultConfig {
applicationId "via.android.roadquality"
minSdk 29
targetSdk 31
versionCode 10
versionName "2.3"
minSdk 33
targetSdk 33
versionCode 15
versionName "2.8"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
android:required="true" />

<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
Expand Down
65 changes: 40 additions & 25 deletions app/src/main/java/via/android/roadquality/MainActivity.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package via.android.roadquality;

import static java.security.AccessController.getContext;

import android.Manifest;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
Expand All @@ -13,8 +16,11 @@

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.fragment.NavHostFragment;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;

Expand All @@ -26,6 +32,7 @@
import com.google.android.material.bottomnavigation.BottomNavigationView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
Expand All @@ -34,8 +41,9 @@
import via.android.roadquality.databinding.ActivityMainBinding;
import via.android.roadquality.utils.LokiLogger;

import android.content.Context;

public class MainActivity extends AppCompatActivity /*implements EasyPermissions.PermissionCallbacks */{
public class MainActivity extends AppCompatActivity /*implements EasyPermissions.PermissionCallbacks */ {

private LokiLogger logger = new LokiLogger("MainActivity.java");

Expand All @@ -47,33 +55,42 @@ public class MainActivity extends AppCompatActivity /*implements EasyPermissions
Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_BACKGROUND_LOCATION
};

private boolean hasRequiredPermissions() {
logger.log("Called hasRequiredPermissions...");
return EasyPermissions.hasPermissions(
this,
perms
);
logger.log(String.valueOf(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)));
return ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(this, Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(this, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) == PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION) == PackageManager.PERMISSION_GRANTED;
}

private void requestRequiredPermissions(){
private void requestRequiredPermissions() {
logger.log("Requesting required permissions...");
EasyPermissions.requestPermissions(
this,
"Via needs the following permissions to function properly",
permissionsRequestCode,
perms
);
// Manifest.permission.ACCESS_BACKGROUND_LOCATION
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACTIVITY_RECOGNITION, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 101);

}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults);

logger.log("Trying to set up broadcast receiver after permissions request result...");
this.setUpActivityTransitionBroadcastReceiver();
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this,
new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION},
1
);
}
} else {
// Permission was denied
// You may want to inform the user that the operation cannot be performed
}
}

private void makeFullScreen() {
Expand Down Expand Up @@ -157,11 +174,7 @@ private List<ActivityTransition> getActivityTransitionsList() {
private void setUpActivityTransitionBroadcastReceiver() {
logger.log("Setting up ActivityTransitionBroadcastReceiver...");

// TODO: Needs to check background too:
if (this.hasRequiredPermissions() && EasyPermissions.hasPermissions(
this,
Manifest.permission.ACCESS_BACKGROUND_LOCATION)
) {
if (this.hasRequiredPermissions()) {
logger.log("Have sufficient permissions for background activities");
ActivityTransitionRequest request = new ActivityTransitionRequest(this.getActivityTransitionsList());

Expand All @@ -173,7 +186,7 @@ private void setUpActivityTransitionBroadcastReceiver() {

Task<Void> task = ActivityRecognition.getClient(this)
.requestActivityUpdates(150 * 1000, pendingIntent);
//.requestActivityTransitionUpdates(request, pendingIntent);
//.requestActivityTransitionUpdates(request, pendingIntent);

task.addOnSuccessListener(unused -> logger.log("task was successful"));
task.addOnFailureListener(unused -> logger.log("task was unsuccessful"));
Expand Down Expand Up @@ -214,7 +227,9 @@ protected void onCreate(Bundle savedInstanceState) {
R.id.navigation_settings_view
).build();

NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager()
.findFragmentById(R.id.nav_host_fragment_activity_main);
NavController navController = navHostFragment.getNavController();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);

Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/via/android/roadquality/models/Journey.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public class Journey {
public boolean sendInPartials;
private Context context;

private LokiLogger logger;
private final LokiLogger logger;

public Journey() {
this.logger = new LokiLogger("Journey.java");
Expand Down Expand Up @@ -107,7 +107,7 @@ public String filePath() {
if (!viaBase.exists()) {
viaBase.mkdirs();
}
return viaBase.toString() + "/" + this.uuid + ".json";
return viaBase + "/" + this.uuid + ".json";
}

public void save() throws IOException, JSONException {
Expand Down Expand Up @@ -275,7 +275,7 @@ public void onResponse(@NonNull Call call, @NonNull Response response) {

@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
new LokiLogger(context, "Journey.java").log("JourneyPostData", "Post data failure: " + e.toString());
new LokiLogger(context, "Journey.java").log("JourneyPostData", "Post data failure: " + e);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package via.android.roadquality.models;

import org.json.JSONException;

import java.util.ArrayList;

public class Journeys {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,8 @@ public void onLocationChanged(Location location) {
}

public void onLocationResult(@NonNull LocationResult locationResult) {
if (locationResult == null) {
return;
}

for (Location l : locationResult.getLocations()) {
this.onLocationChanged(l);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ public void onDestroy() {
this.journey.send(true);
logger.log("Journey sent!");
} catch (IOException | JSONException e) {
logger.log("journey save/send error hit :(" + e.toString() + " " + e.getMessage());
logger.log("journey save/send error hit :(" + e + " " + e.getMessage());
e.printStackTrace();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package via.android.roadquality.ui.home;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;

import via.android.roadquality.AutomaticJourneyCreator;
Expand All @@ -23,12 +27,13 @@
import com.google.android.gms.location.DetectedActivity;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class HomeFragment extends Fragment {

private LokiLogger logger = new LokiLogger("HomeFragment.java");
private final LokiLogger logger = new LokiLogger("HomeFragment.java");
private FragmentHomeBinding binding;

public View onCreateView(
Expand Down Expand Up @@ -57,6 +62,16 @@ public void onDestroyView() {
private void sendCycleEvent(boolean entered) {

if (entered) {

CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_BACKGROUND_LOCATION) != PackageManager.PERMISSION_GRANTED
) {
Toast toast = Toast.makeText(getContext(), "Must allow location all the time", Toast.LENGTH_LONG);
toast.show();
return;
}
this.logger.log("Manually firing start cycle activity transition event");
} else {
this.logger.log("Manually firing stop cycle activity transition event");
Expand All @@ -80,7 +95,7 @@ private void sendCycleEvent(boolean entered) {
this.logger.log("Event failed to broadcast:");
this.logger.log(exception.toString());
this.logger.log(exception.getMessage());
this.logger.log(exception.getStackTrace().toString());
this.logger.log(Arrays.toString(exception.getStackTrace()));
}
}
}
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.0.0'
classpath 'com.android.tools.build:gradle:8.1.1'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Expand Down

0 comments on commit cbb0d3a

Please sign in to comment.