Use third-party app for recording audio notes

pull/1719/head
Alex Baker 2 years ago
parent b59316db78
commit 47f920e32a

@ -11,6 +11,4 @@ class PermissivePermissionChecker(@ApplicationContext context: Context) : Permis
override fun canAccessForegroundLocation() = true
override fun canAccessBackgroundLocation() = true
override fun canAccessMic() = true
}

@ -56,14 +56,6 @@
<!-- ******************************************* -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<!-- ********************* -->
<!-- recording voice notes -->
<!-- ********************* -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-feature
android:name="android.hardware.microphone"
android:required="false"/>
<!-- *********************************** -->
<!-- keep device awake for notifications -->
<!-- *********************************** -->

@ -1,92 +0,0 @@
package com.todoroo.astrid.voice;
import android.content.Context;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.SystemClock;
import androidx.lifecycle.ViewModel;
import java.io.IOException;
import org.tasks.files.FileHelper;
import org.tasks.preferences.Preferences;
import org.tasks.time.DateTime;
import timber.log.Timber;
@SuppressWarnings({"WeakerAccess", "RedundantSuppression"})
public class AACRecorder extends ViewModel {
private MediaRecorder mediaRecorder;
private boolean recording;
private AACRecorderCallbacks listener;
private Preferences preferences;
private long base;
private Uri uri;
public synchronized void startRecording(Context context) throws IOException {
if (recording) {
return;
}
uri =
FileHelper.newFile(
context,
preferences.getCacheDirectory(),
"audio/m4a",
new DateTime().toString("yyyyMMddHHmm"),
".m4a");
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setOutputFile(uri.getPath());
mediaRecorder.setOnErrorListener(
(mr, what, extra) -> Timber.e("mediaRecorder.onError(mr, %s, %s)", what, extra));
mediaRecorder.setOnInfoListener(
(mr, what, extra) -> Timber.i("mediaRecorder.onInfo(mr, %s, %s)", what, extra));
try {
mediaRecorder.prepare();
} catch (IOException e) {
throw new RuntimeException(e);
}
recording = true;
base = SystemClock.elapsedRealtime();
mediaRecorder.start();
}
public synchronized void stopRecording() {
if (!recording) {
return;
}
try {
// media recorder was cutting off end of audio
// this is a hack to keep recording
Thread.sleep(500);
} catch (InterruptedException ignored) {
}
mediaRecorder.stop();
mediaRecorder.release();
recording = false;
if (listener != null) {
listener.encodingFinished(uri);
}
}
public long getBase() {
return base;
}
public void init(AACRecorderCallbacks listener, Preferences preferences) {
this.listener = listener;
this.preferences = preferences;
}
public interface AACRecorderCallbacks {
void encodingFinished(Uri uri);
}
}

@ -27,16 +27,16 @@ class AddAttachmentDialog : DialogFragment() {
val actions: MutableList<Runnable> = ArrayList()
if (device.hasCamera()) {
entries.add(getString(R.string.take_a_picture))
actions.add(Runnable { takePicture() })
actions.add { takePicture() }
}
if (device.hasMicrophone()) {
entries.add(getString(R.string.premium_record_audio))
actions.add(Runnable { recordNote() })
actions.add { recordNote() }
}
entries.add(getString(R.string.pick_from_gallery))
actions.add(Runnable { pickFromGallery() })
actions.add { pickFromGallery() }
entries.add(getString(R.string.pick_from_storage))
actions.add(Runnable { pickFromStorage() })
actions.add { pickFromStorage() }
return dialogBuilder
.newDialog()
.setItems(entries) { _, which -> actions[which].run() }
@ -51,8 +51,10 @@ class AddAttachmentDialog : DialogFragment() {
}
private fun recordNote() {
RecordAudioDialog.newRecordAudioDialog(targetFragment, REQUEST_AUDIO)
.show(parentFragmentManager, FRAG_TAG_RECORD_AUDIO)
targetFragment?.safeStartActivityForResult(
Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION),
REQUEST_AUDIO
)
}
private fun pickFromGallery() {
@ -76,7 +78,6 @@ class AddAttachmentDialog : DialogFragment() {
const val REQUEST_GALLERY = 12121
const val REQUEST_STORAGE = 12122
const val REQUEST_AUDIO = 12123
private const val FRAG_TAG_RECORD_AUDIO = "frag_tag_record_audio"
fun newAddAttachmentDialog(target: FilesControlSet?): AddAttachmentDialog =
AddAttachmentDialog().apply {

@ -1,120 +0,0 @@
package org.tasks.dialogs;
import static android.app.Activity.RESULT_OK;
import static org.tasks.PermissionUtil.verifyPermissions;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Chronometer;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import com.todoroo.astrid.voice.AACRecorder;
import org.tasks.R;
import org.tasks.databinding.AacRecordActivityBinding;
import org.tasks.preferences.FragmentPermissionRequestor;
import org.tasks.preferences.PermissionChecker;
import org.tasks.preferences.PermissionRequestor;
import org.tasks.preferences.Preferences;
import org.tasks.themes.Theme;
import java.io.IOException;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
@AndroidEntryPoint
public class RecordAudioDialog extends DialogFragment implements AACRecorder.AACRecorderCallbacks {
@Inject Preferences preferences;
@Inject DialogBuilder dialogBuilder;
@Inject Theme theme;
@Inject FragmentPermissionRequestor permissionRequestor;
@Inject PermissionChecker permissionChecker;
private Chronometer timer;
private AACRecorder recorder;
static RecordAudioDialog newRecordAudioDialog(Fragment target, int requestCode) {
RecordAudioDialog dialog = new RecordAudioDialog();
dialog.setTargetFragment(target, requestCode);
return dialog;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AacRecordActivityBinding binding =
AacRecordActivityBinding.inflate(theme.getLayoutInflater(getContext()));
timer = binding.timer;
binding.stopRecording.setOnClickListener(v -> stopRecording());
recorder = new ViewModelProvider(this).get(AACRecorder.class);
recorder.init(this, preferences);
if (permissionChecker.canAccessMic()) {
startRecording();
} else if (savedInstanceState == null) {
permissionRequestor.requestMic();
}
return dialogBuilder
.newDialog(R.string.audio_recording_title)
.setView(binding.getRoot())
.create();
}
private void startRecording() {
try {
recorder.startRecording(getContext());
timer.setBase(recorder.getBase());
timer.start();
} catch (IOException e) {
stopRecording();
}
}
@Override
public void onCancel(DialogInterface dialog) {
super.onCancel(dialog);
stopRecording();
}
private void stopRecording() {
recorder.stopRecording();
timer.stop();
}
@Override
public void encodingFinished(Uri uri) {
Intent intent = new Intent();
intent.setData(uri);
Fragment target = getTargetFragment();
if (target != null) {
target.onActivityResult(getTargetRequestCode(), RESULT_OK, intent);
}
dismiss();
}
@Override
public void onRequestPermissionsResult(
int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PermissionRequestor.REQUEST_MIC) {
if (verifyPermissions(grantResults)) {
startRecording();
} else {
dismiss();
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}

@ -4,14 +4,14 @@ import android.content.ActivityNotFoundException
import android.content.Intent
import androidx.fragment.app.Fragment
import org.tasks.R
import org.tasks.extensions.Context.toast
import org.tasks.extensions.Context.openUri
object Fragment {
fun Fragment.safeStartActivityForResult(intent: Intent, rc: Int) {
try {
startActivityForResult(intent, rc)
} catch (e: ActivityNotFoundException) {
context?.toast(R.string.no_app_found)
context?.openUri(R.string.url_troubleshoot_intents)
}
}
}

@ -6,8 +6,10 @@ import static com.todoroo.andlib.utility.AndroidUtilities.atLeastQ;
import android.Manifest.permission;
import android.content.Context;
import android.content.pm.PackageManager;
import dagger.hilt.android.qualifiers.ApplicationContext;
import javax.inject.Inject;
import dagger.hilt.android.qualifiers.ApplicationContext;
import timber.log.Timber;
public class PermissionChecker {
@ -37,10 +39,6 @@ public class PermissionChecker {
: canAccessForegroundLocation();
}
public boolean canAccessMic() {
return checkPermissions(permission.RECORD_AUDIO);
}
private boolean checkPermissions(String... permissions) {
for (String permission : permissions) {
if (context.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {

@ -8,7 +8,6 @@ import android.Manifest.permission;
public abstract class PermissionRequestor {
public static final int REQUEST_CALENDAR = 51;
public static final int REQUEST_MIC = 52;
public static final int REQUEST_GOOGLE_ACCOUNTS = 53;
public static final int REQUEST_BACKGROUND_LOCATION = 54;
public static final int REQUEST_FOREGROUND_LOCATION = 55;
@ -19,12 +18,6 @@ public abstract class PermissionRequestor {
this.permissionChecker = permissionChecker;
}
public void requestMic() {
if (!permissionChecker.canAccessMic()) {
requestPermissions(REQUEST_MIC, permission.RECORD_AUDIO);
}
}
public boolean requestCalendarPermissions() {
return requestCalendarPermissions(REQUEST_CALENDAR);
}

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
** Copyright (c) 2012 Todoroo Inc
**
** See the file "LICENSE" for the full license governing this code.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dip"
android:layout_marginEnd="10dip"
android:orientation="vertical">
<Chronometer
android:id="@+id/timer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:gravity="center"
android:textSize="24sp"/>
<TextView
android:id="@+id/stop_recording"
android:layout_width="fill_parent"
android:layout_height="35dip"
android:layout_marginBottom="10dip"
android:layout_marginStart="10dip"
android:layout_marginEnd="10dip"
android:background="@color/overdue"
android:gravity="center"
android:text="@string/audio_stop_recording"
android:textColor="@android:color/white"
android:textSize="24sp"/>
</LinearLayout>

@ -70,8 +70,6 @@
<string name="gtasks_GPr_header">مهام قوقل</string>
<string name="premium_record_audio">تسجيل ملاحظة</string>
<string name="premium_remove_file_confirm">هل أنت متأكد؟ لا يمكن التراجع</string>
<string name="audio_recording_title">تسجيل صوت</string>
<string name="audio_stop_recording">توقف عن التسجيل</string>
<string name="random_reminder_hour">ساعة</string>
<string name="random_reminder_day">يوم</string>
<string name="random_reminder_week">أسبوع</string>

@ -134,8 +134,6 @@
<string name="gtasks_error_accountNotFound">Акаунт %s не е намерен-моля да излезнете и да влязнете отново от настройките на Google Tasks.</string>
<string name="premium_record_audio">Записване на бележка</string>
<string name="premium_remove_file_confirm">Сигурни ли сте? Не може да бъде отменено</string>
<string name="audio_recording_title">Записване на звук</string>
<string name="audio_stop_recording">Спиране на записа</string>
<string name="ring_once">Звънене веднъж</string>
<string name="ring_five_times">Звънене пет пъти</string>
<string name="ring_nonstop">Звънене без прекъсване</string>

@ -108,8 +108,6 @@
<string name="gtasks_error_accountNotFound">Účet %s nebyl nalezen — přes nastavení Google Tasks se odhlaste a znovu přihlaste.</string>
<string name="premium_record_audio">Nahrát poznámku</string>
<string name="premium_remove_file_confirm">Opravdu\? Nelze vrátit zpět</string>
<string name="audio_recording_title">Zvuk se nahrává</string>
<string name="audio_stop_recording">Ukončit nahrávání</string>
<string name="random_reminder_hour">hodina</string>
<string name="random_reminder_day">den</string>
<string name="random_reminder_week">týden</string>

@ -498,9 +498,7 @@
<string name="ring_nonstop">Ring uafbrudt</string>
<string name="ring_five_times">Ring fem gange</string>
<string name="ring_once">Ring én gang</string>
<string name="audio_stop_recording">Stop optagelse</string>
<string name="premium_record_audio">Optag en note</string>
<string name="audio_recording_title">Optager lyd</string>
<string name="premium_remove_file_confirm">Er du sikker\? Det kan ikke fortrydes</string>
<string name="gtasks_GLA_errorIOAuth">Beklager, noget gik galt i kommunikationen med Googles servere. Prøv igen senere.</string>
<string name="gtasks_GLA_authenticating">Godkender…</string>

@ -128,8 +128,6 @@
<string name="gtasks_error_accountNotFound">Konto %s nicht gefunden. Bitte abmelden und erneut über die Einstellungen von Google Tasks anmelden.</string>
<string name="premium_record_audio">Notiz aufzeichnen</string>
<string name="premium_remove_file_confirm">Sind Sie sicher? Das kann nicht rückgängig gemacht werden</string>
<string name="audio_recording_title">Audio aufnehmen</string>
<string name="audio_stop_recording">Aufnahme stoppen</string>
<string name="ring_once">Einmal klingeln</string>
<string name="ring_five_times">Fünfmal klingeln</string>
<string name="ring_nonstop">Ununterbrochen klingeln</string>

@ -101,8 +101,6 @@
<string name="gtasks_error_accountNotFound">Λογαριασμός %s δεν βρέθηκε - παρακαλώ αποσυνδεθείτε και συνδεθείτε πάλι απο τις ρυθμίσεις του Google Tasks.</string>
<string name="premium_record_audio">Ηχογράφηση σημείωσης</string>
<string name="premium_remove_file_confirm">Είστε σίγουρος; Δεν μπορεί να ακυρωθεί</string>
<string name="audio_recording_title">Εγγραφή Ήχου</string>
<string name="audio_stop_recording">Σταμάτημα εγγραφής</string>
<string name="random_reminder_hour">μια ώρα</string>
<string name="random_reminder_day">μια μέρα</string>
<string name="random_reminder_week">μια εβδομάδα</string>

@ -349,8 +349,6 @@
<string name="snooze_all">Paŭzigi ĉiujn</string>
<string name="rmd_NoA_snooze">Paŭzigi</string>
<string name="rmd_NoA_done">Finite</string>
<string name="audio_stop_recording">Halti registradon</string>
<string name="audio_recording_title">Sonregistrado</string>
<string name="premium_record_audio">Registri noton</string>
<string name="gtasks_GPr_header">Google Tasks</string>
<string name="gtasks_GLA_authenticating">Aŭtentigado…</string>

@ -128,8 +128,6 @@
<string name="gtasks_error_accountNotFound">No se ha encontrado la cuenta %s — por favor, cierra sesión y vuelve a iniciarla desde la configuración de Google Tasks.</string>
<string name="premium_record_audio">Grabar una nota</string>
<string name="premium_remove_file_confirm">Está seguro? No se puede deshacer</string>
<string name="audio_recording_title">Grabando Audio</string>
<string name="audio_stop_recording">Detener grabación</string>
<string name="ring_once">Sonar una vez</string>
<string name="ring_five_times">Sonar cinco veces</string>
<string name="ring_nonstop">Sonar sin parar</string>

@ -102,8 +102,6 @@
<string name="gtasks_GLA_authenticating">Autentimine…</string>
<string name="gtasks_GPr_header">Google Tasks</string>
<string name="premium_remove_file_confirm">Oled sa kindel\? Seda ei saa tühistada</string>
<string name="audio_recording_title">Heli salvestamine</string>
<string name="audio_stop_recording">Peata salvestamine</string>
<string name="ring_once">Helista üks kord</string>
<string name="ring_five_times">Helista 5 korda</string>
<string name="ring_nonstop">Helista lõputult</string>

@ -130,8 +130,6 @@
<string name="gtasks_error_accountNotFound">Ez da %s kontua aurkitu, amaitu saioa eta hasi saioa berriro Google Tasks ezarpenetatik.</string>
<string name="premium_record_audio">Grabatu ohar bat</string>
<string name="premium_remove_file_confirm">Ziur al zaude\? Hau ezin da desegin</string>
<string name="audio_recording_title">Audioa grabatzen</string>
<string name="audio_stop_recording">Gelditu grabazioa</string>
<string name="ring_once">Doinua behin</string>
<string name="ring_five_times">Doinua bost aldiz</string>
<string name="ring_nonstop">Doinua etengabe</string>

@ -87,8 +87,6 @@
<string name="gtasks_GPr_header">وظایف گوگل</string>
<string name="premium_record_audio">ذخیره یادداشت</string>
<string name="premium_remove_file_confirm">آیا مطمن هستید؟ قادر به برگرداندن نخواهید بود</string>
<string name="audio_recording_title">ضبط صدا</string>
<string name="audio_stop_recording">توقف ضبط</string>
<string name="ring_once">یک بار زنگ بزن</string>
<string name="ring_five_times">پنج بار زنگ بزن</string>
<string name="ring_nonstop">بدون توقف زنگ بزن</string>

@ -119,8 +119,6 @@
<string name="gtasks_error_accountNotFound">Tiliä %s ei löydy kirjaudu ulos ja kirjaudu uudelleen Google Tehtävien asetuksiin.</string>
<string name="premium_record_audio">Tallenna muistiinpano</string>
<string name="premium_remove_file_confirm">Oletko varma? Ei voi peruuttaa</string>
<string name="audio_recording_title">Tallentaa ääntä</string>
<string name="audio_stop_recording">Lopeta tallennus</string>
<string name="ring_once">Soi kerran</string>
<string name="ring_five_times">Soi viisi kertaa</string>
<string name="ring_nonstop">Soi jatkuvasti</string>

@ -121,8 +121,6 @@
<string name="gtasks_error_accountNotFound">Le compte %s est introuvable veuillez vous déconnecter puis vous reconnecter depuis les préférences Google Tasks.</string>
<string name="premium_record_audio">Enregistrer un commentaire</string>
<string name="premium_remove_file_confirm">Êtes-vous sûr(e) \? Cette opération est irréversible</string>
<string name="audio_recording_title">Enregistrement audio</string>
<string name="audio_stop_recording">Arrêter l\'enregistrement</string>
<string name="ring_once">Sonner une fois</string>
<string name="ring_five_times">Sonner cinq fois</string>
<string name="ring_nonstop">Sonner en continu</string>

@ -120,8 +120,6 @@
<string name="gtasks_error_accountNotFound">No se ha encontrado la cuenta %s —por favor, cierra sesión y vuelve a iniciarla desde la configuración de Google Tasks</string>
<string name="premium_record_audio">Grabar una nota</string>
<string name="premium_remove_file_confirm">Está seguro? No se puede deshacer</string>
<string name="audio_recording_title">Grabando Audio</string>
<string name="audio_stop_recording">Detener grabación</string>
<string name="ring_once">Sonar una vez</string>
<string name="ring_five_times">Sonar cinco veces</string>
<string name="ring_nonstop">Sonar sin parar</string>

@ -500,8 +500,6 @@
<string name="ring_nonstop">Zvoni neprekidno</string>
<string name="ring_five_times">Zvoni pet puta</string>
<string name="ring_once">Zvoni jednom</string>
<string name="audio_stop_recording">Prekini snimati</string>
<string name="audio_recording_title">Snimanje zvuka</string>
<string name="premium_remove_file_confirm">Sigurno\? Ne može se poništiti</string>
<string name="premium_record_audio">Snimi bilješku</string>
<string name="gtasks_error_accountNotFound">Račun %s nije pronađen odjavi se i ponovo se prijavi putem Google Tasks postavki.</string>

@ -127,8 +127,6 @@
<string name="gtasks_error_accountNotFound">%s fiók nem található — kérlek, jelentkezz ki, és vissza a Google Tasks beállításokban.</string>
<string name="premium_record_audio">Jegyzet rögzítése</string>
<string name="premium_remove_file_confirm">Biztos benne? A művelet nem visszavonható</string>
<string name="audio_recording_title">Hang rögzítése</string>
<string name="audio_stop_recording">Hangrögzítés leállítása</string>
<string name="ring_once">Egy csengés</string>
<string name="ring_five_times">Öt csengés</string>
<string name="ring_nonstop">Folyamatos csengés</string>

@ -91,8 +91,6 @@
<string name="gtasks_error_accountNotFound">Akun %s tidak ditemukan—silakan keluar dan masuk kembali dari pengaturan Google Tasks.</string>
<string name="premium_record_audio">Rekam catatan</string>
<string name="premium_remove_file_confirm">Apakah anda yakin\? Ini tidak dapat dibatalkan</string>
<string name="audio_recording_title">Merekam Audio</string>
<string name="audio_stop_recording">Hentikan Merekam</string>
<string name="ring_once">Dering sekali</string>
<string name="ring_five_times">Dering lima kali</string>
<string name="ring_nonstop">Dering nonstop</string>

@ -130,8 +130,6 @@
<string name="gtasks_error_accountNotFound">Account %s non trovato—esci ed accedi nuovamente dalle impostazioni di Google Tasks.</string>
<string name="premium_record_audio">Registra una nota</string>
<string name="premium_remove_file_confirm">Sei sicuro/a\? L\'azione non può essere annullata</string>
<string name="audio_recording_title">Registrazione audio</string>
<string name="audio_stop_recording">Termina registrazione</string>
<string name="ring_once">Suona una volta</string>
<string name="ring_five_times">Suona cinque volte</string>
<string name="ring_nonstop">Suona ininterrottamente</string>

@ -130,8 +130,6 @@
<string name="gtasks_error_accountNotFound">החשבון %s לא נמצא. אנא התנתק והתחבר שוב במסך הגדרות של ״משימות גוגל״.</string>
<string name="premium_record_audio">הקלד הערה</string>
<string name="premium_remove_file_confirm">בטוח? לא ניתן לבטל את הפעולה</string>
<string name="audio_recording_title">מקליטה שֵׁמַע</string>
<string name="audio_stop_recording">הפסק הקלטה</string>
<string name="ring_once">צלצל פעם אחת</string>
<string name="ring_five_times">צלצל חמש פעמים</string>
<string name="ring_nonstop">צלצל ללא הפסקה</string>

@ -130,8 +130,6 @@
<string name="gtasks_error_accountNotFound">アカウント %s が見つかりません—ログアウトして再度 Google Tasks 設定からログインしてください.</string>
<string name="premium_record_audio">注釈を記録</string>
<string name="premium_remove_file_confirm">よろしいですか? 取り消しできません</string>
<string name="audio_recording_title">音声を録音中</string>
<string name="audio_stop_recording">録音を停止</string>
<string name="ring_once">1回通知音を鳴らす</string>
<string name="ring_five_times">5回通知音を鳴らす</string>
<string name="ring_nonstop">通知音を鳴らし続ける</string>

@ -128,8 +128,6 @@
<string name="gtasks_error_accountNotFound">%s 계정을 찾을 수 없습니다 - 로그아웃하고 구글 할일목록 (Google Tasks) 설정에서 다시 로그인해 보세요.</string>
<string name="premium_record_audio">노트 기록</string>
<string name="premium_remove_file_confirm">정말입니까? 되돌릴 수 없습니다</string>
<string name="audio_recording_title">오디오 녹음 중</string>
<string name="audio_stop_recording">녹음 중단</string>
<string name="ring_once">한번 울림</string>
<string name="ring_five_times">다섯번 울림</string>
<string name="ring_nonstop">계속 울림</string>

@ -134,8 +134,6 @@
<string name="gtasks_error_accountNotFound">Paskyra %s nerasta - prašome atsijungti ir prisijungti iš Google Tasks nustatymų.</string>
<string name="premium_record_audio">Įrašyti pastabą</string>
<string name="premium_remove_file_confirm">Ar tikrai? Nebegalės būti atstatyta</string>
<string name="audio_recording_title">Įrašyti garsą</string>
<string name="audio_stop_recording">Stabdyti įrašą</string>
<string name="ring_once">Suskambėti vieną kartą</string>
<string name="ring_five_times">Suskambėti penkis kartus</string>
<string name="ring_nonstop">Skambėti nepaliaujant</string>

@ -222,8 +222,6 @@
<string name="gtasks_error_accountNotFound">Kontoen %s ble ikke funnet. Logg ut og inn igjen fra Google Tasks-innstillingene.</string>
<string name="premium_record_audio">Spill inn en anmerkning</string>
<string name="premium_remove_file_confirm">Er du sikker\? Dette kan ikke reverseres</string>
<string name="audio_recording_title">Spiller inn lyd</string>
<string name="audio_stop_recording">Stopp opptak</string>
<string name="ring_once">Ring én gang</string>
<string name="ring_five_times">Ring fem ganger</string>
<string name="ring_nonstop">Ring konstant</string>

@ -124,8 +124,6 @@
<string name="gtasks_error_accountNotFound">Account %s niet gevonden—probeer opnieuw in te loggen vanuit de instellingen van Google Taken.</string>
<string name="premium_record_audio">Een notitie opnemen</string>
<string name="premium_remove_file_confirm">Weet je het zeker? Dit kan niet ongedaan gemaakt worden</string>
<string name="audio_recording_title">Bezig met opname</string>
<string name="audio_stop_recording">Opname stoppen</string>
<string name="ring_once">Ring eenmalig</string>
<string name="ring_five_times">Ring vijf keer</string>
<string name="ring_nonstop">Ring continue</string>

@ -124,8 +124,6 @@
<string name="gtasks_error_accountNotFound">Nie znaleziono konta %s —proszę wyloguj się i zaloguj ponownie w ustawieniach Google Zadań.</string>
<string name="premium_record_audio">Nagraj notatkę</string>
<string name="premium_remove_file_confirm">Jesteś pewny\? Tych zmian nie można cofnąć</string>
<string name="audio_recording_title">Nagrywanie dźwięku</string>
<string name="audio_stop_recording">Zakończ nagrywanie</string>
<string name="ring_once">Dzwoń raz</string>
<string name="ring_five_times">Dzwoń pięć razy</string>
<string name="ring_nonstop">Dzwoń nonstop</string>

@ -125,8 +125,6 @@
<string name="gtasks_error_accountNotFound">Conta %s não encontrada—Desconecte e conecte-se novamente pelo painel Google Tasks.</string>
<string name="premium_record_audio">Gravar uma nota</string>
<string name="premium_remove_file_confirm">Tem certeza\? Não pode ser desfeito</string>
<string name="audio_recording_title">Gravando Áudio</string>
<string name="audio_stop_recording">Parar Gravação</string>
<string name="ring_once">Tocar uma vez</string>
<string name="ring_five_times">Tocar cinco vezes</string>
<string name="ring_nonstop">Tocar continuamente</string>

@ -119,8 +119,6 @@
<string name="gtasks_error_accountNotFound">Não foi encontrada a conta %s. Termine a sessão e inicie-a novamente nas definições das tarefas Google.</string>
<string name="premium_record_audio">Gravar uma nota áudio</string>
<string name="premium_remove_file_confirm">Tem certeza\? A ação não pode ser anulada</string>
<string name="audio_recording_title">Gravação áudio</string>
<string name="audio_stop_recording">Parar gravação</string>
<string name="ring_once">Tocar uma vez</string>
<string name="ring_five_times">Tocar 5 vezes</string>
<string name="ring_nonstop">Tocar sem parar</string>

@ -411,8 +411,6 @@
<string name="ring_nonstop">Sună non-stop</string>
<string name="ring_five_times">Sună de cinci ori</string>
<string name="ring_once">Sună o dată</string>
<string name="audio_stop_recording">Opriți înregistrarea</string>
<string name="audio_recording_title">Înregistrare audio</string>
<string name="premium_remove_file_confirm">Ești sigur\? Nu poate fi anulat</string>
<string name="premium_record_audio">Înregistrați o notă</string>
<string name="gtasks_error_accountNotFound">Contul %s nu a fost găsit - vă rugăm să vă deconectați și să vă conectați din nou din setările Google Tasks.</string>

@ -129,8 +129,6 @@
<string name="gtasks_error_accountNotFound">Учетная запись %s не найдена — пожалуйста, выйдите и войдите снова через настройки Google Tasks.</string>
<string name="premium_record_audio">Записать заметку</string>
<string name="premium_remove_file_confirm">Вы уверены? Действие нельзя отменить</string>
<string name="audio_recording_title">Запись звука</string>
<string name="audio_stop_recording">Остановить запись</string>
<string name="ring_once">1 раз</string>
<string name="ring_five_times">5 раз</string>
<string name="ring_nonstop">Звучать безостановочно</string>

@ -56,7 +56,6 @@
<string name="snooze_all">සියල්ල මඳකට මගහරින්න</string>
<string name="rmd_NoA_snooze">මඳකට මගහරින්න</string>
<string name="rmd_NoA_done">සම්පූර්ණයි</string>
<string name="audio_recording_title">ශ්‍රව්‍ය පටිගත කිරීම</string>
<string name="gtasks_GTA_clear_completed">ඉවත්කිරීම සම්පූර්ණයි</string>
<string name="CFC_tag_name">ටැගය…</string>
<string name="CFC_tag_text">ටැගය:\?</string>
@ -375,7 +374,6 @@
<string name="SSD_sort_modified">අවසන් වරට වෙනස් කරන ලද දිනය අනුව</string>
<string name="astrid_sort_order">Astrid අතින් වර්ග කිරීම</string>
<string name="TVA_add_comment">අදහස දක්වන්න…</string>
<string name="audio_stop_recording">පටිගත කිරීම නවත්වන්න</string>
<string name="premium_remove_file_confirm">ඔබට විශ්වාසද\? අහෝසි කළ නොහැක</string>
<string name="premium_record_audio">සටහනක් පටිගත කරන්න</string>
<string name="gtasks_error_accountNotFound">%s ගිණුම සොයාගත නොහැකිවිය - කරුණාකර Log out වී Google Tasks සැකසුම් වලින් නැවත ලොග් වන්න.</string>

@ -130,8 +130,6 @@
<string name="gtasks_error_accountNotFound">Účet %s sa nenašiel—prosím, odhlás sa a znovu prihlás v nastaveniach Úlohy Google.</string>
<string name="premium_record_audio">Nahrať poznámku</string>
<string name="premium_remove_file_confirm">Naozaj? Nedá sa vrátiť</string>
<string name="audio_recording_title">Nahrávanie zvuku</string>
<string name="audio_stop_recording">Zastaviť nahrávanie</string>
<string name="ring_once">Zvoniť raz</string>
<string name="ring_five_times">Zvoniť päť krát</string>
<string name="ring_nonstop">Zvoniť neustále</string>

@ -101,8 +101,6 @@
<string name="gtasks_error_accountNotFound">Račun %s ni najden—prosimo odjavite se, nato pa ponovno prijavite skozi nastavitve Google Nalog.</string>
<string name="premium_record_audio">Posnemi opombo</string>
<string name="premium_remove_file_confirm">Ste prepričani? Tega ni mogoče razveljaviti</string>
<string name="audio_recording_title">Snemam zvok</string>
<string name="audio_stop_recording">Prekini snemanje</string>
<string name="random_reminder_hour">na uro</string>
<string name="random_reminder_day">dan</string>
<string name="random_reminder_week">na teden</string>

@ -119,8 +119,6 @@
<string name="gtasks_error_accountNotFound">Kontot %s kunde inte hittas. Logga ut och in på nytt i inställningarna för Google Uppgifter.</string>
<string name="premium_record_audio">Spela in en anteckning</string>
<string name="premium_remove_file_confirm">Är du säker? Detta kan inte ångras</string>
<string name="audio_recording_title">Spelar in ljud</string>
<string name="audio_stop_recording">Avsluta inspelning</string>
<string name="ring_once">Ring en gång</string>
<string name="ring_five_times">Ring fem gånger</string>
<string name="ring_nonstop">Ring konstant</string>

@ -124,8 +124,6 @@
<string name="random_reminder_week">ஒரு வாரம்</string>
<string name="random_reminder_day">ஒரு நாள்</string>
<string name="random_reminder_hour">ஒரு மணி நேரம்</string>
<string name="audio_stop_recording">பதிவு செய்வதை நிறுத்து</string>
<string name="audio_recording_title">ஆடியோ பதிவு</string>
<string name="premium_remove_file_confirm">நீ சொல்வது உறுதியா\? செயல்தவிர்க்க முடியாது</string>
<string name="premium_record_audio">ஒரு குறிப்பைப் பதிவுசெய்க</string>
<string name="gtasks_error_accountNotFound">கணக்கு %s காணப்படவில்லை - தயவுசெய்து வெளியேறி, Google பணிகள் அமைப்புகளிலிருந்து மீண்டும் உள்நுழைக.</string>

@ -522,8 +522,6 @@
<string name="ring_nonstop">แหวนไม่หยุดนิ่ง</string>
<string name="ring_five_times">แหวนห้าครั้ง</string>
<string name="ring_once">เรียกหนึ่งครั้ง</string>
<string name="audio_stop_recording">หยุดการบันทึก</string>
<string name="audio_recording_title">การบันทึกเสียง</string>
<string name="premium_remove_file_confirm">เธอแน่ใจหรือ ไม่สามารถเลิกทําได้</string>
<string name="premium_record_audio">การบันทึกบันทึกย่อ</string>
<string name="gtasks_GPr_header">งานของ Google</string>

@ -130,8 +130,6 @@
<string name="gtasks_error_accountNotFound">%s hesabı bulunamadı—lütfen çıkış yapıp Google Görevler ayarlarından yeniden oturum açın.</string>
<string name="premium_record_audio">Bir not kaydet</string>
<string name="premium_remove_file_confirm">Emin misiniz? Geri döndürülemez</string>
<string name="audio_recording_title">Ses Kaydediliyor</string>
<string name="audio_stop_recording">Kaydı Durdur</string>
<string name="ring_once">Bir kez çal</string>
<string name="ring_five_times">Beş kez çal</string>
<string name="ring_nonstop">Durmadan çal</string>

@ -129,8 +129,6 @@
<string name="gtasks_error_accountNotFound">Обліковий запис %s не знайдено — будь ласка, вийдіть і увійдіть знову через налаштування Google Tasks.</string>
<string name="premium_record_audio">Записати голосову замітку</string>
<string name="premium_remove_file_confirm">Ви впевнені\? Це не можна буде скасувати</string>
<string name="audio_recording_title">Запис звуку</string>
<string name="audio_stop_recording">Зупинити запис</string>
<string name="ring_once">Звучати один раз</string>
<string name="ring_five_times">Звучати п’ять разів</string>
<string name="ring_nonstop">Звучати безперервно</string>

@ -173,8 +173,6 @@
<string name="ring_nonstop">بغیر رکے رنگ بجنا</string>
<string name="ring_five_times">پانچ بار رنگ بجنا</string>
<string name="ring_once">ایک بار رنگ بجنا</string>
<string name="audio_stop_recording">ریکارڈنگ روکیں</string>
<string name="audio_recording_title">آڈیو ریکارڈ ہو رہی</string>
<string name="premium_remove_file_confirm">کیا آپ تیار ہیں؟ یہ واپس نہیں ہو گا</string>
<string name="premium_record_audio">ایک نوٹ ریکارڈ کریں</string>
<string name="repeat_weekly">ہفتہ وار دہرانا</string>

@ -606,8 +606,6 @@
<string name="ring_nonstop">Đổ chuông không ngừng</string>
<string name="ring_five_times">Đổ chuông năm lần</string>
<string name="ring_once">Đổ chuông một lần</string>
<string name="audio_stop_recording">Dừng ghi</string>
<string name="audio_recording_title">Đang ghi âm</string>
<string name="premium_remove_file_confirm">Bạn có chắc không\? Không thể hoàn tác</string>
<string name="premium_record_audio">Ghi lại một bản ghi chú</string>
<string name="gtasks_error_accountNotFound">Không tìm thấy tài khoản %s—vui lòng đăng xuất và đăng nhập lại trong cài đặt của Google Tasks.</string>

@ -117,8 +117,6 @@
<string name="gtasks_error_accountNotFound">找不到帐户 %s —请退出然后从Google Tasks设置中重新登录。</string>
<string name="premium_record_audio">录制一条便笺</string>
<string name="premium_remove_file_confirm">您确定吗?无法恢复的喔</string>
<string name="audio_recording_title">正在录制音频</string>
<string name="audio_stop_recording">停止录制</string>
<string name="ring_once">响铃一次</string>
<string name="ring_five_times">响铃五次</string>
<string name="ring_nonstop">响个不停</string>

@ -97,8 +97,6 @@
<string name="gtasks_error_accountNotFound">找不到帳戶%s——請退出然後從Google 工作表設置中重新登錄。</string>
<string name="premium_record_audio">錄製一條便箋</string>
<string name="premium_remove_file_confirm">您確定嗎?無法恢復的喔</string>
<string name="audio_recording_title">正在錄製音頻</string>
<string name="audio_stop_recording">停止錄製</string>
<string name="ring_once">響鈴一次</string>
<string name="ring_five_times">響鈴五次</string>
<string name="ring_nonstop">不斷響鈴</string>

@ -38,6 +38,7 @@
<string name="url_backups">https://tasks.org/backups</string>
<string name="url_translations">https://tasks.org/translations</string>
<string name="url_notifications">https://tasks.org/notifications</string>
<string name="url_troubleshoot_intents">https://tasks.org/intents</string>
<string name="p_date_shortcut_morning">date_shortcut_morning</string>
<string name="p_date_shortcut_afternoon">date_shortcut_afternoon</string>

@ -153,8 +153,6 @@ File %1$s contained %2$s.\n\n
<string name="gtasks_error_accountNotFound">Account %s not found—please log out and log back in from the Google Tasks settings.</string>
<string name="premium_record_audio">Record a note</string>
<string name="premium_remove_file_confirm">Are you sure? Cannot be undone</string>
<string name="audio_recording_title">Recording Audio</string>
<string name="audio_stop_recording">Stop Recording</string>
<string name="ring_once">Ring once</string>
<string name="ring_five_times">Ring five times</string>
<string name="ring_nonstop">Ring nonstop</string>

Loading…
Cancel
Save