Fixed a bug where the app thought location was disabled but was actually set to device only; Fixed rare bug where the app wouldn't start on boot; Lowered Target SDK to 23 so the app cannot be uploaded to Google Play; Bumped version to Alpha 9

This commit is contained in:
dosse91
2019-08-17 10:12:46 +02:00
parent 35a9d96398
commit 8a41df7c51
5 changed files with 36 additions and 19 deletions
+3 -3
View File
@@ -5,9 +5,9 @@ android {
defaultConfig {
applicationId "com.dosse.airpods"
minSdkVersion 23
targetSdkVersion 28
versionCode 8
versionName '0.8'
targetSdkVersion 23
versionCode 9
versionName '0.9'
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -7,6 +7,7 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-feature
android:name="android.hardware.bluetooth_le"
@@ -38,7 +38,7 @@ public class MainActivity extends AppCompatActivity {
}catch(Throwable t){}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) ok=false;
if(ok){
startService(new Intent(getApplicationContext(),PodsService.class));
Starter.startPodsService(getApplicationContext());
}else{
Intent i=new Intent(this,IntroActivity.class);
startActivity(i);
@@ -24,6 +24,7 @@ import android.os.Build;
import android.os.IBinder;
import android.os.ParcelUuid;
import android.os.SystemClock;
import android.provider.Settings;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.view.View;
@@ -201,17 +202,20 @@ public class PodsService extends Service {
private static boolean maybeConnected =false;
private class NotificationThread extends Thread{
private boolean isLocationEnabled(){
LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
return service!=null&&service.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.P){
LocationManager service = (LocationManager) getSystemService(getApplicationContext().LOCATION_SERVICE);
return service!=null&&service.isLocationEnabled();
}else{
try {
return Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE) != Settings.Secure.LOCATION_MODE_OFF;
}catch(Throwable t){
return true;
}
}
}
public void run(){
boolean notificationShowing=false;
RemoteViews notificationBig=new RemoteViews(getPackageName(),R.layout.status_big);
RemoteViews notificationSmall=new RemoteViews(getPackageName(),R.layout.status_small);
RemoteViews locationDisabledBig=new RemoteViews(getPackageName(),R.layout.location_disabled_big);
RemoteViews locationDisabledSmall=new RemoteViews(getPackageName(),R.layout.location_disabled_small);
NotificationManager mNotifyManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder=new NotificationCompat.Builder(PodsService.this,TAG);
private NotificationManager mNotifyManager;
public NotificationThread(){
mNotifyManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { //on oreo and newer, create a notification channel
NotificationChannel channel = new NotificationChannel(TAG, TAG, NotificationManager.IMPORTANCE_LOW);
channel.enableVibration(false);
@@ -220,6 +224,14 @@ public class PodsService extends Service {
channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
mNotifyManager.createNotificationChannel(channel);
}
}
public void run(){
boolean notificationShowing=false;
RemoteViews notificationBig=new RemoteViews(getPackageName(),R.layout.status_big);
RemoteViews notificationSmall=new RemoteViews(getPackageName(),R.layout.status_small);
RemoteViews locationDisabledBig=new RemoteViews(getPackageName(),R.layout.location_disabled_big);
RemoteViews locationDisabledSmall=new RemoteViews(getPackageName(),R.layout.location_disabled_small);
NotificationCompat.Builder mBuilder=new NotificationCompat.Builder(PodsService.this,TAG);
mBuilder.setShowWhen(false);
mBuilder.setOngoing(true);
mBuilder.setSmallIcon(R.mipmap.notification_icon);
@@ -321,6 +333,9 @@ public class PodsService extends Service {
intentFilter.addAction("android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED");
intentFilter.addAction("android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED");
intentFilter.addCategory("android.bluetooth.headset.intent.category.companyid.76");
try{
unregisterReceiver(btReceiver);
}catch (Throwable t){}
btReceiver=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -352,9 +367,6 @@ public class PodsService extends Service {
}
}
};
try{
unregisterReceiver(btReceiver);
}catch (Throwable t){}
try{
registerReceiver(btReceiver,intentFilter);
}catch(Throwable t){}
@@ -418,5 +430,4 @@ public class PodsService extends Service {
return START_STICKY;
}
}
@@ -3,6 +3,7 @@ package com.dosse.airpods;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.util.Log;
/**
@@ -11,6 +12,10 @@ import android.util.Log;
public class Starter extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context,PodsService.class));
startPodsService(context);
}
public static final void startPodsService(Context context){
context.startService(new Intent(context, PodsService.class));
}
}