mirror of
https://github.com/SimpleMobileTools/Simple-Clock.git
synced 2025-02-01 11:06:51 +01:00
allow changing the alarm sound
This commit is contained in:
parent
2da39c735f
commit
2c0ad467a1
@ -27,7 +27,11 @@ class EditAlarmDialog(val activity: SimpleActivity, val alarm: Alarm, val callba
|
||||
colorLeftDrawable(edit_alarm_sound)
|
||||
edit_alarm_sound.text = alarm.soundTitle
|
||||
edit_alarm_sound.setOnClickListener {
|
||||
|
||||
SelectAlarmSoundDialog(activity, alarm.soundUri) {
|
||||
alarm.soundTitle = it.title
|
||||
alarm.soundUri = it.uri
|
||||
edit_alarm_sound.text = it.title
|
||||
}
|
||||
}
|
||||
|
||||
colorLeftDrawable(edit_alarm_vibrate)
|
||||
|
@ -0,0 +1,58 @@
|
||||
package com.simplemobiletools.clock.dialogs
|
||||
|
||||
import android.media.AudioManager
|
||||
import android.media.MediaPlayer
|
||||
import android.net.Uri
|
||||
import android.support.v7.app.AlertDialog
|
||||
import android.view.ViewGroup
|
||||
import android.widget.RadioButton
|
||||
import android.widget.RadioGroup
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||
import com.simplemobiletools.clock.extensions.getAlarms
|
||||
import com.simplemobiletools.clock.models.AlarmSound
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import kotlinx.android.synthetic.main.dialog_select_alarm_sound.view.*
|
||||
|
||||
class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: String, val callback: (alarmSound: AlarmSound) -> Unit) {
|
||||
private val view = activity.layoutInflater.inflate(R.layout.dialog_select_alarm_sound, null)
|
||||
private val alarms = activity.getAlarms()
|
||||
private var mediaPlayer = MediaPlayer()
|
||||
|
||||
init {
|
||||
view.dialog_select_alarm_radio.apply {
|
||||
alarms.forEachIndexed { index, alarmSound ->
|
||||
val radioButton = (activity.layoutInflater.inflate(R.layout.item_select_alarm, null) as RadioButton).apply {
|
||||
text = alarmSound.title
|
||||
isChecked = alarmSound.uri == currentUri
|
||||
id = index
|
||||
setOnClickListener {
|
||||
mediaPlayer.stop()
|
||||
mediaPlayer = MediaPlayer().apply {
|
||||
setAudioStreamType(AudioManager.STREAM_ALARM)
|
||||
setDataSource(context, Uri.parse(alarmSound.uri))
|
||||
prepare()
|
||||
start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
addView(radioButton, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
|
||||
}
|
||||
}
|
||||
|
||||
AlertDialog.Builder(activity)
|
||||
.setOnDismissListener { mediaPlayer.stop() }
|
||||
.setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() })
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.create().apply {
|
||||
activity.setupDialogStuff(view, this)
|
||||
window.volumeControlStream = AudioManager.STREAM_ALARM
|
||||
}
|
||||
}
|
||||
|
||||
private fun dialogConfirmed() {
|
||||
val checkedId = view.dialog_select_alarm_radio.checkedRadioButtonId
|
||||
callback(alarms[checkedId])
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import android.net.Uri
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.helpers.*
|
||||
import com.simplemobiletools.clock.models.Alarm
|
||||
import com.simplemobiletools.clock.models.AlarmSound
|
||||
import com.simplemobiletools.clock.models.MyTimeZone
|
||||
import java.util.*
|
||||
|
||||
@ -49,16 +50,20 @@ fun Context.getAllTimeZonesModified(): ArrayList<MyTimeZone> {
|
||||
|
||||
fun Context.getModifiedTimeZoneTitle(id: Int) = getAllTimeZonesModified().firstOrNull { it.id == id }?.title ?: getDefaultTimeZoneTitle(id)
|
||||
|
||||
fun Context.getAlarms(): Map<String, String> {
|
||||
fun Context.getAlarms(): ArrayList<AlarmSound> {
|
||||
val manager = RingtoneManager(this)
|
||||
manager.setType(RingtoneManager.TYPE_ALARM)
|
||||
val cursor = manager.cursor
|
||||
|
||||
val alarms = HashMap<String, String>()
|
||||
val alarms = ArrayList<AlarmSound>()
|
||||
val defaultAlarm = AlarmSound(getDefaultAlarmTitle(this), getDefaultAlarmUri().toString())
|
||||
alarms.add(defaultAlarm)
|
||||
|
||||
while (cursor.moveToNext()) {
|
||||
val title = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX)
|
||||
val uri = Uri.parse("${cursor.getString(RingtoneManager.URI_COLUMN_INDEX)}/${cursor.getString(RingtoneManager.ID_COLUMN_INDEX)}").toString()
|
||||
alarms[title] = uri
|
||||
val alarmSound = AlarmSound(title, uri)
|
||||
alarms.add(alarmSound)
|
||||
}
|
||||
|
||||
return alarms
|
||||
|
@ -0,0 +1,3 @@
|
||||
package com.simplemobiletools.clock.models
|
||||
|
||||
data class AlarmSound(var title: String, var uri: String)
|
16
app/src/main/res/layout/dialog_select_alarm_sound.xml
Normal file
16
app/src/main/res/layout/dialog_select_alarm_sound.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/dialog_select_alarm_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/dialog_select_alarm_radio"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/normal_margin"/>
|
||||
|
||||
</ScrollView>
|
8
app/src/main/res/layout/item_select_alarm.xml
Normal file
8
app/src/main/res/layout/item_select_alarm.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.simplemobiletools.commons.views.MyCompatRadioButton
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/item_select_alarm"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/activity_margin"/>
|
Loading…
x
Reference in New Issue
Block a user