Skip to content

Commit c081e17

Browse files
authored
Merge pull request #103 from manimaran96/android-16kb-ffmpeg
feat: Support 16KB page size for ffmpeg sdk and fix audio convert issue
2 parents d3e4936 + 5980a9b commit c081e17

20 files changed

Lines changed: 148 additions & 22 deletions

app/build.gradle.kts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ android {
1818
vectorDrawables.useSupportLibrary = true
1919
minSdk = libs.versions.minSdk.get().toInt()
2020
targetSdk = libs.versions.targetSdk.get().toInt()
21-
versionName = "3.1"
22-
versionCode = 19
21+
versionName = "3.3"
22+
versionCode = 21
2323
multiDexEnabled = true
2424
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2525
}
@@ -95,7 +95,8 @@ dependencies {
9595

9696
// Audio Processing - FFmpeg Kit
9797
// Download aar file - https://artifactory.appodeal.com/appodeal-public/com/arthenica/mobile-ffmpeg-min/4.4.LTS/
98-
implementation(files("libs/ffmpeg-kit-full-6.0-2.aar"))
98+
// https://github.com/moizhassankh/ffmpeg-kit-android-16KB
99+
implementation(files("libs/ffmpeg-kit-full-6.1.1.aar"))
99100
implementation("com.arthenica:smart-exception-java:0.2.1") // Added for FFmpeg Kit compatibility refer - https://medium.com/deemaze-software/android-building-the-archived-ffmpegkit-878db187cc2c
100101

101102
// Image Loading

app/src/main/java/com/manimarank/spell4wiki/record/ogg/WavToOggConverter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ class WavToOggConverter {
3333
}
3434

3535
// Execute FFmpeg command to convert WAV to OGG
36-
//val command = "-y -i $recordedFilePath -acodec libvorbis $convertedFilePath"
37-
val command = "-y -i $recordedFilePath -c:a libopus -b:a 24k $convertedFilePath"
36+
val command = "-y -i $recordedFilePath -acodec libvorbis $convertedFilePath"
37+
//val command = "-y -i $recordedFilePath -c:a libopus -b:a 24k $convertedFilePath"
3838

3939

4040
val session = FFmpegKit.execute(command)

app/src/main/java/com/manimarank/spell4wiki/ui/about/AboutActivity.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ import com.manimarank.spell4wiki.R
1717
import com.manimarank.spell4wiki.data.prefs.PrefManager
1818
import com.manimarank.spell4wiki.databinding.ActivityAboutBinding
1919
import com.manimarank.spell4wiki.ui.common.BaseActivity
20-
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.setupEdgeToEdgeWithToolbar
20+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.enableEdgeToEdge
21+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.applySystemBarInsets
2122
import com.manimarank.spell4wiki.utils.GeneralUtils.openUrl
2223
import com.manimarank.spell4wiki.utils.GeneralUtils.openUrlInBrowser
2324
import com.manimarank.spell4wiki.utils.NetworkUtils.executeWithNetworkCheck
@@ -35,10 +36,10 @@ class AboutActivity : BaseActivity(), View.OnClickListener {
3536
setContentView(binding.root)
3637

3738
// Setup proper status bar handling (AboutActivity doesn't have a toolbar)
38-
setupEdgeToEdgeWithToolbar(
39-
rootView = binding.root,
40-
toolbar = null
41-
)
39+
// Setup proper edge-to-edge with scroll view handling
40+
enableEdgeToEdge()
41+
binding.root.clipToPadding = false
42+
binding.root.applySystemBarInsets()
4243

4344
title = getString(R.string.about)
4445
supportActionBar?.setDisplayHomeAsUpEnabled(true)

app/src/main/java/com/manimarank/spell4wiki/ui/about/ContributorsActivity.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.manimarank.spell4wiki.data.prefs.ShowCasePref.isNotShowed
2020
import com.manimarank.spell4wiki.data.prefs.ShowCasePref.showed
2121
import com.manimarank.spell4wiki.ui.common.BaseActivity
2222
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.setupEdgeToEdgeWithToolbar
23+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.applyBottomWindowInsets
2324
import com.manimarank.spell4wiki.utils.GeneralUtils
2425
import com.manimarank.spell4wiki.utils.NetworkUtils.isConnected
2526
import com.manimarank.spell4wiki.utils.SnackBarUtils.showLong
@@ -52,6 +53,10 @@ class ContributorsActivity : BaseActivity() {
5253
rootView = binding.root,
5354
toolbar = toolbar
5455
)
56+
57+
// Handle bottom insets for NestedScrollView
58+
binding.nestedScrollView.clipToPadding = false
59+
binding.nestedScrollView.applyBottomWindowInsets()
5560

5661
supportActionBar?.setDisplayHomeAsUpEnabled(true)
5762
supportActionBar?.title = getString(R.string.contributors)

app/src/main/java/com/manimarank/spell4wiki/ui/about/ListItemActivity.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import com.manimarank.spell4wiki.R
88
import com.manimarank.spell4wiki.ui.common.BaseActivity
99
import com.manimarank.spell4wiki.data.model.ItemsModel
1010
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.setupEdgeToEdgeWithToolbar
11+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.enableEdgeToEdge
12+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.applyBottomWindowInsets
1113
import com.manimarank.spell4wiki.utils.constants.AppConstants
1214
import com.manimarank.spell4wiki.utils.constants.Urls
1315
import java.util.*
@@ -18,7 +20,14 @@ class ListItemActivity : BaseActivity() {
1820
super.onCreate(savedInstanceState)
1921
setContentView(R.layout.activity_list_info)
2022

23+
enableEdgeToEdge()
2124
// No edge-to-edge setup needed - default action bar handles status bar spacing properly
25+
// But need to handle bottom insets for RecyclerView
26+
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
27+
recyclerView.clipToPadding = false
28+
recyclerView.applyBottomWindowInsets()
29+
// Handle Action Bar top spacing if needed (usually standard action bar handles it, but check)
30+
// We will rely on System to place ActionBar correctly below status bar.
2231

2332
if (supportActionBar != null) {
2433
supportActionBar!!.setDisplayHomeAsUpEnabled(true)

app/src/main/java/com/manimarank/spell4wiki/ui/appintro/AppIntroActivity.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ import com.manimarank.spell4wiki.utils.constants.AppConstants
1919
import com.manimarank.spell4wiki.utils.makeGone
2020
import com.manimarank.spell4wiki.utils.makeVisible
2121
import com.manimarank.spell4wiki.databinding.ActivityAppIntroBinding
22+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.applyWindowInsetsWithMarginAddition
23+
24+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.enableEdgeToEdge
2225

2326
class AppIntroActivity : BaseActivity() {
2427

@@ -39,9 +42,12 @@ class AppIntroActivity : BaseActivity() {
3942

4043
override fun onCreate(savedInstanceState: Bundle?) {
4144
super.onCreate(savedInstanceState)
45+
enableEdgeToEdge()
4246
binding = ActivityAppIntroBinding.inflate(layoutInflater)
4347
setContentView(binding.root)
4448

49+
binding.rlControls.applyWindowInsetsWithMarginAddition(applyBottom = true)
50+
4551
pref = PrefManager(applicationContext)
4652

4753
val appIntroDataList = list

app/src/main/java/com/manimarank/spell4wiki/ui/categoryselector/CategorySelectionFragment.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior
1919
import com.google.android.material.bottomsheet.BottomSheetDialog
2020
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
2121
import com.manimarank.spell4wiki.R
22+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.applyBottomWindowInsets
2223
import com.manimarank.spell4wiki.data.apis.ApiClient
2324
import com.manimarank.spell4wiki.data.apis.ApiInterface
2425
import com.manimarank.spell4wiki.data.model.CategoryItem
@@ -64,6 +65,12 @@ class CategorySelectionFragment(private val mActivity: Activity) : BottomSheetDi
6465
_binding = BottomSheetCategorySelectionBinding.inflate(layoutInflater)
6566
dialog.setContentView(binding.root)
6667

68+
// Fix transparency issue: explicitly set window to edge-to-edge
69+
dialog.window?.let { window ->
70+
androidx.core.view.WindowCompat.setDecorFitsSystemWindows(window, false)
71+
window.navigationBarColor = android.graphics.Color.TRANSPARENT
72+
}
73+
6774
if (!TextUtils.isEmpty(subTitleInfo)) {
6875
binding.textSelectCategorySubTitle.makeVisible()
6976
binding.textSelectCategorySubTitle.text = subTitleInfo
@@ -80,6 +87,11 @@ class CategorySelectionFragment(private val mActivity: Activity) : BottomSheetDi
8087

8188
adapter = CategoryAdapter(arrayListOf(), categorySelectionListener)
8289
binding.recyclerView.adapter = adapter
90+
91+
// Handle bottom insets
92+
binding.recyclerView.clipToPadding = false
93+
binding.recyclerView.applyBottomWindowInsets()
94+
8395
binding.btnClose.setOnClickListener { dismiss() }
8496
dialog.setOnShowListener { dialog1: DialogInterface ->
8597
val d = dialog1 as BottomSheetDialog

app/src/main/java/com/manimarank/spell4wiki/ui/settings/LanguageSelectionActivity.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.setupStatusBarHandling
1515
import com.manimarank.spell4wiki.utils.constants.ListMode
1616
import com.manimarank.spell4wiki.databinding.ActivityLanguageSelectionBinding
1717
import com.manimarank.spell4wiki.databinding.ContributionLanguageSelectionBinding
18+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.applyWindowInsetsWithMarginAddition
19+
20+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.enableEdgeToEdge
1821

1922
class LanguageSelectionActivity : BaseActivity() {
2023

@@ -23,6 +26,7 @@ class LanguageSelectionActivity : BaseActivity() {
2326
private lateinit var pref: PrefManager
2427
override fun onCreate(savedInstanceState: Bundle?) {
2528
super.onCreate(savedInstanceState)
29+
enableEdgeToEdge()
2630
binding = ActivityLanguageSelectionBinding.inflate(layoutInflater)
2731
setContentView(binding.root)
2832

@@ -34,6 +38,9 @@ class LanguageSelectionActivity : BaseActivity() {
3438
binding.txtAddLangInfo.text = String.format(getString(R.string.choose_your_preferred_app_language), AppLanguageDialog.getSelectedLanguage())
3539

3640
binding.btnAddMyLanguage.setOnClickListener { AppLanguageDialog.show(this) }
41+
42+
// Handle edge-to-edge for next button
43+
binding.btnNext.applyWindowInsetsWithMarginAddition(applyBottom = true)
3744

3845
binding.btnNext.setOnClickListener {
3946
contributionLang()
@@ -44,6 +51,13 @@ class LanguageSelectionActivity : BaseActivity() {
4451
wikiLangDao = DBHelper.getInstance(applicationContext).appDatabase.wikiLangDao
4552
contributionBinding = ContributionLanguageSelectionBinding.inflate(layoutInflater)
4653
setContentView(contributionBinding.root)
54+
55+
// Setup proper status bar handling for contribution view
56+
setupStatusBarHandling(contributionBinding.root)
57+
58+
// Handle edge-to-edge for contribution next button
59+
contributionBinding.btnNext.applyWindowInsetsWithMarginAddition(applyBottom = true)
60+
4761
contributionBinding.txtAddLangInfo.text = String.format(getString(R.string.choose_your_preferred_contribution_language), wikiLangDao?.getWikiLanguageWithCode(pref.languageCodeSpell4WikiAll)?.name ?: "")
4862

4963
contributionBinding.btnAddMyLanguage.setOnClickListener { loadLanguages() }

app/src/main/java/com/manimarank/spell4wiki/ui/spell4wiktionary/Spell4Wiktionary.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import com.manimarank.spell4wiki.ui.languageselector.LanguageSelectionFragment
4444
import com.manimarank.spell4wiki.ui.listerners.OnCategorySelectionListener
4545
import com.manimarank.spell4wiki.ui.listerners.OnLanguageSelectionListener
4646
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.setupEdgeToEdgeWithToolbar
47+
import com.manimarank.spell4wiki.utils.EdgeToEdgeUtils.applyBottomWindowInsets
4748
import com.manimarank.spell4wiki.utils.GeneralUtils
4849
import com.manimarank.spell4wiki.utils.NetworkUtils.isConnected
4950
import com.manimarank.spell4wiki.utils.NetworkUtils.executeWithNetworkCheck
@@ -138,6 +139,11 @@ class Spell4Wiktionary : BaseActivity(), EndlessListener {
138139
binding.recyclerView.setListener(this)
139140
binding.recyclerView.makeVisible()
140141
binding.refreshLayout.setOnRefreshListener { loadDataFromServer() }
142+
143+
// Handle bottom insets for recycler view
144+
binding.recyclerView.clipToPadding = false
145+
binding.recyclerView.applyBottomWindowInsets()
146+
141147
loadCategoriesData()
142148
}
143149

0 commit comments

Comments
 (0)