Skip to content

Commit

Permalink
feat: new ui component and demo to convert to ogg
Browse files Browse the repository at this point in the history
  • Loading branch information
brookmg committed May 9, 2021
1 parent 81d24af commit c70e0a4
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 10 deletions.
63 changes: 60 additions & 3 deletions app/src/main/java/dev/brookmg/exorecord/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ import android.net.Uri
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.ProgressBar
import android.widget.RadioButton
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isGone
import com.google.android.exoplayer2.DefaultRenderersFactory
import com.google.android.exoplayer2.MediaItem
import com.google.android.exoplayer2.SimpleExoPlayer
Expand All @@ -21,9 +25,14 @@ import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory
import dev.brookmg.exorecord.lib.ExoRecord
import dev.brookmg.exorecord.lib.IExoRecord
import dev.brookmg.exorecordogg.ExoRecordOgg
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlin.math.roundToInt

class MainActivity : AppCompatActivity() {

Expand All @@ -34,9 +43,31 @@ class MainActivity : AppCompatActivity() {
const val FORMAT_M3U8 = "m3u8"
}

private lateinit var startRadioButton: Button
private lateinit var stopRadioButton: Button

private lateinit var startRecordingButton: Button
private lateinit var stopRecordingButton: Button

private val exoRecordListener = object: ExoRecord.ExoRecordListener {
override fun onStartRecording(recordFileName: String) {
startRecordingButton.isGone = true
stopRecordingButton.isGone = false
}

override fun onStopRecording(record: IExoRecord.Record) {
startRecordingButton.isGone = false
stopRecordingButton.isGone = true
}
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

startRecordingButton = findViewById(R.id.button_rec)
stopRecordingButton = findViewById(R.id.button_rec_stop)

val streamUrl = "https://stream.live.vc.bbcmedia.co.uk/bbc_radio_one?s=1619514803&e=1619529203&h=f378f4ca18759ebfa5fd1d674c794cfc"

val mainMediaSource: MediaSource
Expand Down Expand Up @@ -89,20 +120,46 @@ class MainActivity : AppCompatActivity() {

exoPlayer.setMediaSource(mainMediaSource)
exoPlayer.prepare()
App.exoRecordInstance.addExoRecordListener("ዋና", exoRecordListener)

findViewById<Button>(R.id.button).setOnClickListener { exoPlayer.playWhenReady = true }
findViewById<Button>(R.id.button2).setOnClickListener { exoPlayer.stop() }

findViewById<Button>(R.id.button_rec).setOnClickListener {
startRecordingButton.setOnClickListener {
CoroutineScope(Dispatchers.Main).launch {
App.exoRecordInstance.startRecording()
}
}

findViewById<Button>(R.id.button_rec_stop).setOnClickListener {
stopRecordingButton.setOnClickListener {
CoroutineScope(Dispatchers.Main).launch {
Log.e("CONVERSION", App.exoRecordInstance.stopRecording(true).toString())
val wavFilePath = App.exoRecordInstance.stopRecording()
Log.e("WavFile", wavFilePath.toString())

val progressBarTextView = findViewById<TextView>(R.id.converting_progress_bar_text)
val progressBar = findViewById<ProgressBar>(R.id.converting_progress_bar)

progressBarTextView.text = "Converting to OGG"

withContext(Dispatchers.IO) {
ExoRecordOgg.convertFile(
applicationContext = App.instance,
fileName = wavFilePath.filePath,
sampleRate = wavFilePath.sampleBitRate,
channels = wavFilePath.channelCount,
quality = 1f,
) { progressBar.progress = it.roundToInt() }
withContext(Dispatchers.Main) {
progressBarTextView.text = "Conversion Done"
}
}

}
}
}

override fun onStop() {
super.onStop()
App.exoRecordInstance.removeExoRecordListener("ዋና")
}
}
41 changes: 34 additions & 7 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
android:layout_height="wrap_content"
android:text="@string/exorecord_nothing"
android:padding="16dp"
app:layout_constraintVertical_bias="0.2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
Expand Down Expand Up @@ -42,30 +43,56 @@
tools:layout_editor_absoluteX="169dp"
tools:layout_editor_absoluteY="509dp" />

<Button
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/button_rec"
android:layout_marginTop="16dp"
android:layout_width="wrap_content"
android:layout_width="300dp"
android:layout_height="wrap_content"
app:backgroundTint="#a00000"
app:layout_constraintTop_toBottomOf="@+id/button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/button2"
app:layout_constraintEnd_toEndOf="parent"
android:textColor="@color/white"
android:text="@string/start_recording"
tools:layout_editor_absoluteX="203dp"
tools:layout_editor_absoluteY="412dp" />

<Button
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/button_rec_stop"
android:layout_marginTop="16dp"
android:layout_width="wrap_content"
android:layout_width="300dp"
android:layout_height="wrap_content"
app:backgroundTint="#a00000"
app:layout_constraintTop_toBottomOf="@+id/button"
app:layout_constraintStart_toEndOf="@+id/button"
android:textColor="@color/white"
app:layout_constraintTop_toBottomOf="@+id/button_rec"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:text="@string/stop_recording"
tools:layout_editor_absoluteX="169dp"
tools:layout_editor_absoluteY="509dp" />

<TextView
android:id="@+id/converting_progress_bar_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/button_rec_stop"
android:padding="16dp"
android:text="Converting"
android:textSize="18sp"
android:textColor="?colorOnSurface"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<ProgressBar
android:id="@+id/converting_progress_bar"
app:layout_constraintTop_toBottomOf="@+id/converting_progress_bar_text"
android:padding="16dp"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:max="100"
android:indeterminate="false"
android:progress="0"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

</androidx.constraintlayout.widget.ConstraintLayout>

0 comments on commit c70e0a4

Please sign in to comment.