Skip to content

Commit

Permalink
Ignore file extension
Browse files Browse the repository at this point in the history
  • Loading branch information
Your Name committed Sep 25, 2019
1 parent 983a95a commit 57a1c1e
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 13 deletions.
16 changes: 12 additions & 4 deletions lib/src/main/java/com/masoudss/lib/WaveformOptions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,22 @@ import java.io.File
object WaveformOptions {

@RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
fun getSampleFrom(file: File): IntArray? {
val soundFile = SoundFile.create(file.absolutePath)
fun getSampleFrom(file: File, ignoreExtension: Boolean = false): IntArray? {
val soundFile = SoundFile.create(file.absolutePath, ignoreExtension)
return soundFile?.frameGains
}

@RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
fun getSampleFrom(path: String): IntArray? {
val soundFile = SoundFile.create(path)
fun getSampleFrom(path: String, ignoreExtension: Boolean = false): IntArray? {
val soundFile = SoundFile.create(path, ignoreExtension)
return soundFile?.frameGains
}

fun addCustomExtension(extension: String) = SoundFile.addCustomExtension(extension)

fun removeCustomExtension(extension: String) = SoundFile.removeCustomExtension(extension)

fun addCustomExtensions(extensions: List<String>) = SoundFile.addCustomExtensions(extensions)

fun removeCustomExtensions(extensions: List<String>) = SoundFile.removeCustomExtensions(extensions)
}
17 changes: 13 additions & 4 deletions lib/src/main/java/com/masoudss/lib/WaveformSeekBar.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import android.view.View
import android.view.ViewConfiguration
import androidx.annotation.RequiresApi
import com.masoudss.lib.exception.SampleDataException
import com.masoudss.lib.soundParser.SoundFile
import java.io.File
import kotlin.math.abs

Expand Down Expand Up @@ -196,15 +197,23 @@ class WaveformSeekBar : View {
var onProgressChanged : SeekBarOnProgressChanged? = null

@RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
fun setSampleFrom(path: String) {
sample = WaveformOptions.getSampleFrom(path)
fun setSampleFrom(path: String, ignoreExtension: Boolean = false) {
sample = WaveformOptions.getSampleFrom(path, ignoreExtension)
}

@RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
fun setSampleFrom(file: File) {
sample = WaveformOptions.getSampleFrom(file)
fun setSampleFrom(file: File, ignoreExtension: Boolean = false) {
sample = WaveformOptions.getSampleFrom(file, ignoreExtension)
}

fun addCustomExtension(extension: String) = WaveformOptions.addCustomExtension(extension)

fun removeCustomExtension(extension: String) = WaveformOptions.removeCustomExtension(extension)

fun addCustomExtensions(extensions: List<String>) = WaveformOptions.addCustomExtensions(extensions)

fun removeCustomExtensions(extensions: List<String>) = WaveformOptions.removeCustomExtensions(extensions)

var sample: IntArray? = null
set(value){
field = value
Expand Down
25 changes: 20 additions & 5 deletions lib/src/main/java/com/masoudss/lib/soundParser/SoundFile.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import java.nio.ByteBuffer
import java.nio.ByteOrder
import java.nio.ShortBuffer
import java.util.*
import kotlin.collections.ArrayList

@RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
class SoundFile private constructor() {
Expand Down Expand Up @@ -40,20 +41,34 @@ class SoundFile private constructor() {
companion object {

private val supportedExtensions = arrayOf("mp3", "wav", "3gpp", "3gp", "amr", "aac", "m4a", "ogg")
private val additionalExtensions = ArrayList<String>()

fun addCustomExtension(extension: String) = additionalExtensions.add(extension)

fun removeCustomExtension(extension: String) = additionalExtensions.remove(extension)

fun addCustomExtensions(extensions: List<String>) = additionalExtensions.addAll(extensions)

fun removeCustomExtensions(extensions: List<String>) = additionalExtensions.removeAll(extensions)

private fun isFilenameSupported(filename: String): Boolean {
val extensions = supportedExtensions
for (i in extensions.indices) {
if (filename.endsWith("." + extensions[i])) {

for (i in supportedExtensions.indices) {
if (filename.endsWith("." + supportedExtensions[i])) {
return true
}
}
for (i in additionalExtensions.indices) {
if (filename.endsWith("." + additionalExtensions[i])) {
return true
}
}
return false
}

@Throws(FileNotFoundException::class, IOException::class, InvalidInputException::class)
fun create(fileName: String): SoundFile? {
if (!isFilenameSupported(fileName))
fun create(fileName: String, ignoreExtension: Boolean = false): SoundFile? {
if (!ignoreExtension && !isFilenameSupported(fileName))
throw InvalidInputException("Not supported file extension.")

val f = File(fileName)
Expand Down

0 comments on commit 57a1c1e

Please sign in to comment.