اذهب إلى المحتوى
  • 0

كيف أحفظ قيمة الseekbar في الكوتلن

عبدالرحمن العنزي4

السؤال

السلام عليكم انا لدي مشكلة لم أجد لها حلا الى هذه اللحظه. انا لدي تطبيق قرأني يعمل بنسخة pdf وملفات صوتيه داخل BottomSheet وكل شيء يعمل بشكل جيد لكن عندما أغلق الbottomsheet  الصوت يضل يعمل لكن القيمة الseekbar لا تعمل وتصل قيمتة الى النهايه وحتى الtextviews ترجع الى 0:00 كيف أحل هذه المشكلة بحيث عندما اغلف الbottomsheet يضل السيكبار والتيكست يعملان على الصوت؟

هذا الكود

 private var mediaPlayer:MediaPlayer? = null
 private var oTime = 0
private var sTime: Int = 0
private var eTime: Int = 0

  fun quranMp3(){

 quranPlay?.setOnClickListener {
        // الفاتحة

        if (quranPageNum?.equals(0)!!){

            if (mediaPlayer == null){
                mediaPlayer = MediaPlayer.create(context, Uri.parse("https://server7.mp3quran.net/basit/Almusshaf-Al-Mojawwad/001.mp3"))
                Log.d("quranMp3", "ID: ${mediaPlayer!!.audioSessionId}")

                val position = mediaPlayer!!.currentPosition/100
                mp3SeekBar.progress = position
                //totalTime = mediaPlayer!!.duration

                eTime = mediaPlayer!!.duration.toLong().toInt()
                sTime = mediaPlayer!!.currentPosition.toLong().toInt()

                if (oTime == 0) {
                    quranSeekBar!!.setMax(eTime)
                    oTime = 1
                }

                playerDuration?.text = String.format(
                    "%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(eTime.toLong()),
                    TimeUnit.MILLISECONDS.toSeconds(eTime.toLong()) - TimeUnit.MINUTES.toSeconds(
                        TimeUnit.MILLISECONDS.toMinutes(eTime.toLong())))

                playerPosition?.text = String.format(
                    "%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(sTime.toLong()),
                    TimeUnit.MILLISECONDS.toSeconds(sTime.toLong()) - TimeUnit.MINUTES.toSeconds(
                        TimeUnit.MILLISECONDS.toMinutes(sTime.toLong())))





                initializeSeekBar()



            }

            mediaPlayer?.start()
            Log.d("QuranMp3", "Duration: ${mediaPlayer!!.duration/1000} seconds")

        }

   quranPause?.setOnClickListener {

        if (mediaPlayer !== null){
            mediaPlayer?.pause()
            Log.d("QuranMp3", "Paused at: ${mediaPlayer!!.duration/1000} seconds")

        }



 mp3SeekBar.setOnSeekBarChangeListener( object : SeekBar.OnSeekBarChangeListener{

            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {


                if (fromUser){
                    mediaPlayer?.seekTo(progress)

                }
            }
            override fun onStartTrackingTouch(seekBar: SeekBar?) {
                val Toast = Toast.makeText(context,"تتبع..", Toast.LENGTH_LONG)
                Toast.setGravity(Gravity.CENTER_VERTICAL, 50, 50)
                Toast.show()
            }
            override fun onStopTrackingTouch(seekBar: SeekBar) {
                val Toast = Toast.makeText(context,"يرجى الانتظار للحصول على البيانات..", Toast.LENGTH_LONG)
                Toast.setGravity(Gravity.CENTER_VERTICAL, 50 ,50)
                Toast.show()


            }

        })

 private fun initializeSeekBar() {

    val mp3SeekBar = view?.findViewById<SeekBar>(R.id.mp3SeekBar)
    mp3SeekBar?.max = mediaPlayer!!.duration
    val playerPosition = view?.findViewById<TextView>(R.id.player_position)
    val playerDuration =  view?.findViewById<TextView>(R.id.player_duraation)

    val seekbar = this.activity?.getSharedPreferences("QuranPdf", Context.MODE_PRIVATE)


    val handler = Handler()
    handler.postDelayed(object : Runnable {

        override fun run() {


            try {

                sTime = mediaPlayer!!.currentPosition

                playerDuration!!.text = String.format(
                    "%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(eTime.toLong()),
                    TimeUnit.MILLISECONDS.toSeconds(eTime.toLong()) - TimeUnit.MINUTES.toSeconds(
                        TimeUnit.MILLISECONDS.toMinutes(eTime.toLong())))

                playerPosition?.text = String.format(
                    "%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(sTime.toLong()),
                    TimeUnit.MILLISECONDS.toSeconds(sTime.toLong()) - TimeUnit.MINUTES.toSeconds(
                        TimeUnit.MILLISECONDS.toMinutes(sTime.toLong())))


                mp3SeekBar?.progress = sTime //mediaPlayer!!.currentPosition
                handler.postDelayed(this, 1000)

            } catch (e: Exception) {
                mp3SeekBar?.progress = 0

            }
        }

    }, 0)
}

هذه صور مشكلتي كما ترون عندما افتح الbottomsheet  كل شيء يعمل بشكل جيد لكن عندا اجعل الصوت يعمل وأغلق الbottomsheet لأقراء وأفتحة مجددا عندما أنهي القراءة السيكبار يصل الى النهايه والتيكست ترجع الى 0:00

 

شكرا لكم واتمنى ان تحلو مشكلتي

 

320g7.jpg

2OWoe.jpg

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

لا توجد أي إجابات على هذا السؤال بعد

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...