implement the intent for picking audio file as an alarm sound

This commit is contained in:
tibbi
2018-03-29 15:52:25 +02:00
parent 60e38973f3
commit 031f2d0138
6 changed files with 44 additions and 6 deletions

View File

@ -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()

View File

@ -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 {

View File

@ -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()

View File

@ -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()
} }

View File

@ -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

View File

@ -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