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.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.shawnlin:number-picker:2.4.6'
implementation 'com.google.code.gson:gson:2.8.2'
}
Properties props = new Properties()

View File

@ -2,10 +2,13 @@ package com.simplemobiletools.clock.activities
import android.content.Intent
import android.graphics.drawable.ColorDrawable
import android.net.Uri
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.WindowManager
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.simplemobiletools.clock.BuildConfig
import com.simplemobiletools.clock.R
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.getNextAlarm
import com.simplemobiletools.clock.extensions.rescheduleEnabledAlarms
import com.simplemobiletools.clock.helpers.OPEN_TAB
import com.simplemobiletools.clock.helpers.TABS_COUNT
import com.simplemobiletools.clock.helpers.TAB_CLOCK
import com.simplemobiletools.clock.helpers.*
import com.simplemobiletools.clock.models.AlarmSound
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.LICENSE_NUMBER_PICKER
import com.simplemobiletools.commons.helpers.LICENSE_STETHO
import com.simplemobiletools.commons.models.FAQItem
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*
class MainActivity : SimpleActivity() {
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() {
viewpager.adapter = ViewPagerAdapter(supportFragmentManager)
viewpager.onPageChangeListener {

View File

@ -1,5 +1,6 @@
package com.simplemobiletools.clock.dialogs
import android.content.Intent
import android.media.MediaPlayer
import android.net.Uri
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.extensions.config
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.commons.extensions.getAdjustedPrimaryColor
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 mediaPlayer = MediaPlayer()
private val config = activity.config
private val dialog: AlertDialog
init {
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), "")
addAlarmSound(newAlarmSound, view.dialog_select_alarm_your_radio)
AlertDialog.Builder(activity)
dialog = AlertDialog.Builder(activity)
.setOnDismissListener { mediaPlayer.stop() }
.setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() })
.setNegativeButton(R.string.cancel, null)
@ -68,7 +71,11 @@ class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: Strin
private fun alarmClicked(alarmSound: AlarmSound) {
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 {
try {
mediaPlayer.stop()

View File

@ -49,4 +49,8 @@ class Config(context: Context) : BaseConfig(context) {
var useTextShadow: Boolean
get() = prefs.getBoolean(USE_TEXT_SHADOW, true)
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 ALARM_MAX_REMINDER_SECS = "alarm_max_reminder_secs"
const val USE_TEXT_SHADOW = "use_text_shadow"
const val YOUR_ALARM_SOUNDS = "your_alarm_sounds"
const val TABS_COUNT = 4
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_TIMER_REMINDER_SECS = 60
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 OPEN_ALARMS_TAB_INTENT_ID = 9996
const val UPDATE_WIDGET_INTENT_ID = 9997

View File

@ -32,7 +32,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/bigger_margin"
android:paddingTop="@dimen/bigger_margin"
android:paddingTop="@dimen/medium_margin"
android:text="@string/system_sounds"/>
<RadioGroup