LoginSignup

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【Android】起動時に流れた音楽を、アプリ終了まで流し続けたい

解決したいこと

AndroidStudioでAndroidアプリを開発しています。
起動時に流れた音楽を、アプリ終了まで流し続けたいのですがプログラムの都合上止まってしまいます。
解決方法を教えてください。

使用環境
Android Studio Chipmunk | 2021.2.1 Patch 1
Kotlin 1.7.0
macOS monterey 12.4

発生している問題・エラー

実現したいことは以下の2つです。
・起動時に流れ始めた音楽を他のActivityに移動したとしても流れ続けてほしい
・Pouse画面やスマホのホーム画面に移動した時に音楽は止まってほしい

以下に記述するソースコードの中でも各ライフサイクルで再生・停止・終了を
いじっているのが原因だと考えています。
これら二つの条件を実現するための方法を教えていただきたいです。

該当するソースコード

class MainActivity : AppCompatActivity() {

    private lateinit var mp:MediaPlayer

//    Activityの生成
    @RequiresApi(Build.VERSION_CODES.O)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

//    変数宣言
        val btnNewPoint : ImageButton = findViewById(R.id.btnNewPoint)
        val btnCity : ImageButton = findViewById(R.id.btnCity)
        val btnDetail : ImageButton = findViewById(R.id.btnDetail)
        val btnhelp : Button = findViewById(R.id.btnhelp)

    //    曲を流す
        mp = MediaPlayer.create(this,R.raw.sample)
        mp.isLooping = true
        mp.start()

//    「新規地点登録」を押した時
        btnNewPoint.setOnClickListener {

//          "NewPoint.kt"に画面遷移
            intent = Intent(this, NewPoint::class.java)
            startActivity(intent)
            overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
        }

//    「登録地点」を押した時
        btnCity.setOnClickListener {

//          "RegisterCity.kt"に画面遷移
            intent = Intent(this, RegisterCity::class.java)
            startActivity(intent)
            overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
        }

//    「詳細」を押した時
        btnDetail.setOnClickListener {

//          "Detail.kt"に画面遷移
            intent = Intent(this, Detail::class.java)
            startActivity(intent)
            overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
        }

        btnhelp.setOnClickListener {
//            btnhelp.visibility = View.INVISIBLE

            supportFragmentManager.beginTransaction()
                .replace(R.id.fl,HelpFragment.newInstance())
                .commit()
        }

//    アプリを落としても表示画面外で動き続けるための処理(フォアグラウンド処理)
//    フォアグラウンド処理(アプリ)の実行命令("GetttingWeatherInformationService.kt"に遷移)
        val intentService = Intent(this,GetttingWeatherInformationService::class.java)
        startForegroundService(intentService)

    }

    override fun onResume() {
        super.onResume()
        mp.start()
    }

    override fun onPause() {
        super.onPause()
        mp.pause()
    }

    override fun onDestroy() {
        super.onDestroy()
        mp.stop()
        mp.release()
    }

    override fun finish() {
        super.finish()
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
    }

}

自分で試したこと

以下のサイトを参考に音楽の再生などのコードを書きました

0

Your answer might help someone💌