Android, как работает цикл? (Kotlin) - PullRequest
0 голосов
/ 11 апреля 2020

Я хочу сделать приложение (в Kotlin) только для практики, но похоже, что я не использую isLooping правильно, потому что, когда я запускаю приложение, я могу воспроизводить только свое аудио, но не останавливать его при нажатии снова. Поэтому я думаю, что l oop - это проблема.

Я делаю:

sound = MediaPlayer.create(this, R.raw.cena)
sound.isLooping = true

Вот мой полный код:

package com.example.firstapp

import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import android.media.MediaPlayer
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    lateinit var sound: MediaPlayer
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val play = findViewById<Button>(R.id.play)
        sound = MediaPlayer.create(this, R.raw.cena)
        sound.isLooping = true
        playBtnClick()
    }
    private fun playBtnClick() {

        if (!sound.isPlaying) {
            play.setOnClickListener {
                sound.start()
                play.setBackgroundResource(R.drawable.stop)
            }
        }
        else {
                sound.pause()
                play.setBackgroundResource(R.drawable.play)

        }
    }
}

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Проблема в том, что playBtnClick вызывается только один раз, возможно, вам следует вызвать метод playBtnClick play.setOnCLickListener ()

  lateinit var sound: MediaPlayer
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val play = findViewById<Button>(R.id.play)
        sound = MediaPlayer.create(this, R.raw.cena)
        sound.isLooping = true
        play.setOnClickListener {
           playBtnClick();
        }
    }
    private fun playBtnClick() {

        if (!sound.isPlaying) {
                sound.start()
                play.setBackgroundResource(R.drawable.stop)
        }
        else {
                sound.pause()
                play.setBackgroundResource(R.drawable.play)
            }
        }
0 голосов
/ 11 апреля 2020

Вы должны проверить isPlaying внутри onClickListener, потому что ваш метод onCreate () вызывается только один раз, пока создается действие и начинается воспроизведение. После этого события не происходят.

Изменен ваш код. Вместо этого используйте код ниже,

package com.example.firstapp
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import android.media.MediaPlayer
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    lateinit var sound: MediaPlayer
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val play = findViewById<Button>(R.id.play)
        sound = MediaPlayer.create(this, R.raw.cena)
        sound.isLooping = true

        play.setOnClickListener {

            if(sound.isPlaying()){
                sound.pause();
                play.setBackgroundResource(R.drawable.stop)
            } else {
                sound.start();
                play.setBackgroundResource(R.drawable.play)
            }
        }

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...