mirror of
https://github.com/SimpleMobileTools/Simple-Clock.git
synced 2025-06-05 22:19:17 +02:00
implement the intent for picking audio file as an alarm sound
This commit is contained in:
@ -45,6 +45,7 @@ dependencies {
|
|||||||
implementation 'com.facebook.stetho:stetho:1.5.0'
|
implementation 'com.facebook.stetho:stetho:1.5.0'
|
||||||
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
|
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||||
implementation 'com.shawnlin:number-picker:2.4.6'
|
implementation 'com.shawnlin:number-picker:2.4.6'
|
||||||
|
implementation 'com.google.code.gson:gson:2.8.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
Properties props = new Properties()
|
Properties props = new Properties()
|
||||||
|
@ -2,10 +2,13 @@ package com.simplemobiletools.clock.activities
|
|||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import com.google.gson.reflect.TypeToken
|
||||||
import com.simplemobiletools.clock.BuildConfig
|
import com.simplemobiletools.clock.BuildConfig
|
||||||
import com.simplemobiletools.clock.R
|
import com.simplemobiletools.clock.R
|
||||||
import com.simplemobiletools.clock.adapters.ViewPagerAdapter
|
import com.simplemobiletools.clock.adapters.ViewPagerAdapter
|
||||||
@ -13,14 +16,14 @@ import com.simplemobiletools.clock.extensions.config
|
|||||||
import com.simplemobiletools.clock.extensions.dbHelper
|
import com.simplemobiletools.clock.extensions.dbHelper
|
||||||
import com.simplemobiletools.clock.extensions.getNextAlarm
|
import com.simplemobiletools.clock.extensions.getNextAlarm
|
||||||
import com.simplemobiletools.clock.extensions.rescheduleEnabledAlarms
|
import com.simplemobiletools.clock.extensions.rescheduleEnabledAlarms
|
||||||
import com.simplemobiletools.clock.helpers.OPEN_TAB
|
import com.simplemobiletools.clock.helpers.*
|
||||||
import com.simplemobiletools.clock.helpers.TABS_COUNT
|
import com.simplemobiletools.clock.models.AlarmSound
|
||||||
import com.simplemobiletools.clock.helpers.TAB_CLOCK
|
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.LICENSE_NUMBER_PICKER
|
import com.simplemobiletools.commons.helpers.LICENSE_NUMBER_PICKER
|
||||||
import com.simplemobiletools.commons.helpers.LICENSE_STETHO
|
import com.simplemobiletools.commons.helpers.LICENSE_STETHO
|
||||||
import com.simplemobiletools.commons.models.FAQItem
|
import com.simplemobiletools.commons.models.FAQItem
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
import kotlinx.android.synthetic.main.activity_main.*
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
class MainActivity : SimpleActivity() {
|
class MainActivity : SimpleActivity() {
|
||||||
private var storedUseEnglish = false
|
private var storedUseEnglish = false
|
||||||
@ -118,6 +121,26 @@ class MainActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
||||||
|
super.onActivityResult(requestCode, resultCode, resultData)
|
||||||
|
if (requestCode == PICK_AUDIO_FILE_INTENT_ID && resultCode == RESULT_OK && resultData != null) {
|
||||||
|
storeNewAlarmSound(resultData.data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun storeNewAlarmSound(uri: Uri) {
|
||||||
|
var filename = getFilenameFromUri(uri)
|
||||||
|
if (filename.isEmpty()) {
|
||||||
|
filename = getString(R.string.alarm)
|
||||||
|
}
|
||||||
|
|
||||||
|
val token = object : TypeToken<LinkedHashSet<AlarmSound>>() {}.type
|
||||||
|
val yourAlarmSounds = Gson().fromJson<LinkedHashSet<AlarmSound>>(config.yourAlarmSounds, token) ?: LinkedHashSet()
|
||||||
|
val newAlarmSoundId = (yourAlarmSounds.maxBy { it.id }?.id ?: YOUR_ALARM_SOUNDS_MIN_ID)
|
||||||
|
yourAlarmSounds.add(AlarmSound(newAlarmSoundId, filename, uri.toString()))
|
||||||
|
config.yourAlarmSounds = Gson().toJson(yourAlarmSounds)
|
||||||
|
}
|
||||||
|
|
||||||
private fun initFragments() {
|
private fun initFragments() {
|
||||||
viewpager.adapter = ViewPagerAdapter(supportFragmentManager)
|
viewpager.adapter = ViewPagerAdapter(supportFragmentManager)
|
||||||
viewpager.onPageChangeListener {
|
viewpager.onPageChangeListener {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.simplemobiletools.clock.dialogs
|
package com.simplemobiletools.clock.dialogs
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.media.MediaPlayer
|
import android.media.MediaPlayer
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.support.v7.app.AlertDialog
|
import android.support.v7.app.AlertDialog
|
||||||
@ -9,6 +10,7 @@ import com.simplemobiletools.clock.R
|
|||||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||||
import com.simplemobiletools.clock.extensions.config
|
import com.simplemobiletools.clock.extensions.config
|
||||||
import com.simplemobiletools.clock.extensions.getAlarmSounds
|
import com.simplemobiletools.clock.extensions.getAlarmSounds
|
||||||
|
import com.simplemobiletools.clock.helpers.PICK_AUDIO_FILE_INTENT_ID
|
||||||
import com.simplemobiletools.clock.models.AlarmSound
|
import com.simplemobiletools.clock.models.AlarmSound
|
||||||
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
@ -23,6 +25,7 @@ class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: Strin
|
|||||||
private var alarmSounds = ArrayList<AlarmSound>()
|
private var alarmSounds = ArrayList<AlarmSound>()
|
||||||
private var mediaPlayer = MediaPlayer()
|
private var mediaPlayer = MediaPlayer()
|
||||||
private val config = activity.config
|
private val config = activity.config
|
||||||
|
private val dialog: AlertDialog
|
||||||
|
|
||||||
init {
|
init {
|
||||||
activity.getAlarmSounds {
|
activity.getAlarmSounds {
|
||||||
@ -36,7 +39,7 @@ class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: Strin
|
|||||||
val newAlarmSound = AlarmSound(ADD_NEW_SOUND_ID, activity.getString(R.string.add_new_sound), "")
|
val newAlarmSound = AlarmSound(ADD_NEW_SOUND_ID, activity.getString(R.string.add_new_sound), "")
|
||||||
addAlarmSound(newAlarmSound, view.dialog_select_alarm_your_radio)
|
addAlarmSound(newAlarmSound, view.dialog_select_alarm_your_radio)
|
||||||
|
|
||||||
AlertDialog.Builder(activity)
|
dialog = AlertDialog.Builder(activity)
|
||||||
.setOnDismissListener { mediaPlayer.stop() }
|
.setOnDismissListener { mediaPlayer.stop() }
|
||||||
.setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() })
|
.setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() })
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
@ -68,7 +71,11 @@ class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: Strin
|
|||||||
|
|
||||||
private fun alarmClicked(alarmSound: AlarmSound) {
|
private fun alarmClicked(alarmSound: AlarmSound) {
|
||||||
if (alarmSound.id == ADD_NEW_SOUND_ID) {
|
if (alarmSound.id == ADD_NEW_SOUND_ID) {
|
||||||
|
Intent(Intent.ACTION_GET_CONTENT).apply {
|
||||||
|
type = "audio/*"
|
||||||
|
activity.startActivityForResult(this, PICK_AUDIO_FILE_INTENT_ID)
|
||||||
|
}
|
||||||
|
dialog.dismiss()
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
mediaPlayer.stop()
|
mediaPlayer.stop()
|
||||||
|
@ -49,4 +49,8 @@ class Config(context: Context) : BaseConfig(context) {
|
|||||||
var useTextShadow: Boolean
|
var useTextShadow: Boolean
|
||||||
get() = prefs.getBoolean(USE_TEXT_SHADOW, true)
|
get() = prefs.getBoolean(USE_TEXT_SHADOW, true)
|
||||||
set(useTextShadow) = prefs.edit().putBoolean(USE_TEXT_SHADOW, useTextShadow).apply()
|
set(useTextShadow) = prefs.edit().putBoolean(USE_TEXT_SHADOW, useTextShadow).apply()
|
||||||
|
|
||||||
|
var yourAlarmSounds: String
|
||||||
|
get() = prefs.getString(YOUR_ALARM_SOUNDS, "")
|
||||||
|
set(yourAlarmSounds) = prefs.edit().putString(YOUR_ALARM_SOUNDS, yourAlarmSounds).apply()
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ const val TIMER_SOUND_TITLE = "timer_sound_title"
|
|||||||
const val TIMER_MAX_REMINDER_SECS = "timer_max_reminder_secs"
|
const val TIMER_MAX_REMINDER_SECS = "timer_max_reminder_secs"
|
||||||
const val ALARM_MAX_REMINDER_SECS = "alarm_max_reminder_secs"
|
const val ALARM_MAX_REMINDER_SECS = "alarm_max_reminder_secs"
|
||||||
const val USE_TEXT_SHADOW = "use_text_shadow"
|
const val USE_TEXT_SHADOW = "use_text_shadow"
|
||||||
|
const val YOUR_ALARM_SOUNDS = "your_alarm_sounds"
|
||||||
|
|
||||||
const val TABS_COUNT = 4
|
const val TABS_COUNT = 4
|
||||||
const val EDITED_TIME_ZONE_SEPARATOR = ":"
|
const val EDITED_TIME_ZONE_SEPARATOR = ":"
|
||||||
@ -23,7 +24,9 @@ const val DAY_MINUTES = 1440
|
|||||||
const val DEFAULT_MAX_ALARM_REMINDER_SECS = 300
|
const val DEFAULT_MAX_ALARM_REMINDER_SECS = 300
|
||||||
const val DEFAULT_MAX_TIMER_REMINDER_SECS = 60
|
const val DEFAULT_MAX_TIMER_REMINDER_SECS = 60
|
||||||
const val HIDE_REMINDER_ACTIVITY = "hide_reminder_activity"
|
const val HIDE_REMINDER_ACTIVITY = "hide_reminder_activity"
|
||||||
|
const val YOUR_ALARM_SOUNDS_MIN_ID = 1000
|
||||||
|
|
||||||
|
const val PICK_AUDIO_FILE_INTENT_ID = 9994
|
||||||
const val REMINDER_ACTIVITY_INTENT_ID = 9995
|
const val REMINDER_ACTIVITY_INTENT_ID = 9995
|
||||||
const val OPEN_ALARMS_TAB_INTENT_ID = 9996
|
const val OPEN_ALARMS_TAB_INTENT_ID = 9996
|
||||||
const val UPDATE_WIDGET_INTENT_ID = 9997
|
const val UPDATE_WIDGET_INTENT_ID = 9997
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingLeft="@dimen/bigger_margin"
|
android:paddingLeft="@dimen/bigger_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:text="@string/system_sounds"/>
|
android:text="@string/system_sounds"/>
|
||||||
|
|
||||||
<RadioGroup
|
<RadioGroup
|
||||||
|
Reference in New Issue
Block a user