mirror of
https://github.com/SimpleMobileTools/Simple-Voice-Recorder.git
synced 2025-06-05 21:59:31 +02:00
play the selected recording on click
This commit is contained in:
@ -4,6 +4,7 @@
|
|||||||
package="com.simplemobiletools.voicerecorder"
|
package="com.simplemobiletools.voicerecorder"
|
||||||
android:installLocation="auto">
|
android:installLocation="auto">
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||||
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
<uses-permission
|
<uses-permission
|
||||||
|
@ -1,33 +1,39 @@
|
|||||||
package com.simplemobiletools.voicerecorder.fragments
|
package com.simplemobiletools.voicerecorder.fragments
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.content.ContentUris
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.database.Cursor
|
import android.database.Cursor
|
||||||
|
import android.media.AudioManager
|
||||||
|
import android.media.MediaPlayer
|
||||||
|
import android.os.PowerManager
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import com.simplemobiletools.commons.extensions.getIntValue
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.extensions.getLongValue
|
|
||||||
import com.simplemobiletools.commons.extensions.getStringValue
|
|
||||||
import com.simplemobiletools.commons.extensions.showErrorToast
|
|
||||||
import com.simplemobiletools.voicerecorder.activities.SimpleActivity
|
import com.simplemobiletools.voicerecorder.activities.SimpleActivity
|
||||||
import com.simplemobiletools.voicerecorder.adapters.RecordingsAdapter
|
import com.simplemobiletools.voicerecorder.adapters.RecordingsAdapter
|
||||||
import com.simplemobiletools.voicerecorder.models.Recording
|
import com.simplemobiletools.voicerecorder.models.Recording
|
||||||
import kotlinx.android.synthetic.main.fragment_player.view.*
|
import kotlinx.android.synthetic.main.fragment_player.view.*
|
||||||
|
|
||||||
class PlayerFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) {
|
class PlayerFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) {
|
||||||
|
private var player: MediaPlayer? = null
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
setupColors()
|
setupColors()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {}
|
override fun onDestroy() {
|
||||||
|
player?.stop()
|
||||||
|
player?.release()
|
||||||
|
player = null
|
||||||
|
}
|
||||||
|
|
||||||
override fun onAttachedToWindow() {
|
override fun onAttachedToWindow() {
|
||||||
super.onAttachedToWindow()
|
super.onAttachedToWindow()
|
||||||
|
|
||||||
val recordings = getRecordings()
|
val recordings = getRecordings()
|
||||||
RecordingsAdapter(context as SimpleActivity, recordings, recordings_list, recordings_fastscroller) {
|
RecordingsAdapter(context as SimpleActivity, recordings, recordings_list, recordings_fastscroller) {
|
||||||
|
playRecording(it as Recording)
|
||||||
}.apply {
|
}.apply {
|
||||||
recordings_list.adapter = this
|
recordings_list.adapter = this
|
||||||
}
|
}
|
||||||
@ -37,6 +43,8 @@ class PlayerFragment(context: Context, attributeSet: AttributeSet) : MyViewPager
|
|||||||
val item = (recordings_list.adapter as RecordingsAdapter).recordings.getOrNull(it)
|
val item = (recordings_list.adapter as RecordingsAdapter).recordings.getOrNull(it)
|
||||||
recordings_fastscroller.updateBubbleText(item?.title ?: "")
|
recordings_fastscroller.updateBubbleText(item?.title ?: "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initMediaPlayer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("InlinedApi")
|
@SuppressLint("InlinedApi")
|
||||||
@ -80,6 +88,35 @@ class PlayerFragment(context: Context, attributeSet: AttributeSet) : MyViewPager
|
|||||||
return recordings
|
return recordings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun initMediaPlayer() {
|
||||||
|
player = MediaPlayer().apply {
|
||||||
|
setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK)
|
||||||
|
setAudioStreamType(AudioManager.STREAM_MUSIC)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun playRecording(recording: Recording) {
|
||||||
|
val recordingUri = ContentUris.withAppendedId(
|
||||||
|
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
|
||||||
|
recording.id.toLong()
|
||||||
|
)
|
||||||
|
|
||||||
|
updateCurrentProgress(0)
|
||||||
|
player_title.text = recording.title
|
||||||
|
player_progress_max.text = recording.duration.getFormattedDuration()
|
||||||
|
|
||||||
|
player!!.apply {
|
||||||
|
reset()
|
||||||
|
setDataSource(context, recordingUri)
|
||||||
|
prepare()
|
||||||
|
start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateCurrentProgress(seconds: Int) {
|
||||||
|
player_progress_current.text = seconds.getFormattedDuration()
|
||||||
|
}
|
||||||
|
|
||||||
private fun setupColors() {
|
private fun setupColors() {
|
||||||
recordings_fastscroller.updatePrimaryColor()
|
recordings_fastscroller.updatePrimaryColor()
|
||||||
recordings_fastscroller.updateBubbleColors()
|
recordings_fastscroller.updateBubbleColors()
|
||||||
|
Reference in New Issue
Block a user