mirror of
https://github.com/adolfintel/OpenPods.git
synced 2026-09-14 14:56:11 -04:00
Workaround for API 29.
Improved charging indicator. Added support for dark theme. Added proper support for RTL. Added Hebrew translation. Merged changes from https://github.com/Domi04151309/OpenPods/tree/general-improvements.
This commit is contained in:
Generated
+2
@@ -3,6 +3,8 @@
|
||||
<words>
|
||||
<w>airpod</w>
|
||||
<w>airpods</w>
|
||||
<w>dgrey</w>
|
||||
<w>uuids</w>
|
||||
</words>
|
||||
</dictionary>
|
||||
</component>
|
||||
@@ -8,6 +8,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"
|
||||
@@ -15,13 +16,15 @@
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:fullBackupContent="@xml/backup_descriptor"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:supportsRtl="false"
|
||||
android:theme="@style/AppTheme"
|
||||
tools:ignore="AllowBackup">
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
|
||||
<activity android:name=".MainActivity">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:launchMode="singleTop">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
@@ -30,10 +33,15 @@
|
||||
|
||||
<activity
|
||||
android:name=".AboutActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
android:label="@string/about"
|
||||
android:launchMode="singleTop"
|
||||
android:parentActivityName=".SettingsActivity" />
|
||||
|
||||
<activity
|
||||
android:name=".SettingsActivity" />
|
||||
android:name=".SettingsActivity"
|
||||
android:label="@string/settings"
|
||||
android:launchMode="singleTop"
|
||||
android:parentActivityName=".MainActivity" />
|
||||
|
||||
<activity
|
||||
android:name=".NoBTActivity"
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.dosse.airpods;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.PowerManager;
|
||||
import android.provider.Settings;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.ContextCompat;
|
||||
@@ -19,6 +21,7 @@ public class IntroActivity extends AppCompatActivity {
|
||||
|
||||
private Timer timer;
|
||||
|
||||
@SuppressLint("BatteryLife")
|
||||
@Override
|
||||
protected void onCreate (Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -32,12 +35,12 @@ public class IntroActivity extends AppCompatActivity {
|
||||
if (!Objects.requireNonNull(getSystemService(PowerManager.class)).isIgnoringBatteryOptimizations(getPackageName())) {
|
||||
Intent intent = new Intent();
|
||||
getSystemService(Context.POWER_SERVICE);
|
||||
/* This should not be used as it violates the Play Store Content Policy (https://developer.android.com/training/monitoring-device-state/doze-standby.html) */
|
||||
// intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
|
||||
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
|
||||
intent.setData(Uri.parse("package:" + getPackageName()));
|
||||
startActivity(intent);
|
||||
}
|
||||
} catch (Throwable ignored) { }
|
||||
} catch (Throwable ignored) {
|
||||
}
|
||||
});
|
||||
|
||||
// Wait for permissions to be granted.
|
||||
@@ -51,7 +54,8 @@ public class IntroActivity extends AppCompatActivity {
|
||||
try {
|
||||
if (!Objects.requireNonNull(getSystemService(PowerManager.class)).isIgnoringBatteryOptimizations(getPackageName()))
|
||||
ok = false;
|
||||
} catch (Throwable ignored) { }
|
||||
} catch (Throwable ignored) {
|
||||
}
|
||||
|
||||
if (ContextCompat.checkSelfPermission(IntroActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
|
||||
ok = false;
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.dosse.airpods;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationChannel;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.Service;
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
@@ -289,8 +290,10 @@ public class PodsService extends Service {
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
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
|
||||
// On Oreo (API27) and newer, create a notification channel.
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
NotificationChannel channel = new NotificationChannel(TAG, TAG, NotificationManager.IMPORTANCE_LOW);
|
||||
channel.setSound(null, null);
|
||||
channel.enableVibration(false);
|
||||
channel.enableLights(false);
|
||||
channel.setShowBadge(true);
|
||||
@@ -312,6 +315,12 @@ public class PodsService extends Service {
|
||||
mBuilder.setOngoing(true);
|
||||
mBuilder.setSmallIcon(R.mipmap.notification_icon);
|
||||
|
||||
/*
|
||||
// Adding a pending intent that would open the app if the user clicks on the notification.
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(getApplicationContext(), MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
mBuilder.setContentIntent(pendingIntent);
|
||||
*/
|
||||
|
||||
//noinspection InfiniteLoopStatement
|
||||
for (; ; ) {
|
||||
/*&&System.currentTimeMillis()-lastSeenConnected<TIMEOUT_CONNECTED*/
|
||||
@@ -368,28 +377,50 @@ public class PodsService extends Service {
|
||||
notificationBig.setViewVisibility(R.id.leftPodUpdating, View.INVISIBLE);
|
||||
notificationBig.setViewVisibility(R.id.rightPodUpdating, View.INVISIBLE);
|
||||
notificationBig.setViewVisibility(R.id.podCaseUpdating, View.INVISIBLE);
|
||||
|
||||
notificationSmall.setViewVisibility(R.id.leftPodText, View.VISIBLE);
|
||||
notificationSmall.setViewVisibility(R.id.rightPodText, View.VISIBLE);
|
||||
notificationSmall.setViewVisibility(R.id.podCaseText, View.VISIBLE);
|
||||
notificationSmall.setViewVisibility(R.id.leftPodUpdating, View.INVISIBLE);
|
||||
notificationSmall.setViewVisibility(R.id.rightPodUpdating, View.INVISIBLE);
|
||||
notificationSmall.setViewVisibility(R.id.podCaseUpdating, View.INVISIBLE);
|
||||
notificationBig.setTextViewText(R.id.leftPodText, (leftStatus == 10 ? "100%" : leftStatus < 10 ? (((leftStatus) * 10 + 5) + "%") : "") + ((chargeL && leftStatus < 10) ? "+" : ""));
|
||||
notificationBig.setTextViewText(R.id.rightPodText, (rightStatus == 10 ? "100%" : rightStatus < 10 ? (((rightStatus) * 10 + 5) + "%") : "") + ((chargeR && rightStatus < 10) ? "+" : ""));
|
||||
notificationBig.setTextViewText(R.id.podCaseText, (caseStatus == 10 ? "100%" : caseStatus < 10 ? (((caseStatus) * 10 + 5) + "%") : "") + ((chargeCase && caseStatus < 10) ? "+" : ""));
|
||||
notificationSmall.setTextViewText(R.id.leftPodText, (leftStatus == 10 ? "100%" : leftStatus < 10 ? (((leftStatus) * 10 + 5) + "%") : "") + ((chargeL && leftStatus < 10) ? "+" : ""));
|
||||
notificationSmall.setTextViewText(R.id.rightPodText, (rightStatus == 10 ? "100%" : rightStatus < 10 ? (((rightStatus) * 10 + 5) + "%") : "") + ((chargeR && rightStatus < 10) ? "+" : ""));
|
||||
notificationSmall.setTextViewText(R.id.podCaseText, (caseStatus == 10 ? "100%" : caseStatus < 10 ? (((caseStatus) * 10 + 5) + "%") : "") + ((chargeCase && caseStatus < 10) ? "+" : ""));
|
||||
|
||||
String podText_Left = (leftStatus == 10) ? "100%" : ((leftStatus < 10) ? (((leftStatus) * 10 + 5) + "%") : "");
|
||||
String podText_Right = (rightStatus == 10) ? "100%" : ((rightStatus < 10) ? (((rightStatus) * 10 + 5) + "%") : "");
|
||||
String podText_Case = (caseStatus == 10) ? "100%" : ((caseStatus < 10) ? (((caseStatus) * 10 + 5) + "%") : "");
|
||||
|
||||
notificationBig.setTextViewText(R.id.leftPodText, podText_Left);
|
||||
notificationBig.setTextViewText(R.id.rightPodText, podText_Right);
|
||||
notificationBig.setTextViewText(R.id.podCaseText, podText_Case);
|
||||
|
||||
notificationSmall.setTextViewText(R.id.leftPodText, podText_Left);
|
||||
notificationSmall.setTextViewText(R.id.rightPodText, podText_Right);
|
||||
notificationSmall.setTextViewText(R.id.podCaseText, podText_Case);
|
||||
|
||||
notificationBig.setViewVisibility(R.id.leftBatImg, ((chargeL && leftStatus < 10) ? View.VISIBLE : View.GONE));
|
||||
notificationBig.setViewVisibility(R.id.rightBatImg, ((chargeR && rightStatus < 10) ? View.VISIBLE : View.GONE));
|
||||
notificationBig.setViewVisibility(R.id.caseBatImg, ((chargeCase && caseStatus < 10) ? View.VISIBLE : View.GONE));
|
||||
|
||||
notificationSmall.setViewVisibility(R.id.leftBatImg, ((chargeL && leftStatus < 10) ? View.VISIBLE : View.GONE));
|
||||
notificationSmall.setViewVisibility(R.id.rightBatImg, ((chargeR && rightStatus < 10) ? View.VISIBLE : View.GONE));
|
||||
notificationSmall.setViewVisibility(R.id.caseBatImg, ((chargeCase && caseStatus < 10) ? View.VISIBLE : View.GONE));
|
||||
} else {
|
||||
notificationBig.setViewVisibility(R.id.leftPodText, View.INVISIBLE);
|
||||
notificationBig.setViewVisibility(R.id.rightPodText, View.INVISIBLE);
|
||||
notificationBig.setViewVisibility(R.id.podCaseText, View.INVISIBLE);
|
||||
notificationBig.setViewVisibility(R.id.leftBatImg, View.GONE);
|
||||
notificationBig.setViewVisibility(R.id.rightBatImg, View.GONE);
|
||||
notificationBig.setViewVisibility(R.id.caseBatImg, View.GONE);
|
||||
notificationBig.setViewVisibility(R.id.leftPodUpdating, View.VISIBLE);
|
||||
notificationBig.setViewVisibility(R.id.rightPodUpdating, View.VISIBLE);
|
||||
notificationBig.setViewVisibility(R.id.podCaseUpdating, View.VISIBLE);
|
||||
|
||||
notificationSmall.setViewVisibility(R.id.leftPodText, View.INVISIBLE);
|
||||
notificationSmall.setViewVisibility(R.id.rightPodText, View.INVISIBLE);
|
||||
notificationSmall.setViewVisibility(R.id.podCaseText, View.INVISIBLE);
|
||||
notificationSmall.setViewVisibility(R.id.leftBatImg, View.GONE);
|
||||
notificationSmall.setViewVisibility(R.id.rightBatImg, View.GONE);
|
||||
notificationSmall.setViewVisibility(R.id.caseBatImg, View.GONE);
|
||||
notificationSmall.setViewVisibility(R.id.leftPodUpdating, View.VISIBLE);
|
||||
notificationSmall.setViewVisibility(R.id.rightPodUpdating, View.VISIBLE);
|
||||
notificationSmall.setViewVisibility(R.id.podCaseUpdating, View.VISIBLE);
|
||||
|
||||
@@ -2,10 +2,13 @@ package com.dosse.airpods;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class SettingsActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
@@ -17,6 +20,7 @@ public class SettingsActivity extends AppCompatActivity implements SharedPrefere
|
||||
.beginTransaction()
|
||||
.replace(R.id.settings_container, new SettingsFragment())
|
||||
.commit();
|
||||
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
|
||||
prefs.registerOnSharedPreferenceChangeListener(this);
|
||||
@@ -28,4 +32,13 @@ public class SettingsActivity extends AppCompatActivity implements SharedPrefere
|
||||
Starter.restartPodsService(getApplicationContext());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected (@NonNull MenuItem item) {
|
||||
if (item.getItemId() == android.R.id.home) {
|
||||
onBackPressed();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,27 +1,32 @@
|
||||
package com.dosse.airpods;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
/**
|
||||
* A simple starter class that starts the service when the device is booted, or after an update
|
||||
*/
|
||||
public class Starter extends BroadcastReceiver {
|
||||
|
||||
@SuppressLint("UnsafeProtectedBroadcastReceiver")
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
public void onReceive (Context context, Intent intent) {
|
||||
startPodsService(context);
|
||||
}
|
||||
|
||||
public static final void startPodsService(Context context){
|
||||
public static void startPodsService (Context context) {
|
||||
context.startService(new Intent(context, PodsService.class));
|
||||
}
|
||||
|
||||
public static final void restartPodsService(Context context){
|
||||
public static void restartPodsService (Context context) {
|
||||
context.stopService(new Intent(context, PodsService.class));
|
||||
try{Thread.sleep(500);}catch(Throwable t){}
|
||||
try {
|
||||
Thread.sleep(500);
|
||||
} catch (Throwable ignored) {
|
||||
}
|
||||
context.startService(new Intent(context, PodsService.class));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#37BC00"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M15.67,4H14V2h-4v2H8.33C7.6,4 7,4.6 7,5.33v15.33C7,21.4 7.6,22 8.33,22h7.33c0.74,0 1.34,-0.6 1.34,-1.33V5.33C17,4.6 16.4,4 15.67,4zM11,20v-5.5H9L13,7v5.5h2L11,20z" />
|
||||
</vector>
|
||||
@@ -1,7 +1,7 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:tint="#737373"
|
||||
android:tint="@color/dgrey"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:tint="#737373"
|
||||
android:tint="@color/dgrey"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
|
||||
@@ -3,16 +3,14 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="16dp"
|
||||
tools:ignore="ContentDescription">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingTop="36dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingBottom="16dp">
|
||||
android:paddingTop="32dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
@@ -26,24 +24,31 @@
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:text="@string/main1"
|
||||
android:layout_marginBottom="36dp"
|
||||
android:text="@string/main_description"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="48dp"
|
||||
android:text="@string/supportedDevices" />
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/supportedDevicesTitle"
|
||||
android:textSize="17sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:text="@string/main2"
|
||||
android:textStyle="italic" />
|
||||
android:text="@string/supportedDevicesItems" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginTop="320dp"
|
||||
android:text="@string/hide_message"
|
||||
android:textStyle="italic" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="120dp"
|
||||
android:background="@color/white"
|
||||
android:gravity="center"
|
||||
android:padding="12dp">
|
||||
|
||||
@@ -11,6 +10,6 @@
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:text="@string/locationDisabledText"
|
||||
android:textColor="@color/black" />
|
||||
android:textColor="@color/textColorPrimary" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="70dp"
|
||||
android:background="@color/white"
|
||||
android:gravity="center"
|
||||
android:padding="12dp">
|
||||
|
||||
@@ -11,6 +10,6 @@
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:text="@string/locationDisabledText"
|
||||
android:textColor="@color/black" />
|
||||
android:textColor="@color/textColorPrimary" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/white"
|
||||
android:gravity="center"
|
||||
android:padding="12dp"
|
||||
tools:ignore="RtlHardcoded,ContentDescription">
|
||||
@@ -12,7 +11,7 @@
|
||||
android:id="@+id/leftPod"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentTop="true">
|
||||
|
||||
<ImageView
|
||||
@@ -25,11 +24,20 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/leftPodText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/leftPodImg"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/black" />
|
||||
android:textColor="@color/textColorPrimary" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/leftBatImg"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_below="@id/leftPodImg"
|
||||
android:layout_toRightOf="@id/leftPodText"
|
||||
android:src="@drawable/ic_battery_charging_full_green_24dp" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/leftPodUpdating"
|
||||
@@ -59,11 +67,20 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rightPodText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/rightPodImg"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/black" />
|
||||
android:textColor="@color/textColorPrimary" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/rightBatImg"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_below="@id/rightPodImg"
|
||||
android:layout_toRightOf="@id/rightPodText"
|
||||
android:src="@drawable/ic_battery_charging_full_green_24dp" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/rightPodUpdating"
|
||||
@@ -93,11 +110,20 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/podCaseText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/podCaseImg"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/black" />
|
||||
android:textColor="@color/textColorPrimary" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/caseBatImg"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_below="@id/podCaseImg"
|
||||
android:layout_toRightOf="@id/podCaseText"
|
||||
android:src="@drawable/ic_battery_charging_full_green_24dp" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/podCaseUpdating"
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/white"
|
||||
android:gravity="center"
|
||||
android:padding="12dp"
|
||||
tools:ignore="RtlHardcoded,ContentDescription">
|
||||
@@ -12,7 +11,7 @@
|
||||
android:id="@+id/leftPod"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentTop="true">
|
||||
|
||||
<ImageView
|
||||
@@ -27,7 +26,15 @@
|
||||
android:layout_height="match_parent"
|
||||
android:layout_toRightOf="@id/leftPodImg"
|
||||
android:gravity="center_vertical"
|
||||
android:textColor="@color/black" />
|
||||
android:textColor="@color/textColorPrimary" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/leftBatImg"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toRightOf="@id/leftPodText"
|
||||
android:src="@drawable/ic_battery_charging_full_green_24dp" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/leftPodUpdating"
|
||||
@@ -58,7 +65,15 @@
|
||||
android:layout_height="match_parent"
|
||||
android:layout_toRightOf="@id/rightPodImg"
|
||||
android:gravity="center_vertical"
|
||||
android:textColor="@color/black" />
|
||||
android:textColor="@color/textColorPrimary" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/rightBatImg"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toRightOf="@id/rightPodText"
|
||||
android:src="@drawable/ic_battery_charging_full_green_24dp" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/rightPodUpdating"
|
||||
@@ -89,7 +104,15 @@
|
||||
android:layout_height="match_parent"
|
||||
android:layout_toRightOf="@id/podCaseImg"
|
||||
android:gravity="center_vertical"
|
||||
android:textColor="@color/black" />
|
||||
android:textColor="@color/textColorPrimary" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/caseBatImg"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toRightOf="@id/podCaseText"
|
||||
android:src="@drawable/ic_battery_charging_full_green_24dp" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/podCaseUpdating"
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
<string name="intro1">Diese App erlaubt es dir, den Status deiner AirPods auf einem beliebigen Android-Gerät zu überprüfen</string>
|
||||
<string name="intro2">Für den Dienst benötigen wir die Berechtigung zur Verwendung von Bluetooth LE (Standort) und die Berechtigung zum Betrieb im Hintergrund</string>
|
||||
<string name="introAllow">Erlauben</string>
|
||||
<string name="main1">Die App zeigt eine Benachrichtigung, wenn deine AirPods verbunden sind</string>
|
||||
<string name="main2">Du kannst die App jetzt verstecken, wenn du möchtest</string>
|
||||
<string name="main_description">Die App zeigt eine Benachrichtigung, wenn deine AirPods verbunden sind</string>
|
||||
<string name="hide_message">Du kannst die App jetzt verstecken, wenn du möchtest</string>
|
||||
<string name="settings">Einstellungen</string>
|
||||
|
||||
<string name="noBtText">Es sieht so aus, als hätte dieses Gerät kein Bluetooth LE</string>
|
||||
<string name="locationDisabledText">Du musst Standortinformationen aktivieren, damit OpenPods den Status deiner AirPods auslesen kann</string>
|
||||
<string name="supportedDevices">Unterstützte Geräte:\n• Apple AirPods 1\n• Apple AirPods 2\n• Apple AirPods Pro</string>
|
||||
<string name="supportedDevicesTitle"><u>Unterstützte Geräte:</u></string>
|
||||
<string name="supportedDevicesItems">• Apple AirPods 1st gen\n• Apple AirPods 2nd gen\n• Apple AirPods Pro</string>
|
||||
|
||||
<string name="hide">App verstecken</string>
|
||||
<string name="hideClicked">Das Icon wird bald verschwinden</string>
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="intro1">Esta aplicación te permite ver el estado de tus AirPods en cualquier dispositivo Android.</string>
|
||||
<string name="intro2">Para operar necesitamos permiso para usar Bluetooth LE (Localización) y permiso para ejecutar la app en segundo plano.</string>
|
||||
<string name="introAllow">Permitir</string>
|
||||
<string name="main1">Esta aplicación mostrará una notificación cuando tus AirPods estén conectados.</string>
|
||||
<string name="main2">Puedes ocultar la app si lo prefieres.</string>
|
||||
<string name="main_description">Esta aplicación mostrará una notificación cuando tus AirPods estén conectados.</string>
|
||||
<string name="hide_message">Puedes ocultar la app si lo prefieres.</string>
|
||||
<string name="settings">Ajustes</string>
|
||||
|
||||
<string name="noBtText">Parece que éste dispositivo no tiene Bluetooth LE.</string>
|
||||
<string name="locationDisabledText">Necesitas activar la Localización para permitir que OpenPods lea el estado.</string>
|
||||
<string name="supportedDevices">Dispositivos compatibles:\n• Apple AirPods 1ª generación\n• Apple AirPods 2ª generación\n• Apple AirPods Pro</string>
|
||||
<string name="supportedDevicesTitle"><u>Dispositivos compatibles:</u></string>
|
||||
<string name="supportedDevicesItems">• Apple AirPods 1ª generación\n• Apple AirPods 2ª generación\n• Apple AirPods Pro</string>
|
||||
|
||||
<string name="hide">Ocultar app</string>
|
||||
<string name="hideClicked">El icono desaparecerá pronto</string>
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
<string name="intro1">Questa app consente di monitorare lo stato delle tue AirPods su Android</string>
|
||||
<string name="intro2">Per funzionare, abbiamo bisogno dei permessi per Bluetooth LE (Posizione) e di esecuzione in background</string>
|
||||
<string name="introAllow">Consenti</string>
|
||||
<string name="main1">L\'app mostrerà una notifica quando le tue AirPods sono connesse</string>
|
||||
<string name="main2">Puoi nascondere l\'app se vuoi</string>
|
||||
<string name="main_description">L\'app mostrerà una notifica quando le tue AirPods sono connesse</string>
|
||||
<string name="hide_message">Puoi nascondere l\'app se vuoi</string>
|
||||
<string name="settings">Impostazioni</string>
|
||||
|
||||
<string name="noBtText">Questo dispositivo non supporta Bluetooth LE</string>
|
||||
<string name="locationDisabledText">Attiva la posizione per permttere a OpenPods di leggere lo stato</string>
|
||||
<string name="supportedDevices">Dispositivi supportati:\n• Apple AirPods 1st gen\n• Apple AirPods 2nd gen\n• Apple AirPods Pro</string>
|
||||
<string name="supportedDevicesTitle"><u>Dispositivi supportati:</u></string>
|
||||
<string name="supportedDevicesItems">• Apple AirPods 1st gen\n• Apple AirPods 2nd gen\n• Apple AirPods Pro</string>
|
||||
|
||||
<string name="hide">Nascondi app</string>
|
||||
<string name="hideClicked">L\'icona sarà rimossa presto</string>
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="intro1">אפליקציה זו מאפשרת לך לבדוק את המצב של האיירפודס שלך מכל מכשיר אנדרואיד</string>
|
||||
<string name="intro2">כדי שאפליקציה זו תוכל לדפקד, הינך צריך לאפשר גישה ל-Bluetooth LE (מיקום) ולריצה בקרע</string>
|
||||
<string name="introAllow">אפשר</string>
|
||||
<string name="main_description">האפליקציה תשלח התראה כאשר האיירפודס מחוברות</string>
|
||||
<string name="hide_message">אתה יכול להסתיר אפליקציה זו</string>
|
||||
<string name="settings">הגדרות</string>
|
||||
|
||||
<string name="noBtText">נראה כי מכשיר זה אינו תומך ב-Bluetooth LE</string>
|
||||
<string name="locationDisabledText">אתה צריך להפעיל שיתוף מקום בכדי לאפשר ל-OpenPods לקרוא את סטטוס האוזניות</string>
|
||||
<string name="supportedDevicesTitle"><u>מכשירים נתמכים</u></string>
|
||||
<string name="supportedDevicesItems">• אפל איירפודס דור ראשון \n• אפל איירפודס דור שני \n• אפל איירפודס פרו </string>
|
||||
|
||||
<string name="hide">הסתר אפליקציה</string>
|
||||
<string name="hideClicked">האייקון יעלם בקרוב</string>
|
||||
<string name="batterySaver">חיסכון בסוללה (לא מומלץ)</string>
|
||||
<string name="batterySaver_desc">הפעל זאת אם Bluetooth משתמש בהרבה סוללה</string>
|
||||
<string name="about">אודות</string>
|
||||
|
||||
<string name="about1">פותח על ידי פדריקו דוסנה</string>
|
||||
<string name="website">אתר המפתח</string>
|
||||
<string name="github">Github</string>
|
||||
<string name="donate">תרומהS</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorPrimary" >#448AFF</color>
|
||||
<color name="colorPrimaryDark" >#0D47A1</color>
|
||||
<color name="colorAccent" >#448AFF</color>
|
||||
<color name="textColorPrimary" >#FFFFFF</color>
|
||||
|
||||
<color name="white">#FFFFFF</color>
|
||||
<color name="black">#000000</color>
|
||||
<color name="dgrey">@android:color/darker_gray</color>
|
||||
</resources>
|
||||
@@ -1,15 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name" translatable="false">OpenPods</string>
|
||||
<string name="intro1">Met deze app kun je de status van je AirPods bekijken op elk Android-apparaat</string>
|
||||
<string name="intro2">De app heeft toegang nodig tot Bluetooth LE (locatie), en moet op de achtergrond worden uitgevoerd</string>
|
||||
<string name="introAllow">Toestaan</string>
|
||||
<string name="main1">De app toont een melding zodra je je AirPods verbindt</string>
|
||||
<string name="main2">Als je wilt, kun je deze app verbergen</string>
|
||||
<string name="main_description">De app toont een melding zodra je je AirPods verbindt</string>
|
||||
<string name="hide_message">Als je wilt, kun je deze app verbergen</string>
|
||||
<string name="settings">Instellingen</string>
|
||||
|
||||
<string name="noBtText">Het lijkt erop dat dit apparaat niet beschikt over Bluetooth LE</string>
|
||||
<string name="locationDisabledText">Schakel je locatie in zodat OpenPods de status kan uitlezen</string>
|
||||
<string name="supportedDevices">Ondersteunde apparaten:\n• Apple AirPods 1e gen.\n• Apple AirPods 2e gen.\n• Apple AirPods Pro</string>
|
||||
<string name="supportedDevicesTitle"><u>Ondersteunde apparaten:</u></string>
|
||||
<string name="supportedDevicesItems">• Apple AirPods 1e gen\n• Apple AirPods 2e gen\n• Apple AirPods Pro</string>
|
||||
|
||||
<string name="hide">App verbergen</string>
|
||||
<string name="hideClicked">Het pictogram verdwijnt spoedig</string>
|
||||
@@ -21,5 +22,4 @@
|
||||
<string name="website">Website</string>
|
||||
<string name="github">GitHub</string>
|
||||
<string name="donate">Doneren</string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="intro1">Это приложение позволяет Вам проверить статус ваших AirPods на любом Android-устройстве</string>
|
||||
<string name="intro2">Для работы нам нужно Bluetooth LE(местоположение) и разрешение на запуск в фоновом режиме</string>
|
||||
<string name="introAllow">Разрешить</string>
|
||||
<string name="main1">Приложение покажет уведомление, когда будет установлено соединение с AirPods</string>
|
||||
<string name="main2">Вы можете скрыть это приложение, если хотите</string>
|
||||
<string name="main_description">Приложение покажет уведомление, когда будет установлено соединение с AirPods</string>
|
||||
<string name="hide_message">Вы можете скрыть это приложение, если хотите</string>
|
||||
<string name="settings">Настройки</string>
|
||||
|
||||
<string name="noBtText">Похоже, что Bluetooth LE не поддерживается на Вашем устройстве</string>
|
||||
<string name="locationDisabledText">Вам нужно включить местоположение, чтобы разрешить OpenPods читать статус</string>
|
||||
<string name="supportedDevices">Поддерживаемые устройства:\n• Apple AirPods 1st gen\n• Apple AirPods 2nd gen\n• Apple AirPods Pro</string>
|
||||
<string name="supportedDevicesTitle"><u>Поддерживаемые устройства:</u></string>
|
||||
<string name="supportedDevicesItems">• Apple AirPods 1st gen\n• Apple AirPods 2nd gen\n• Apple AirPods Pro</string>
|
||||
|
||||
<string name="hide">Скрыть приложение</string>
|
||||
<string name="hideClicked">Иконка скоро исчезнет</string>
|
||||
@@ -20,5 +22,4 @@
|
||||
<string name="website">Сайт</string>
|
||||
<string name="github">Github</string>
|
||||
<string name="donate">Поддержать</string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name" translatable="false">OpenPods</string>
|
||||
<string name="intro1">Цей додаток дозволяє Вам перевірити статус ваших AirPods на будь-якому Android-пристрої</string>
|
||||
<string name="intro2">Для роботи ми використовуємо Bluetooth LE (місцезнаходження) та дозвіл на роботу додатку в фоновому режимі</string>
|
||||
<string name="introAllow">Дозволити</string>
|
||||
<string name="main1">Цей додаток покаже сповіщення, коли Ваші AirPods будуть підключені</string>
|
||||
<string name="main2">Ви можете сховати цей додаток, якщо бажаєте</string>
|
||||
<string name="main_description">Цей додаток покаже сповіщення, коли Ваші AirPods будуть підключені</string>
|
||||
<string name="hide_message">Ви можете сховати цей додаток, якщо бажаєте</string>
|
||||
<string name="settings">Налаштування</string>
|
||||
|
||||
<string name="noBtText">Схоже, що цей пристрій не підтримує Bluetooth LE</string>
|
||||
<string name="locationDisabledText">Вам потрібно ввімкнути місцезнаходження, для того, щоб дозволити OpenPods читати статус</string>
|
||||
<string name="supportedDevices">Supported devices:\n• Apple AirPods 1st gen\n• Apple AirPods 2nd gen\n• Apple AirPods Pro</string>
|
||||
<string name="supportedDevicesTitle"><u>Supported devices:</u></string>
|
||||
<string name="supportedDevicesItems">• Apple AirPods 1st gen\n• Apple AirPods 2nd gen\n• Apple AirPods Pro</string>
|
||||
|
||||
<string name="hide">Сховати додаток</string>
|
||||
<string name="hideClicked">Іконка скоро зникне</string>
|
||||
@@ -22,5 +22,4 @@
|
||||
<string name="website">Сайт</string>
|
||||
<string name="github">Github</string>
|
||||
<string name="donate">Підтримати</string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
<string name="intro1">此应用可以让您在任何安卓设备上查看 AirPods 的状态</string>
|
||||
<string name="intro2">我们需要蓝牙、定位以及在后台运行的权限来正常运作</string>
|
||||
<string name="introAllow">允许</string>
|
||||
<string name="main1">当您的 AirPods 接入时,我们会在通知栏显示通知</string>
|
||||
<string name="main2">您可以隐藏此应用</string>
|
||||
<string name="main_description">当您的 AirPods 接入时,我们会在通知栏显示通知</string>
|
||||
<string name="hide_message">您可以隐藏此应用</string>
|
||||
<string name="settings">Settings</string>
|
||||
|
||||
<string name="noBtText">看起来您的设备并不支持蓝牙</string>
|
||||
<string name="locationDisabledText">您需要开启定位来让 OpenPods 读取状态</string>
|
||||
<string name="supportedDevices">支持的设备:\n• Apple AirPods 一代\n• Apple AirPods 二代\n• Apple AirPods Pro</string>
|
||||
<string name="supportedDevicesTitle"><u>支持的设备:</u></string>
|
||||
<string name="supportedDevicesItems">• Apple AirPods 一代\n• Apple AirPods 二代\n• Apple AirPods Pro</string>
|
||||
|
||||
<string name="hide">隐藏</string>
|
||||
<string name="hideClicked">桌面图标很快就会被隐藏掉</string>
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
<color name="colorPrimary" >#448AFF</color>
|
||||
<color name="colorPrimaryDark" >#0D47A1</color>
|
||||
<color name="colorAccent" >#448AFF</color>
|
||||
<color name="textColorPrimary" >#000000</color>
|
||||
|
||||
<color name="white">#FFF</color>
|
||||
<color name="black">#000</color>
|
||||
<color name="white">#FFFFFF</color>
|
||||
<color name="black">#000000</color>
|
||||
<color name="dgrey">#737373</color>
|
||||
</resources>
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name" translatable="false">OpenPods</string>
|
||||
<string name="intro1">This app lets you check the status of your AirPods on any Android device</string>
|
||||
<string name="intro2">To operate, we need permission to use Bluetooth LE (Location) and permission to run in background</string>
|
||||
<string name="introAllow">Allow</string>
|
||||
<string name="main1">The app will show a notification when your AirPods are connected</string>
|
||||
<string name="main2">You can hide this app if you want</string>
|
||||
<string name="main_description">The app will show a notification when your AirPods are connected</string>
|
||||
<string name="hide_message">You can hide this app if you want</string>
|
||||
<string name="settings">Settings</string>
|
||||
|
||||
<string name="noBtText">It looks like this device doesn\'t have Bluetooth LE</string>
|
||||
<string name="locationDisabledText">You need to turn on Location to allow OpenPods to read the status</string>
|
||||
<string name="supportedDevices">Supported devices:\n• Apple AirPods 1st gen\n• Apple AirPods 2nd gen\n• Apple AirPods Pro</string>
|
||||
<string name="supportedDevicesTitle"><u>Supported devices:</u></string>
|
||||
<string name="supportedDevicesItems">• Apple AirPods 1st gen\n• Apple AirPods 2nd gen\n• Apple AirPods Pro</string>
|
||||
|
||||
<string name="hide">Hide app</string>
|
||||
<string name="hideClicked">The icon will disappear soon</string>
|
||||
@@ -21,5 +23,4 @@
|
||||
<string name="website">Website</string>
|
||||
<string name="github">Github</string>
|
||||
<string name="donate">Donate</string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<resources>
|
||||
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
||||
<style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
|
||||
<item name="colorPrimary" >@color/colorPrimary</item>
|
||||
<item name="colorPrimaryDark" >@color/colorPrimaryDark</item>
|
||||
<item name="colorAccent" >@color/colorAccent</item>
|
||||
@@ -11,8 +11,4 @@
|
||||
<item name="windowNoTitle">true</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
|
||||
|
||||
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<full-backup-content />
|
||||
Reference in New Issue
Block a user