diff --git a/app/build.gradle b/app/build.gradle
index d0822d57..15601dc9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -59,8 +59,8 @@ android {
applicationId "com.amaze.fileutilities"
minSdk 19
targetSdk 31
- versionCode 75
- versionName "1.75"
+ versionCode 76
+ versionName "1.76"
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b38fa4e9..a9e56140 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,6 +24,7 @@
tools:ignore="ProtectedPermissions" />
+
AudioPlayerInterfaceHandlerViewModel.WAVEFORM_THRESHOLD_BYTES) {
viewModel.forceShowSeekbar = true
}
diff --git a/app/src/main/java/com/amaze/fileutilities/audio_player/IAudioPlayerInterfaceHandler.kt b/app/src/main/java/com/amaze/fileutilities/audio_player/IAudioPlayerInterfaceHandler.kt
index f1af9381..c1139377 100644
--- a/app/src/main/java/com/amaze/fileutilities/audio_player/IAudioPlayerInterfaceHandler.kt
+++ b/app/src/main/java/com/amaze/fileutilities/audio_player/IAudioPlayerInterfaceHandler.kt
@@ -442,7 +442,7 @@ interface IAudioPlayerInterfaceHandler : OnPlaybackInfoUpdate, LifecycleOwner {
getContextWeakRef().get()?.let {
context ->
val file = progressHandler.audioPlaybackInfo
- .audioModel.getUri().getFileFromUri()
+ .audioModel.getUri().getFileFromUri(context)
if (file != null) {
lifecycleScope.launch {
try {
@@ -502,7 +502,7 @@ interface IAudioPlayerInterfaceHandler : OnPlaybackInfoUpdate, LifecycleOwner {
context ->
if (context != null) {
val file = audioService?.getAudioProgressHandlerCallback()?.audioPlaybackInfo
- ?.audioModel?.getUri()?.getFileFromUri()
+ ?.audioModel?.getUri()?.getFileFromUri(context)
if (file != null) {
lifecycleScope.launch {
try {
diff --git a/app/src/main/java/com/amaze/fileutilities/docx_viewer/DocxModel.kt b/app/src/main/java/com/amaze/fileutilities/docx_viewer/DocxModel.kt
index ad5c4287..933a211b 100644
--- a/app/src/main/java/com/amaze/fileutilities/docx_viewer/DocxModel.kt
+++ b/app/src/main/java/com/amaze/fileutilities/docx_viewer/DocxModel.kt
@@ -42,7 +42,7 @@ data class LocalDocxModel(
}
override fun getName(context: Context): String {
- uri.getFileFromUri()?.run {
+ uri.getFileFromUri(context)?.run {
return this.name
}
uri.path?.run {
diff --git a/app/src/main/java/com/amaze/fileutilities/epub_viewer/EpubViewerActivity.kt b/app/src/main/java/com/amaze/fileutilities/epub_viewer/EpubViewerActivity.kt
index 41c02a0f..cb509cbd 100644
--- a/app/src/main/java/com/amaze/fileutilities/epub_viewer/EpubViewerActivity.kt
+++ b/app/src/main/java/com/amaze/fileutilities/epub_viewer/EpubViewerActivity.kt
@@ -59,7 +59,7 @@ class EpubViewerActivity : PermissionsActivity() {
"and mimetype $mimeType"
)
epubModel = LocalEpubModel(uri = epubUri, mimeType = mimeType)
- val filePathFromUri = epubUri.getFileFromUri()
+ val filePathFromUri = epubUri.getFileFromUri(this)
if (filePathFromUri != null) {
val config: Config = Config()
.setAllowedDirection(Config.AllowedDirection.ONLY_HORIZONTAL)
diff --git a/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalyseFragment.kt b/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalyseFragment.kt
index f72a604d..8cef7f17 100644
--- a/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalyseFragment.kt
+++ b/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalyseFragment.kt
@@ -24,6 +24,7 @@ import android.content.Intent
import android.content.SharedPreferences
import android.os.Build
import android.os.Bundle
+import android.os.Handler
import android.provider.Settings
import android.view.LayoutInflater
import android.view.View
@@ -248,8 +249,12 @@ class AnalyseFragment : AbstractMediaFileInfoOperationsFragment() {
junkFilesPreview.invalidateProgress(true, null)
junkFiles?.let {
junkFilesPreview.invalidateProgress(false, null)
- junkFilesPreview.loadPreviews(junkFiles) {
- cleanButtonClick(it) {
+ junkFilesPreview.loadSummaryTextPreview(
+ if (it.first.isEmpty())
+ null else it.second,
+ null
+ ) {
+ cleanButtonClick(it.first) {
filesViewModel.junkFilesLiveData = null
thread {
installedAppsDao.deleteAll()
@@ -279,7 +284,10 @@ class AnalyseFragment : AbstractMediaFileInfoOperationsFragment() {
analyseViewModel.getClutteredVideos(mediaFilePair.second)
.observe(viewLifecycleOwner) { clutteredVideosInfo ->
clutteredVideosInfo?.let {
- clutteredVideoPreview.invalidateProgress(false, null)
+ clutteredVideoPreview.invalidateProgress(
+ false,
+ null
+ )
clutteredVideoPreview.loadPreviews(clutteredVideosInfo) {
cleanButtonClick(it) {
analyseViewModel.clutteredVideosLiveData = null
@@ -291,7 +299,10 @@ class AnalyseFragment : AbstractMediaFileInfoOperationsFragment() {
.observe(viewLifecycleOwner) {
largeVideosList ->
largeVideosList?.let {
- largeVideoPreview.invalidateProgress(false, null)
+ largeVideoPreview.invalidateProgress(
+ false,
+ null
+ )
largeVideoPreview.loadPreviews(largeVideosList) {
cleanButtonClick(it) {
analyseViewModel.largeVideosLiveData = null
@@ -308,7 +319,10 @@ class AnalyseFragment : AbstractMediaFileInfoOperationsFragment() {
largeDownloads ->
largeDownloadPreview.invalidateProgress(true, null)
largeDownloads?.let {
- largeDownloadPreview.invalidateProgress(false, null)
+ largeDownloadPreview.invalidateProgress(
+ false,
+ null
+ )
largeDownloadPreview.loadPreviews(largeDownloads) {
cleanButtonClick(it) {
filesViewModel.largeDownloadsLiveData = null
@@ -388,6 +402,32 @@ class AnalyseFragment : AbstractMediaFileInfoOperationsFragment() {
}
}
}
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ memoryUsagePreview.visibility = View.VISIBLE
+ filesViewModel.getMemoryInfo().observe(viewLifecycleOwner) {
+ memoryUsage ->
+ memoryUsagePreview.invalidateProgress(true, null)
+ memoryUsage?.let {
+ memoryUsagePreview.invalidateProgress(false, null)
+ memoryUsagePreview.loadSummaryTextPreview(it, {
+ filesViewModel.memoryInfoLiveData = null
+ reloadFragment()
+ }, {
+ filesViewModel.killBackgroundProcesses(
+ requireContext()
+ .packageManager
+ ) {
+ requireActivity().runOnUiThread {
+ requireContext()
+ .showToastOnBottom(getString(R.string.ram_usage_clear))
+ filesViewModel.memoryInfoLiveData = null
+ reloadFragment()
+ }
+ }
+ })
+ }
+ }
+ }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
unusedAppsPreview.visibility = View.VISIBLE
if (!isUsageStatsPermissionGranted()) {
@@ -434,7 +474,10 @@ class AnalyseFragment : AbstractMediaFileInfoOperationsFragment() {
mediaFileInfoList ->
mostUsedAppsPreview.invalidateProgress(true, null)
mediaFileInfoList?.let {
- mostUsedAppsPreview.invalidateProgress(false, null)
+ mostUsedAppsPreview.invalidateProgress(
+ false,
+ null
+ )
mostUsedAppsPreview.loadPreviews(mediaFileInfoList) {
cleanButtonClick(it) {
filesViewModel.mostUsedAppsLiveData = null
@@ -446,7 +489,10 @@ class AnalyseFragment : AbstractMediaFileInfoOperationsFragment() {
mediaFileInfoList ->
leastUsedAppsPreview.invalidateProgress(true, null)
mediaFileInfoList?.let {
- leastUsedAppsPreview.invalidateProgress(false, null)
+ leastUsedAppsPreview.invalidateProgress(
+ false,
+ null
+ )
leastUsedAppsPreview.loadPreviews(mediaFileInfoList) {
cleanButtonClick(it) {
filesViewModel.leastUsedAppsLiveData = null
@@ -521,6 +567,12 @@ class AnalyseFragment : AbstractMediaFileInfoOperationsFragment() {
}
}
}
+ if (analyseViewModel.fragmentScrollPosition != null) {
+ Handler().postDelayed({
+ analyseScrollView.scrollY = analyseViewModel.fragmentScrollPosition!!
+ analyseViewModel.fragmentScrollPosition = null
+ }, 1000)
+ }
}
return root
}
@@ -579,6 +631,7 @@ class AnalyseFragment : AbstractMediaFileInfoOperationsFragment() {
}
private fun reloadFragment() {
+ analyseViewModel.fragmentScrollPosition = binding.analyseScrollView.scrollY
val navController = NavHostFragment.findNavController(this)
navController.popBackStack()
navController.navigate(R.id.navigation_analyse)
diff --git a/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalyseViewModel.kt b/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalyseViewModel.kt
index 315a4abf..2634e67f 100644
--- a/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalyseViewModel.kt
+++ b/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalyseViewModel.kt
@@ -60,6 +60,7 @@ class AnalyseViewModel : ViewModel() {
var distractedImagesLiveData: MutableLiveData?>? = null
var selfieImagesLiveData: MutableLiveData?>? = null
var groupPicImagesLiveData: MutableLiveData?>? = null
+ var fragmentScrollPosition: Int? = null
fun getBlurImages(dao: BlurAnalysisDao): LiveData?> {
if (blurImagesLiveData == null) {
diff --git a/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalysisTypeView.kt b/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalysisTypeView.kt
index 11456fd6..d1fd43f1 100644
--- a/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalysisTypeView.kt
+++ b/app/src/main/java/com/amaze/fileutilities/home_page/ui/analyse/AnalysisTypeView.kt
@@ -27,6 +27,7 @@ import android.view.LayoutInflater
import android.view.View
import android.widget.Button
import android.widget.FrameLayout
+import android.widget.HorizontalScrollView
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.ProgressBar
@@ -56,9 +57,14 @@ class AnalysisTypeView(context: Context, attrs: AttributeSet?) : LinearLayout(co
private val loadingHorizontalScroll: ProgressBar
private val cancelLoadingView: ImageView
private val requirePermissionsParent: LinearLayout
+ private val requirePermissionsTitle: TextView
private val refreshParent: LinearLayout
private val grantPermissionButton: Button
private val refreshButton: Button
+ private val requirePermissionScroll: HorizontalScrollView
+ private val summaryViewParent: LinearLayout
+ private val summaryTextView: TextView
+ private val summaryViewButton: Button
private var showPreview = false
companion object {
@@ -81,8 +87,14 @@ class AnalysisTypeView(context: Context, attrs: AttributeSet?) : LinearLayout(co
cancelLoadingView = loadingProgressParent.findViewById(R.id.cancel_loading_button)
loadingHorizontalScroll = imagesListScroll.findViewById(R.id.scroll_progress)
requirePermissionsParent = imagesListParent.findViewById(R.id.require_permission_parent)
+ requirePermissionsTitle = requirePermissionsParent
+ .findViewById(R.id.require_permission_title)
refreshParent = imagesListParent.findViewById(R.id.refresh_parent)
grantPermissionButton = requirePermissionsParent.findViewById(R.id.grant_button)
+ requirePermissionScroll = imagesListScroll.findViewById(R.id.require_permission_scroll)
+ summaryViewParent = imagesListScroll.findViewById(R.id.summary_view_parent)
+ summaryTextView = imagesListScroll.findViewById(R.id.summary_view_title)
+ summaryViewButton = imagesListScroll.findViewById(R.id.summary_view_button)
refreshButton = refreshParent.findViewById(R.id.refresh_button)
val a = context.obtainStyledAttributes(
@@ -179,6 +191,31 @@ class AnalysisTypeView(context: Context, attrs: AttributeSet?) : LinearLayout(co
}
}
+ fun loadSummaryTextPreview(
+ text: String?,
+ refreshCallback: (() -> Unit)?,
+ cleanButtonClick: () -> Unit
+ ) {
+ if (text.isNullOrEmpty()) {
+ hideFade(300)
+ }
+ loadingHorizontalScroll.visibility = View.GONE
+ requirePermissionScroll.visibility = View.GONE
+ if (showPreview) {
+ summaryViewParent.visibility = View.VISIBLE
+ summaryTextView.text = text
+ if (refreshCallback != null) {
+ summaryViewButton.visibility = View.VISIBLE
+ summaryViewButton.setOnClickListener {
+ refreshCallback.invoke()
+ }
+ }
+ }
+ cleanButton.setOnClickListener {
+ cleanButtonClick.invoke()
+ }
+ }
+
private fun getImageView(mediaFileInfo: MediaFileInfo): ImageView {
val imageView = ImageView(context)
imageView.setOnClickListener {
diff --git a/app/src/main/java/com/amaze/fileutilities/home_page/ui/files/FilesViewModel.kt b/app/src/main/java/com/amaze/fileutilities/home_page/ui/files/FilesViewModel.kt
index ccda689f..e8beb180 100644
--- a/app/src/main/java/com/amaze/fileutilities/home_page/ui/files/FilesViewModel.kt
+++ b/app/src/main/java/com/amaze/fileutilities/home_page/ui/files/FilesViewModel.kt
@@ -20,7 +20,9 @@
package com.amaze.fileutilities.home_page.ui.files
+import android.app.ActivityManager
import android.app.Application
+import android.content.Context.ACTIVITY_SERVICE
import android.content.pm.ApplicationInfo
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
@@ -28,6 +30,7 @@ import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Build
import android.provider.Settings
+import android.text.format.Formatter
import androidx.annotation.RequiresApi
import androidx.core.content.FileProvider
import androidx.core.graphics.drawable.toBitmap
@@ -111,7 +114,7 @@ class FilesViewModel(val applicationContext: Application) :
var largeAppsLiveData: MutableLiveData?>? = null
var newlyInstalledAppsLiveData: MutableLiveData?>? = null
var recentlyUpdatedAppsLiveData: MutableLiveData?>? = null
- var junkFilesLiveData: MutableLiveData?>? = null
+ var junkFilesLiveData: MutableLiveData, String>?>? = null
var apksLiveData: MutableLiveData?>? = null
var gamesInstalledLiveData: MutableLiveData?>? = null
var largeFilesMutableLiveData: MutableLiveData?>? = null
@@ -121,6 +124,7 @@ class FilesViewModel(val applicationContext: Application) :
var oldDownloadsLiveData: MutableLiveData?>? = null
var oldRecordingsLiveData: MutableLiveData?>? = null
var oldScreenshotsLiveData: MutableLiveData?>? = null
+ var memoryInfoLiveData: MutableLiveData? = null
var allMediaFilesPair: ArrayList? = null
private var usedVideosSummaryTransformations: LiveData?> {
+ fun getJunkFilesLiveData(): LiveData, String>?> {
if (junkFilesLiveData == null) {
junkFilesLiveData = MutableLiveData()
junkFilesLiveData?.value = null
@@ -1301,7 +1305,16 @@ class FilesViewModel(val applicationContext: Application) :
)
}
}
- junkFilesLiveData?.postValue(result)
+ var size = 0L
+ result.forEach {
+ size += it.longSize
+ }
+ junkFilesLiveData?.postValue(
+ Pair(
+ result,
+ Formatter.formatFileSize(applicationContext, size)
+ )
+ )
}
}
@@ -1499,20 +1512,73 @@ class FilesViewModel(val applicationContext: Application) :
}
}
+ @RequiresApi(Build.VERSION_CODES.M)
+ fun getMemoryInfo(): LiveData {
+ if (memoryInfoLiveData == null) {
+ memoryInfoLiveData = MutableLiveData()
+ memoryInfoLiveData?.value = null
+ processMemoryUsage()
+ }
+ return memoryInfoLiveData!!
+ }
+
+ @RequiresApi(Build.VERSION_CODES.M)
+ private fun processMemoryUsage() {
+ viewModelScope.launch(Dispatchers.IO) {
+ val activityManager = applicationContext
+ .getSystemService(ACTIVITY_SERVICE) as ActivityManager
+ val memInfo = ActivityManager.MemoryInfo()
+ activityManager.getMemoryInfo(memInfo)
+ val totalMemory = memInfo.totalMem
+ val availMemory = memInfo.availMem
+ val usageSummary = applicationContext.resources.getString(
+ R.string.ram_usage_title,
+ String.format("%s", Formatter.formatFileSize(applicationContext, availMemory)),
+ String.format("%s", Formatter.formatFileSize(applicationContext, totalMemory))
+ )
+ memoryInfoLiveData?.postValue(usageSummary)
+ }
+ }
+
+ fun killBackgroundProcesses(packageManager: PackageManager, callback: () -> Unit) {
+ viewModelScope.launch(Dispatchers.IO) {
+ loadAllInstalledApps(packageManager)
+ allApps.get()?.filter {
+ it.first.packageName != applicationContext.packageName
+ }?.forEach {
+ val activityManager = applicationContext
+ .getSystemService(ACTIVITY_SERVICE) as ActivityManager
+ activityManager.killBackgroundProcesses(it.first.packageName)
+ }
+ callback.invoke()
+ }
+ }
+
private fun loadAllInstalledApps(packageManager: PackageManager) {
if (allApps.get() == null) {
val apps = packageManager.getInstalledApplications(PackageManager.GET_META_DATA)
allApps.set(
apps.map {
- var info: PackageInfo?
- var androidInfo: PackageInfo? = null
- try {
- info = packageManager.getPackageInfo(
+ val info: PackageInfo? = try {
+ packageManager.getPackageInfo(
it.packageName,
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P)
PackageManager.GET_SIGNATURES
else PackageManager.GET_SIGNING_CERTIFICATES
)
+ } catch (e: PackageManager.NameNotFoundException) {
+ log.warn(
+ "failed to find package name {} while loading apps list",
+ it.packageName,
+ e
+ )
+ null
+ }
+
+ Pair(it, info)
+ }.filter {
+ val androidInfo: PackageInfo?
+ try {
androidInfo =
packageManager.getPackageInfo(
"android",
@@ -1520,35 +1586,37 @@ class FilesViewModel(val applicationContext: Application) :
PackageManager.GET_SIGNATURES
else PackageManager.GET_SIGNING_CERTIFICATES
)
+ !Utils.isAppInSystemPartition(it.first) && (
+ it.second == null ||
+ (
+ !Utils.isSignedBySystem(it.second, androidInfo) &&
+ !it.second!!.packageName
+ .equals(applicationContext.packageName)
+ )
+ )
} catch (e: PackageManager.NameNotFoundException) {
log.warn(
"failed to find package name {} while loading apps list",
- it.packageName,
+ it.first.packageName,
e
)
- info = null
+ true
}
- !Utils.isAppInSystemPartition(it) &&
- (
- info == null ||
- (
- !Utils.isSignedBySystem(info, androidInfo) &&
- !info.packageName.equals(applicationContext.packageName)
- )
- )
- Pair(it, info)
}
)
- insertInstalledApps(apps)
+ insertInstalledApps()
}
}
- private fun insertInstalledApps(infoList: List) {
- val installedApps = infoList.map {
- InstalledApps(it.packageName, listOf(it.sourceDir, it.dataDir))
+ private fun insertInstalledApps() {
+ allApps.get()?.let {
+ infoListPair ->
+ val installedApps = infoListPair.map {
+ InstalledApps(it.first.packageName, listOf(it.first.sourceDir, it.first.dataDir))
+ }
+ val dao = AppDatabase.getInstance(applicationContext).installedAppsDao()
+ dao.insert(installedApps)
}
- val dao = AppDatabase.getInstance(applicationContext).installedAppsDao()
- dao.insert(installedApps)
}
/**
diff --git a/app/src/main/java/com/amaze/fileutilities/image_viewer/ImageViewerFragment.kt b/app/src/main/java/com/amaze/fileutilities/image_viewer/ImageViewerFragment.kt
index 4950266a..348a2e05 100644
--- a/app/src/main/java/com/amaze/fileutilities/image_viewer/ImageViewerFragment.kt
+++ b/app/src/main/java/com/amaze/fileutilities/image_viewer/ImageViewerFragment.kt
@@ -140,7 +140,7 @@ class ImageViewerFragment : AbstractMediaFragment() {
customToolbar.title.text = DocumentFile.fromSingleUri(
requireContext(),
quickViewType!!.uri
- )?.name ?: quickViewType.uri.getFileFromUri()?.name
+ )?.name ?: quickViewType.uri.getFileFromUri(requireContext())?.name
customToolbar.backButton.setOnClickListener {
requireActivity().onBackPressed()
}
@@ -167,7 +167,7 @@ class ImageViewerFragment : AbstractMediaFragment() {
private fun setupPropertiesSheet(quickViewType: LocalImageModel) {
quickViewType.let {
- val file = it.uri.getFileFromUri()
+ val file = it.uri.getFileFromUri(requireContext())
file?.let {
file ->
_binding?.run {
@@ -458,7 +458,7 @@ class ImageViewerFragment : AbstractMediaFragment() {
resources.getString(R.string.delete)
) {
localImageModel!!.uri
- .getFileFromUri()?.let {
+ .getFileFromUri(requireContext())?.let {
file ->
val toDelete = Collections.singletonList(
MediaFileInfo.fromFile(
diff --git a/app/src/main/java/com/amaze/fileutilities/pdf_viewer/PdfViewerActivity.kt b/app/src/main/java/com/amaze/fileutilities/pdf_viewer/PdfViewerActivity.kt
index 9aae00d8..c0cd813d 100644
--- a/app/src/main/java/com/amaze/fileutilities/pdf_viewer/PdfViewerActivity.kt
+++ b/app/src/main/java/com/amaze/fileutilities/pdf_viewer/PdfViewerActivity.kt
@@ -39,6 +39,7 @@ import com.amaze.fileutilities.databinding.PdfViewerActivityBinding
import com.amaze.fileutilities.home_page.ui.files.FilesViewModel
import com.amaze.fileutilities.home_page.ui.files.MediaFileInfo
import com.amaze.fileutilities.utilis.dp
+import com.amaze.fileutilities.utilis.getContentName
import com.amaze.fileutilities.utilis.getFileFromUri
import com.amaze.fileutilities.utilis.hideFade
import com.amaze.fileutilities.utilis.share.showShareDialog
@@ -108,10 +109,8 @@ class PdfViewerActivity :
override fun loadComplete(nbPages: Int) {
val meta: PdfDocument.Meta = viewBinding.pdfView.documentMeta
- viewModel.pdfFileName = if (meta.title.isEmpty()) {
- pdfModel.uri.getFileFromUri()?.name
- } else {
- meta.title
+ viewModel.pdfFileName = meta.title.ifEmpty {
+ pdfModel.uri.getFileFromUri(this)?.name
}
viewBinding.pageNumber.text = String.format(
"%s / %s", viewModel.pageNumber + 1,
@@ -121,7 +120,10 @@ class PdfViewerActivity :
switchView()
}
viewBinding.customToolbar.setBackButtonClickListener { finish() }
- viewBinding.customToolbar.setTitle(viewModel.pdfFileName ?: "pdf")
+ viewBinding.customToolbar.setTitle(
+ viewModel.pdfFileName
+ ?: pdfModel.uri.getContentName(contentResolver) ?: "pdf"
+ )
viewBinding.customToolbar.setOverflowPopup(R.menu.pdf_activity) { item ->
when (item!!.itemId) {
R.id.info -> {
@@ -135,7 +137,7 @@ class PdfViewerActivity :
}
R.id.share -> {
var processed = false
- pdfModel.uri.getFileFromUri().let {
+ pdfModel.uri.getFileFromUri(this).let {
file ->
if (file == null) {
showToastInCenter(getString(R.string.failed_to_share))
diff --git a/app/src/main/java/com/amaze/fileutilities/utilis/Extensions.kt b/app/src/main/java/com/amaze/fileutilities/utilis/Extensions.kt
index dcac91ef..e10afebd 100644
--- a/app/src/main/java/com/amaze/fileutilities/utilis/Extensions.kt
+++ b/app/src/main/java/com/amaze/fileutilities/utilis/Extensions.kt
@@ -20,6 +20,7 @@
package com.amaze.fileutilities.utilis
+import android.content.ContentResolver
import android.content.Context
import android.content.SharedPreferences
import android.content.res.Resources
@@ -28,6 +29,8 @@ import android.net.ConnectivityManager
import android.net.Uri
import android.os.Build
import android.os.Environment
+import android.os.ParcelFileDescriptor
+import android.provider.MediaStore
import android.util.DisplayMetrics
import android.view.Gravity
import android.view.View
@@ -58,6 +61,9 @@ import kotlinx.coroutines.withContext
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import java.io.File
+import java.io.FileDescriptor
+import java.io.FileInputStream
+import java.io.FileOutputStream
var log: Logger = LoggerFactory.getLogger(Utils::class.java)
@@ -94,6 +100,70 @@ fun Uri.getSiblingUriFiles(): ArrayList? {
return null
}
+fun Uri.getFileFromUri(context: Context): File? {
+ if (this == Uri.EMPTY) {
+ return null
+ }
+ var songFile: File? = getFileFromUri()
+ if (songFile == null) {
+ songFile = getContentResolverFilePathFromUri(context, this)?.let {
+ filePath ->
+ File(filePath)
+ }
+ if (songFile == null) {
+ var parcelFileDescriptor: ParcelFileDescriptor? = null
+ var outputStream: FileOutputStream? = null
+ try {
+ parcelFileDescriptor = context.contentResolver.openFileDescriptor(
+ this,
+ "r"
+ )
+ parcelFileDescriptor?.let {
+ val fileDescriptor: FileDescriptor = parcelFileDescriptor.fileDescriptor
+ val fis = FileInputStream(fileDescriptor)
+ val outputFile = File(
+ context.cacheDir,
+ getContentName(context.contentResolver) ?: "sharedFile"
+ )
+ outputStream = outputFile.outputStream()
+ outputStream?.let {
+ fis.copyTo(it)
+ }
+ songFile = outputFile
+ }
+ } finally {
+ parcelFileDescriptor?.close()
+ outputStream?.close()
+ }
+ }
+ }
+ return songFile
+}
+
+fun Uri.getContentName(resolver: ContentResolver): String? {
+ var cursor: Cursor? = null
+ try {
+ cursor =
+ resolver.query(
+ this, arrayOf(MediaStore.MediaColumns.DISPLAY_NAME),
+ null,
+ null, null
+ )
+ cursor!!.moveToFirst()
+ val nameIndex = cursor.getColumnIndex(cursor.columnNames[0])
+ return if (nameIndex >= 0) {
+ cursor.getString(nameIndex)
+ } else {
+ null
+ }
+ } catch (e: Exception) {
+ log.warn("failed to load name for uri {}", this)
+ return null
+ } finally {
+ cursor?.close()
+ }
+}
+
fun Uri.getFileFromUri(): File? {
if (this == Uri.EMPTY) {
return null
@@ -116,7 +186,7 @@ fun Uri.getFileFromUri(): File? {
)
)
if (songFile == null || !songFile.exists()) {
- songFile = File(this.path)
+ songFile = this.path?.let { File(it) }
}
}
if (songFile == null || !songFile.exists()) {
@@ -131,17 +201,18 @@ fun File.getUriFromFile(context: Context): Uri {
private fun getContentResolverFilePathFromUri(context: Context, uri: Uri): String? {
var cursor: Cursor? = null
- val column = "_data"
- val projection = arrayOf(
- column
- )
try {
- cursor = context.contentResolver.query(
- uri, projection, null, null,
- null
- )
+ val projection = arrayOf(MediaStore.Files.FileColumns.DATA)
+ cursor = context
+ .contentResolver
+ .query(
+ uri,
+ projection, null,
+ null,
+ null
+ )
if (cursor != null && cursor.moveToFirst()) {
- val columnIndex = cursor.getColumnIndexOrThrow(column)
+ val columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA)
return cursor.getString(columnIndex)
}
} catch (e: Exception) {
diff --git a/app/src/main/java/com/amaze/fileutilities/utilis/Utils.kt b/app/src/main/java/com/amaze/fileutilities/utilis/Utils.kt
index ec87e91e..40592c2f 100644
--- a/app/src/main/java/com/amaze/fileutilities/utilis/Utils.kt
+++ b/app/src/main/java/com/amaze/fileutilities/utilis/Utils.kt
@@ -108,7 +108,8 @@ class Utils {
var log: Logger = LoggerFactory.getLogger(Utils::class.java)
const val URL_PRIVACY_POLICY = "https://teamamaze.xyz/privacy-policy-utilities"
- const val URL_LICENSE_AGREEMENT = "https://teamamaze.xyz/license-agreement-utilities"
+ const val URL_LICENSE_AGREEMENT =
+ "https://github.com/TeamAmaze/AmazeFileUtilities/blob/main/LICENSE.txt"
const val URL_GITHUB_ISSUES =
"https://github.com/TeamAmaze/AmazeFileUtilities-Issue-Tracker/issues"
const val AMAZE_FILE_MANAGER_MAIN = "com.amaze.filemanager.ui.activities.MainActivity"
diff --git a/app/src/main/java/com/amaze/fileutilities/video_player/BaseVideoPlayerActivity.kt b/app/src/main/java/com/amaze/fileutilities/video_player/BaseVideoPlayerActivity.kt
index 20a771dc..a5498727 100644
--- a/app/src/main/java/com/amaze/fileutilities/video_player/BaseVideoPlayerActivity.kt
+++ b/app/src/main/java/com/amaze/fileutilities/video_player/BaseVideoPlayerActivity.kt
@@ -595,7 +595,9 @@ abstract class BaseVideoPlayerActivity :
customToolbar.setBackButtonClickListener {
onBackPressed()
}
- val mediaFile = videoPlayerViewModel?.videoModel?.uri?.getFileFromUri()
+ val mediaFile = videoPlayerViewModel?.videoModel?.uri?.getFileFromUri(
+ this@BaseVideoPlayerActivity
+ )
val fileName = mediaFile?.name
customToolbar.setTitle(fileName ?: "")
customToolbar.setOverflowPopup(R.menu.video_activity) { item ->
@@ -712,7 +714,7 @@ abstract class BaseVideoPlayerActivity :
R.id.search_subtitles -> {
if (isNetworkAvailable()) {
videoPlayerViewModel?.videoModel?.uri?.let {
- val mediaFile = it.getFileFromUri()
+ val mediaFile = it.getFileFromUri(this)
mediaFile?.let {
file ->
player?.pause()
@@ -794,7 +796,7 @@ abstract class BaseVideoPlayerActivity :
var dialogMessage = ""
val uri = videoPlayerViewModel?.videoModel?.uri
uri?.let {
- val file = uri.getFileFromUri()
+ val file = uri.getFileFromUri(this)
file?.let {
dialogMessage += "${resources.getString(R.string.file)}\n---\n"
dialogMessage += "${resources.getString(R.string.name)}: ${file.name}" + "\n"
@@ -1016,7 +1018,7 @@ abstract class BaseVideoPlayerActivity :
setMediaItemWithSubtitle(File(videoPlayerViewModel?.subtitleFilePath!!))
} else {
val uri = videoPlayerViewModel?.videoModel?.uri
- setMediaItemWithSubtitle(uri?.getFileFromUri())
+ setMediaItemWithSubtitle(uri?.getFileFromUri(this))
}
}
diff --git a/app/src/main/play/release-notes/en-US/production.txt b/app/src/main/play/release-notes/en-US/production.txt
index 8e6075e5..934bb79f 100644
--- a/app/src/main/play/release-notes/en-US/production.txt
+++ b/app/src/main/play/release-notes/en-US/production.txt
@@ -1,7 +1,6 @@
Changelog:
+- Add analysis to clear background processes
+- Add analysis for newly installed / recently updated apps
- Add support for playlists in music player
- Add Floating Action Button for options menu
-- Add new analysis capabilities
-- Add group summary in media list screen
-- Music player performance fixes
- Other bugfixes
diff --git a/app/src/main/res/layout/analysis_type_view.xml b/app/src/main/res/layout/analysis_type_view.xml
index 8ecb0ec4..353e59a1 100644
--- a/app/src/main/res/layout/analysis_type_view.xml
+++ b/app/src/main/res/layout/analysis_type_view.xml
@@ -22,6 +22,7 @@
android:layout_gravity="center_horizontal|center_vertical"
/>
@@ -97,6 +98,35 @@
+
+
+
+
+
+
-
-
+ android:layout_height="match_parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ >
-
+
+
-
-
-
-
-
-
-
+ app:srcCompat="@drawable/ic_baseline_open_in_new_24"
+ app:backgroundTint="@color/highlight_yellow"
+ app:tint="@color/black"
+ android:layout_marginBottom="@dimen/material_generic"
+ android:visibility="gone"
+ />
+
+
+
+
+
+
diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-af-rZA/strings.xml
+++ b/app/src/main/res/values-af-rZA/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml
index fb3023cf..9bc46b7c 100644
--- a/app/src/main/res/values-ar-rSA/strings.xml
+++ b/app/src/main/res/values-ar-rSA/strings.xml
@@ -259,7 +259,7 @@
الملفات الغير مرغوب فيها هي ملفات متبقية من تطبيقات محذوفة
- تيليغرام
+ Telegram Media
المزيد من التحسين قادم!
@@ -304,7 +304,7 @@
Image Features
- Includes closed eyes, distracted, sad, selfie, group paths
+ Includes closed eyes, selfie, group paths
Downloads
@@ -512,7 +512,7 @@
Failed to share files
- Connected… before you start sending,
+ Connected… before you start sending,
make sure to enable receiver on the other device
Receiving…
@@ -743,6 +743,10 @@
Sets background color for Image Viewer
Unused apps
+
+ Most used apps
+
+ Least used apps
Large apps
@@ -757,6 +761,10 @@
Refresh
Number of days an app\'s not been opened
+
+ Apps most used in last number of days
+
+ Apps least used in last number of days
Stopping analysis
@@ -839,4 +847,85 @@
Clearing lyrics
Added lyrics
-
\ No newline at end of file
+
+ Whatsapp Images
+
+ Whatsapp Videos
+
+ Whatsapp Media
+
+ Large Files
+
+ Purchase
+
+ You\'re running an Fdroid build.
+ You can unlock a lifetime subscription by donating any amount of your choice.
+ Please donate using one of the options below.
+ Once done please contact us through telegram / email by sharing your device ID and we\'ll unlock the subscription for you.
+
+ Paypal
+
+ Liberapay
+
+ %s • %s
+
+ Playlist created
+
+ Failed to create playlist
+
+ Added %d songs to playlist %s
+
+ Failed to add songs
+
+ Failed to remove songs
+
+ Playlists
+
+ Options
+
+ Locate
+
+ Playlist
+
+ Delete Playlist
+
+ Rename Playlist
+
+ You\'re about to permanently delete playlist %s.
+ Are you sure you want to proceed?
+
+ Please enter new playlist name
+
+ Rename
+
+ Create New
+
+ Remove
+
+ You\'re about to remove selected songs from playlist(s).
+ Are you sure you want to proceed?
+
+ Add to Playlist
+
+ Create
+
+ Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
+
diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-ca-rES/strings.xml
+++ b/app/src/main/res/values-ca-rES/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-cs-rCZ/strings.xml
+++ b/app/src/main/res/values-cs-rCZ/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-da-rDK/strings.xml
+++ b/app/src/main/res/values-da-rDK/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml
index c41e4379..e7650ec2 100644
--- a/app/src/main/res/values-de-rDE/strings.xml
+++ b/app/src/main/res/values-de-rDE/strings.xml
@@ -743,6 +743,10 @@
Sets background color for Image Viewer
Unused apps
+
+ Most used apps
+
+ Least used apps
Large apps
@@ -757,6 +761,10 @@
Refresh
Number of days an app\'s not been opened
+
+ Apps most used in last number of days
+
+ Apps least used in last number of days
Stopping analysis
@@ -839,4 +847,85 @@
Clearing lyrics
Added lyrics
-
\ No newline at end of file
+
+ Whatsapp Images
+
+ Whatsapp Videos
+
+ Whatsapp Media
+
+ Large Files
+
+ Purchase
+
+ You\'re running an Fdroid build.
+ You can unlock a lifetime subscription by donating any amount of your choice.
+ Please donate using one of the options below.
+ Once done please contact us through telegram / email by sharing your device ID and we\'ll unlock the subscription for you.
+
+ Paypal
+
+ Liberapay
+
+ %s • %s
+
+ Playlist created
+
+ Failed to create playlist
+
+ Added %d songs to playlist %s
+
+ Failed to add songs
+
+ Failed to remove songs
+
+ Playlists
+
+ Options
+
+ Locate
+
+ Playlist
+
+ Delete Playlist
+
+ Rename Playlist
+
+ You\'re about to permanently delete playlist %s.
+ Are you sure you want to proceed?
+
+ Please enter new playlist name
+
+ Rename
+
+ Create New
+
+ Remove
+
+ You\'re about to remove selected songs from playlist(s).
+ Are you sure you want to proceed?
+
+ Add to Playlist
+
+ Create
+
+ Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
+
diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-el-rGR/strings.xml
+++ b/app/src/main/res/values-el-rGR/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-en-rUS/strings.xml b/app/src/main/res/values-en-rUS/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-en-rUS/strings.xml
+++ b/app/src/main/res/values-en-rUS/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml
index e17e11b6..6ddee5b0 100644
--- a/app/src/main/res/values-es-rES/strings.xml
+++ b/app/src/main/res/values-es-rES/strings.xml
@@ -744,6 +744,10 @@
Sets background color for Image Viewer
Unused apps
+
+ Most used apps
+
+ Least used apps
Large apps
@@ -758,6 +762,10 @@
Refresh
Number of days an app\'s not been opened
+
+ Apps most used in last number of days
+
+ Apps least used in last number of days
Stopping analysis
@@ -840,4 +848,85 @@
Clearing lyrics
Added lyrics
-
\ No newline at end of file
+
+ Whatsapp Images
+
+ Whatsapp Videos
+
+ Whatsapp Media
+
+ Large Files
+
+ Purchase
+
+ You\'re running an Fdroid build.
+ You can unlock a lifetime subscription by donating any amount of your choice.
+ Please donate using one of the options below.
+ Once done please contact us through telegram / email by sharing your device ID and we\'ll unlock the subscription for you.
+
+ Paypal
+
+ Liberapay
+
+ %s • %s
+
+ Playlist created
+
+ Failed to create playlist
+
+ Added %d songs to playlist %s
+
+ Failed to add songs
+
+ Failed to remove songs
+
+ Playlists
+
+ Options
+
+ Locate
+
+ Playlist
+
+ Delete Playlist
+
+ Rename Playlist
+
+ You\'re about to permanently delete playlist %s.
+ Are you sure you want to proceed?
+
+ Please enter new playlist name
+
+ Rename
+
+ Create New
+
+ Remove
+
+ You\'re about to remove selected songs from playlist(s).
+ Are you sure you want to proceed?
+
+ Add to Playlist
+
+ Create
+
+ Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
+
diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-fi-rFI/strings.xml
+++ b/app/src/main/res/values-fi-rFI/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-fr-rFR/strings.xml
+++ b/app/src/main/res/values-fr-rFR/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-hi-rIN/strings.xml
+++ b/app/src/main/res/values-hi-rIN/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-hu-rHU/strings.xml
+++ b/app/src/main/res/values-hu-rHU/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-it-rIT/strings.xml
+++ b/app/src/main/res/values-it-rIT/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml
index 1d9f7303..cb272364 100644
--- a/app/src/main/res/values-iw-rIL/strings.xml
+++ b/app/src/main/res/values-iw-rIL/strings.xml
@@ -89,13 +89,13 @@
קבלה
- עצירת הקבלה
+ עצירת העברה
- מתבצע חישוב…
+ מבצע חישוב…
קבצים אחרונים
- אין קבצים
+ לא נמצאו קבצים
קובצי מדיה: %s
@@ -107,7 +107,7 @@
הגדרות
- על אודות
+ אודות
כל הזכויות שמורות © 2021–2022 צוות Amaze\nכל הזכויות שמורות
@@ -139,7 +139,7 @@
משך
- זה לא אמור היה לקרות, סליחה.
+ זה לא היה אמור לקרות, סליחה.
דיווח על השגיאה הזאת בדוא״ל
@@ -326,7 +326,7 @@
נא להפעיל את הרשת האלחוטית שלך
- Failed to discover peers. Please try reconnecting to Wifi network
+ נכשל במציאת עמיתים. נסה להתחבר מחדש לרשת Wifi
מתקבלים קבצים
@@ -364,7 +364,7 @@
משדר מדיה לכלי עזר לקבצים מבית Amaze
- Failed to establish connection with remote device. Please try reconnecting to Wifi network
+ יצירת חיבור עם מכשיר מרוחק נכשלה. נסה להתחבר מחדש לרשת Wifi
החיבור הצליח
@@ -376,7 +376,7 @@
הקבלה נכשלה, נא להתחבר מחדש
- File transferred
+ הקובץ נשלח
ליישום נדרשת הרשאת מיקום כדי להתחבר למכשירים סמוכים.
@@ -468,7 +468,7 @@
אתה מופנה מחדש למנהל הקבצים של Amaze. זוהי הצעת הקוד הפתוח שלנו הכוללת את כל התכונות שיש למנהל קבצים מודרני ללא עלות לחלוטין עם למעלה מ-2 מיליון הורדות ודירוג 4.3 בחנות Play.
הורדה
- Amaze File Manager
+ מנהל הקבצים של Amaze
המכשיר לא מחובר לאינטרנט
@@ -494,7 +494,7 @@
ההורדה נכשלה
- Bluetooth
+ בלוטוס
שיתוף יומנים
@@ -628,44 +628,43 @@
תקופת הנסיון הסתיימה
- Hey There! Thank you for choosing Amaze File Utilities.\n
- Your trial has expired, we hope you\'ve enjoyed our software, and we look forward for you to make a nominal payment.\n
- We are a team of open source developers working hard to provide an ad-free experience,
- and we need funds to keep us afloat.\n
- You can write to us if you want to extend the trial period a bit more.
-
+ שלום! תודה שבחרת ב-Amaze File Utilities.\n
+ תקופת הניסיון שלך פג, אנו מקווים שנהנית מהתוכנה שלנו, ואנו מצפים שתשלם תשלום סמלי.\n
+ אנחנו צוות של מפתחי קוד פתוח שעובד קשה כדי לספק חוויה ללא פרסומות,
+ ואנחנו צריכים כספים כדי לשמור את המוצר במצב הזה.\n
+ אתה יכול לכתוב לנו אם אתה רוצה להאריך עוד קצת את תקופת הניסיון.
ניסיון לא פעיל
- Hey There! Thank you for choosing Amaze File Utilities.\n
- Your trial is inactive and you\'re not longer an exclusive member,
- we hope you\'ve enjoyed our software, and we look forward for you to make a nominal payment.\n
- We are a team of open source developers working hard to provide an ad-free experience,
- and we need funds to keep us afloat.\n
- You can write to us if you want to extend the trial period a bit more.
+ שלום! תודה שבחרת ב-Amaze File Utilities.\n
+ תקופת הניסיון שלך אינה פעילה ואתה כבר לא חבר בלעדי,
+ אנו מקווים שנהנית מהתוכנה שלנו, ואנו מצפים שתשלם תשלום סמלי.\n
+ אנחנו צוות של מפתחי קוד פתוח שעובד קשה כדי לספק חוויה ללא פרסומות,
+ ואנחנו צריכים כספים כדי לשמור את המוצר בצורה הזאת.\n
+ אתה יכול לכתוב לנו אם אתה רוצה להאריך עוד קצת את תקופת הניסיון.
יש מינוי
- Thank you for choosing Amaze File Utilities.\n
- We are a team of open source developers working hard to provide an ad-free experience,
- and your subscription will really help us in development.\n
- At any point if you need any help feel free to contact us in About section.
- You\'ll be able to contact directly to our team on Telegram.\n
- Please also try our open source file manager application \'Amaze File Manager\' for a seamless file management experience.
+ תודה שבחרת ב-Amaze File Utilities.\n
+ אנחנו צוות של מפתחי קוד פתוח שעובד קשה כדי לספק חוויה ללא פרסומות,
+ והמנוי שלך באמת יעזור לנו בפיתוח.\n
+ בכל שלב אם אתה זקוק לעזרה כלשהי, אל תהסס לפנות אלינו בקטע אודות.
+ תוכל ליצור קשר ישירות עם הצוות שלנו בטלגרם.\n
+ אנא נסה גם את אפליקציית מנהל הקבצים בקוד פתוח \'Amaze File Manager\' לחוויית ניהול קבצים בכיף ובפרטיות.
פג תוקף המינוי
- Hey There! Thank you for choosing Amaze File Utilities.\n
- Your subscription has expired,
- we hope you\'ve enjoyed our software, and we look forward for you to make a nominal payment.\n
- We are a team of open source developers working hard to provide an ad-free experience,
- and we need funds to keep us afloat.\n
- You can write to us if you want to extend the trial period a bit more.
+ שלום! תודה שבחרת ב-Amaze File Utilities.\n
+ פג תוקף המנוי שלך,
+ אנו מקווים שנהנית מהתוכנה שלנו, ואנו מצפים שתשלם תשלום סמלי.\n
+ אנחנו צוות של מפתחי קוד פתוח שעובד קשה כדי לספק חוויה ללא פרסומות,
+ ואנחנו צריכים כספים כדי לשמור את האפליקציה כזאת.\n
+ אתה יכול לכתוב לנו אם אתה רוצה להאריך עוד קצת את תקופת הניסיון.
האימות נכשל
- Hey There! Thank you for choosing Amaze File Utilities.\n
- We\'re not able to validate your license, please connect to internet and restart the app.
+ שלום! תודה שבחרת ב-Amaze File Utilities.\n
+ אין לנו אפשרות לאמת את הרישיון שלך, אנא התחבר לאינטרנט והפעל מחדש את האפליקציה.
הרשמה למינוי
@@ -673,9 +672,9 @@
ניהול קובצי מדיה
- View images, videos, audios, documents in list or grid\nOpen using inbuilt players\nGesture support for easy navigation\nJump to any date instantly\nGroup or sort list\nCast on TV
+ הצג תמונות, קטעי וידאו, אודיו, מסמכים ברשימה או רשת\nפתח באמצעות נגנים מובנים\nתמיכה במחוות לניווט קל\nקפוץ לכל תאריך באופן מיידי\nקבץ או מיון רשימה\nהעברה בטלוויזיה
- Analyse storage for junk files to delete\nGroup images by memes, low-light, blurry, selfies or group\nGroup large files in storage\nGroup old downloads, recordings or screenshots\n
+ נתח אחסון לקבצי זבל כדי למחוק\nקבץ תמונות לפי ממים, תאורה חלשה, מטושטשת, סלפי או קבוצה\nקבץ קבצים גדולים באחסון\nקבץ הורדות ישנות, הקלטות או צילומי מסך\n
העברת נתונים בין מכשירים דרך רשת אלחוטית\nמהירויות במהירות גבוהה עם Android Wi-Fi Direct
@@ -685,9 +684,8 @@
הפרטיות שלך חשובה לנו!
- Don\'t like ads? Neither do we, we value your data as much as you do.\n
- We assure you that we do not collect any of your private information.\nWe don\'t say this, our track record does.\nWe\'re a group of open source developers and are managing Amaze File Manager for around 8 years now.\n\nWe look forward to your subscription.
-
+ לא אוהב פרסומות? גם אנחנו לא, אנחנו מעריכים את הנתונים שלך כמוך.\n
+ אנו מבטיחים לך שאיננו אוספים אף מידע פרטי שלך.\nאנחנו לא אומרים את זה, הרקורד שלנו כן.\nאנחנו קבוצה של מפתחי קוד פתוח ומנהלים את Amaze File Manager כבר כ-8 שנים. \n\nאנו מצפים למנוי שלך.
שגיאה במשיכת רשימת מוצרים מ־Google Play.
@@ -729,7 +727,7 @@
החלה
- A value of zero means that the key is not changed.\nOne full step corresponds to one semitone.\nA change of -12 semitones means that the song is played one octave lower.
+ ערך של אפס אומר שהמפתח לא משתנה.\nצעד שלם אחד מתאים לחצי טון אחד.\nשינוי של -12 חצאי טון אומר שהשיר מושמע באוקטבה אחת נמוכה יותר.
איפוס
@@ -742,6 +740,10 @@
מגדיר את צבע רקע מציג התמונות
יישומונים שאינם בשימוש
+
+ האפליקציות הנפוצות ביותר
+
+ אפליקציות הכי פחות בשימוש
יישומונים גדולים
@@ -756,6 +758,10 @@
לרענן
מספר הימים בהם לא נפתח היישומון
+
+ האפליקציות בשימוש הרב ביותר במספר הימים האחרונים
+
+ אפליקציות שנעשו הכי פחות בשימוש במספר הימים האחרונים
הניתוח נעצר
@@ -809,7 +815,7 @@
התאמה
- Are you want to exit without saving image?
+ האם ברצונך לצאת מבלי לשמור תמונה?
שיתוף תמונה
@@ -829,13 +835,94 @@
טעינת המסמך נכשלה
- Load
+ טוען
- Paste lyrics
+ הדבק מילים
- Lyrics type
+ סוג מילות השיר
- Clearing lyrics
+ ניקוי מילים
- Added lyrics
-
\ No newline at end of file
+ נוספו מילים
+
+ תמונות וואטסאפ
+
+ סרטוני ווטסאפ
+
+ וואטסאפ מדיה
+
+ קבצים גדולים
+
+ לרכוש
+
+ אתה מפעיל גירסת Fdroid.
+ אתה יכול לפתוח מנוי לכל החיים על ידי תרומה של כל סכום שתבחר.
+ אנא תרמו באמצעות אחת מהאפשרויות למטה.
+ לאחר שתסיים, אנא צור איתנו קשר באמצעות טלגרם / אימייל על ידי שיתוף מזהה המכשיר שלך ואנו נבטל את נעילת המנוי עבורך.
+
+ פייפאל
+
+ Liberapay
+
+ %s • %s
+
+ רשימת השמעה נוצרה
+
+ יצירת רשימת השמעה נכשלה
+
+ נוספו %d שירים לרשימת ההשמעה %s
+
+ הוספת שירים נכשלה
+
+ הסרת השירים נכשלה
+
+ רשימות השמעה
+
+ אפשרויות
+
+ לאתר
+
+ רשימת השמעה
+
+ מחיקת רשימת השמעה
+
+ שנה שם לרשימת ההשמעה
+
+ אתה עומד למחוק לצמיתות את רשימת ההשמעה %s.
+ האם אתה בטוח שאתה רוצה להמשיך?
+
+ נא להזין שם רשימת השמעה חדשה
+
+ שינוי שם
+
+ Create New
+
+ Remove
+
+ You\'re about to remove selected songs from playlist(s).
+ Are you sure you want to proceed?
+
+ Add to Playlist
+
+ Create
+
+ Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
+
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index 1a3f7396..b8b07ebc 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -743,6 +743,10 @@
画像ビューアーの背景色を設定します
Unused apps
+
+ Most used apps
+
+ Least used apps
Large apps
@@ -757,6 +761,10 @@
Refresh
Number of days an app\'s not been opened
+
+ Apps most used in last number of days
+
+ Apps least used in last number of days
Stopping analysis
@@ -839,4 +847,85 @@
Clearing lyrics
Added lyrics
-
\ No newline at end of file
+
+ Whatsapp Images
+
+ Whatsapp Videos
+
+ Whatsapp Media
+
+ Large Files
+
+ Purchase
+
+ You\'re running an Fdroid build.
+ You can unlock a lifetime subscription by donating any amount of your choice.
+ Please donate using one of the options below.
+ Once done please contact us through telegram / email by sharing your device ID and we\'ll unlock the subscription for you.
+
+ Paypal
+
+ Liberapay
+
+ %s • %s
+
+ Playlist created
+
+ Failed to create playlist
+
+ Added %d songs to playlist %s
+
+ Failed to add songs
+
+ Failed to remove songs
+
+ Playlists
+
+ Options
+
+ Locate
+
+ Playlist
+
+ Delete Playlist
+
+ Rename Playlist
+
+ You\'re about to permanently delete playlist %s.
+ Are you sure you want to proceed?
+
+ Please enter new playlist name
+
+ Rename
+
+ Create New
+
+ Remove
+
+ You\'re about to remove selected songs from playlist(s).
+ Are you sure you want to proceed?
+
+ Add to Playlist
+
+ Create
+
+ Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
+
diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-ko-rKR/strings.xml
+++ b/app/src/main/res/values-ko-rKR/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-nl-rNL/strings.xml
+++ b/app/src/main/res/values-nl-rNL/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-no-rNO/strings.xml
+++ b/app/src/main/res/values-no-rNO/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-pl-rPL/strings.xml
+++ b/app/src/main/res/values-pl-rPL/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index c215abc2..4249e304 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index cc3f5da1..ae5befc1 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -838,33 +838,51 @@
Listas de reprodução
- Options
+ Opções
- Locate
+ Localizar
- Playlist
+ Lista de reprodução
- Delete Playlist
+ Eliminar lista de reprodução
- Rename Playlist
+ Renomear lista de reprodução
- You\'re about to permanently delete playlist %s.
- Are you sure you want to proceed?
+ Está prestes a eliminar permanentemente a lista de reprodução %s.
+ Tem a certeza de que deseja prosseguir?
- Please enter new playlist name
+ Por favor, introduza o novo nome da lista de reprodução
- Rename
+ Renomear
- Create New
+ Criar Novo
- Remove
+ Remover
- You\'re about to remove selected songs from playlist(s).
- Are you sure you want to proceed?
+ Está prestes a remover canções selecionadas da lista(s) de reprodução.
+ Tem a certeza de que deseja prosseguir?
- Add to Playlist
+ Adicionar à lista de reprodução
- Create
+ Criar
- Removed from playlist(s)
+ Removido da lista(s) de reprodução
+
+ Reproduzir Seguinte
+
+ Música adicionada à fila
+
+ Aplicações recém-instaladas
+
+ Aplicações recentemente instaladas (em dias)
+
+ Aplicações recentemente atualizadas
+
+ Apps recentemente atualizadas (em dias)
+
+ Uso de memória (RAM)
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-ro-rRO/strings.xml
+++ b/app/src/main/res/values-ro-rRO/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml
index 43a10ed8..1a6be317 100644
--- a/app/src/main/res/values-ru-rRU/strings.xml
+++ b/app/src/main/res/values-ru-rRU/strings.xml
@@ -1,13 +1,13 @@
- Amaze - Инструменты для работы с файлами / файловой системой
+ Amaze Файловые Утилиты
- Инструменты
+ Amaze Утилиты
- Amaze File Utility - Приложение содержащие в себе набор инструментов для работы с файловой системой. Имеющее встроенные проигрыватели для воспроизведения Ваших медиа файлов.
+ Приложение для работы с файлами с встроенным медиа плеером для всех ваших потребностей.
- Просмотр Изображения
+ Amaze Просмотр Изображений
Просмотр изображений
@@ -909,4 +909,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-sr-rSP/strings.xml
+++ b/app/src/main/res/values-sr-rSP/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-sv-rSE/strings.xml
+++ b/app/src/main/res/values-sv-rSE/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-tr-rTR/strings.xml
+++ b/app/src/main/res/values-tr-rTR/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-uk-rUA/strings.xml
+++ b/app/src/main/res/values-uk-rUA/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml
index bdad99af..9d46edfd 100644
--- a/app/src/main/res/values-vi-rVN/strings.xml
+++ b/app/src/main/res/values-vi-rVN/strings.xml
@@ -910,4 +910,22 @@
Create
Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 277015a4..c215d9c2 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -743,6 +743,10 @@
設定影像檢視器嘅背景顏色
Unused apps
+
+ Most used apps
+
+ Least used apps
Large apps
@@ -757,6 +761,10 @@
Refresh
Number of days an app\'s not been opened
+
+ Apps most used in last number of days
+
+ Apps least used in last number of days
Stopping analysis
@@ -839,4 +847,85 @@
Clearing lyrics
Added lyrics
-
\ No newline at end of file
+
+ Whatsapp Images
+
+ Whatsapp Videos
+
+ Whatsapp Media
+
+ Large Files
+
+ Purchase
+
+ You\'re running an Fdroid build.
+ You can unlock a lifetime subscription by donating any amount of your choice.
+ Please donate using one of the options below.
+ Once done please contact us through telegram / email by sharing your device ID and we\'ll unlock the subscription for you.
+
+ Paypal
+
+ Liberapay
+
+ %s • %s
+
+ Playlist created
+
+ Failed to create playlist
+
+ Added %d songs to playlist %s
+
+ Failed to add songs
+
+ Failed to remove songs
+
+ Playlists
+
+ Options
+
+ Locate
+
+ Playlist
+
+ Delete Playlist
+
+ Rename Playlist
+
+ You\'re about to permanently delete playlist %s.
+ Are you sure you want to proceed?
+
+ Please enter new playlist name
+
+ Rename
+
+ Create New
+
+ Remove
+
+ You\'re about to remove selected songs from playlist(s).
+ Are you sure you want to proceed?
+
+ Add to Playlist
+
+ Create
+
+ Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
+
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 3ac7e086..a08687ef 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -743,6 +743,10 @@
設定影像檢視器的背景顏色
Unused apps
+
+ Most used apps
+
+ Least used apps
Large apps
@@ -757,6 +761,10 @@
Refresh
Number of days an app\'s not been opened
+
+ Apps most used in last number of days
+
+ Apps least used in last number of days
Stopping analysis
@@ -839,4 +847,85 @@
Clearing lyrics
Added lyrics
-
\ No newline at end of file
+
+ Whatsapp Images
+
+ Whatsapp Videos
+
+ Whatsapp Media
+
+ Large Files
+
+ Purchase
+
+ You\'re running an Fdroid build.
+ You can unlock a lifetime subscription by donating any amount of your choice.
+ Please donate using one of the options below.
+ Once done please contact us through telegram / email by sharing your device ID and we\'ll unlock the subscription for you.
+
+ Paypal
+
+ Liberapay
+
+ %s • %s
+
+ Playlist created
+
+ Failed to create playlist
+
+ Added %d songs to playlist %s
+
+ Failed to add songs
+
+ Failed to remove songs
+
+ Playlists
+
+ Options
+
+ Locate
+
+ Playlist
+
+ Delete Playlist
+
+ Rename Playlist
+
+ You\'re about to permanently delete playlist %s.
+ Are you sure you want to proceed?
+
+ Please enter new playlist name
+
+ Rename
+
+ Create New
+
+ Remove
+
+ You\'re about to remove selected songs from playlist(s).
+ Are you sure you want to proceed?
+
+ Add to Playlist
+
+ Create
+
+ Removed from playlist(s)
+
+ PLAY NEXT
+
+ Song added to queue
+
+ Newly installed apps
+
+ Apps newly installed (in days)
+
+ Recently updated apps
+
+ Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 869b06a7..50d35f8e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -6,7 +6,7 @@
File Utility app with inbuilt media players for all your needs.
Team Amaze
- v1.75
+ v1.76
Amaze Image Viewer
@@ -931,4 +931,10 @@
Recently updated apps
Apps recently updated (in days)
+
+ Memory (RAM) Usage
+
+ %s available | %s total
+
+ Closed background processes